Began adding FallbackMemberBuilder test case
This is the first test case to use the new basic xUnit-style system. This system is likely to evolve over time. Right now it's purely for setUp, organizational and output purposes.closure/master
parent
c10fc5818a
commit
024f3b778c
|
@ -0,0 +1,77 @@
|
||||||
|
/**
|
||||||
|
* Handles building members (properties, methods) in a pre-ES5 environment
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package core
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Supertype
|
||||||
|
*/
|
||||||
|
var MemberBuilder = require( __dirname + '/MemberBuilder' );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Responsible for building class members
|
||||||
|
*/
|
||||||
|
module.exports = exports = function FallbackMemberBuilder(
|
||||||
|
wrap_method, wrap_override
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// permit omitting 'new' keyword
|
||||||
|
if ( !( this instanceof module.exports ) )
|
||||||
|
{
|
||||||
|
return new module.exports( wrap_method, wrap_override );
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoke parent constructor
|
||||||
|
module.exports.prototype.constructor.call( this,
|
||||||
|
wrap_method, wrap_override
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// inherit from MemberBuilder
|
||||||
|
module.exports.prototype = new MemberBuilder();
|
||||||
|
module.exports.constructor = module.exports;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getters are unsupported in a pre-ES5 environment
|
||||||
|
*
|
||||||
|
* Simply throw an exception, as it clearly represents that the developer did
|
||||||
|
* not account for the possibility that their software may have been executed in
|
||||||
|
* a pre-ES5 environment.
|
||||||
|
*/
|
||||||
|
exports.prototype.buildGetter = function()
|
||||||
|
{
|
||||||
|
throw Error( 'Getters are unsupported in this environment' );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setters are unsupported in a pre-ES5 environment
|
||||||
|
*
|
||||||
|
* Simply throw an exception, as it clearly represents that the developer did
|
||||||
|
* not account for the possibility that their software may have been executed in
|
||||||
|
* a pre-ES5 environment.
|
||||||
|
*/
|
||||||
|
exports.prototype.buildSetter = function()
|
||||||
|
{
|
||||||
|
throw Error( 'Setters are unsupported in this environment' );
|
||||||
|
};
|
|
@ -0,0 +1,84 @@
|
||||||
|
/**
|
||||||
|
* Tests fallback method builder (for pre-ES5 environment)
|
||||||
|
*
|
||||||
|
* Note that this test case can also be run in an ES5 environment.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 Mike Gerwitz
|
||||||
|
*
|
||||||
|
* This file is part of ease.js.
|
||||||
|
*
|
||||||
|
* ease.js is free software: you can redistribute it and/or modify it under the
|
||||||
|
* terms of the GNU Lesser General Public License as published by the Free
|
||||||
|
* Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
|
||||||
|
* for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* @author Mike Gerwitz
|
||||||
|
* @package test
|
||||||
|
*/
|
||||||
|
|
||||||
|
require( './common' ).testCase(
|
||||||
|
{
|
||||||
|
setUp: function()
|
||||||
|
{
|
||||||
|
// stub factories used for testing
|
||||||
|
var stubFactory = this.require( 'MethodWrapperFactory' )(
|
||||||
|
function( func ) { return func; }
|
||||||
|
);
|
||||||
|
|
||||||
|
this.sut = this.require( 'FallbackMemberBuilder' )(
|
||||||
|
stubFactory, stubFactory
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
'Inherits from MemberBuilder': function()
|
||||||
|
{
|
||||||
|
this.assertOk( this.sut instanceof this.require( 'MemberBuilder' ),
|
||||||
|
'FallbackMemberBuilder should inherit from MemberBuilder'
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Getters and setters are unsupported in pre-ES5 environments
|
||||||
|
*/
|
||||||
|
'buildGetter() and buildSetter() methods throw exceptions': function()
|
||||||
|
{
|
||||||
|
// getter test
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.sut.buildGetter();
|
||||||
|
this.fail( 'Exception should have been called (getter)' );
|
||||||
|
}
|
||||||
|
catch ( e )
|
||||||
|
{
|
||||||
|
this.assertOk(
|
||||||
|
e.message.match( /unsupported/ ),
|
||||||
|
'Incorrect exception thrown (getter)'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// setter test
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.sut.buildSetter();
|
||||||
|
this.fail( 'Exception should have been called (getter)' );
|
||||||
|
}
|
||||||
|
catch ( e )
|
||||||
|
{
|
||||||
|
this.assertOk(
|
||||||
|
e.message.match( /unsupported/ ),
|
||||||
|
'Incorrect exception thrown (setter)'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
|
@ -28,7 +28,7 @@ var common = require( './common' ),
|
||||||
util = common.require( 'util' ),
|
util = common.require( 'util' ),
|
||||||
|
|
||||||
// stub factories used for testing
|
// stub factories used for testing
|
||||||
stubFactory= common.require( '/MethodWrapperFactory' )(
|
stubFactory = common.require( '/MethodWrapperFactory' )(
|
||||||
function( func ) { return func; }
|
function( func ) { return func; }
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue