1
0
Fork 0

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
Mike Gerwitz 2011-10-14 22:05:22 -04:00
parent c10fc5818a
commit 024f3b778c
3 changed files with 162 additions and 1 deletions

View File

@ -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' );
};

View File

@ -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)'
);
}
},
});

View File

@ -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; }
), ),