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' ),
|
||||
|
||||
// stub factories used for testing
|
||||
stubFactory= common.require( '/MethodWrapperFactory' )(
|
||||
stubFactory = common.require( '/MethodWrapperFactory' )(
|
||||
function( func ) { return func; }
|
||||
),
|
||||
|
||||
|
|
Loading…
Reference in New Issue