1
0
Fork 0

Declaring named class will throw error for extreaneous arguments

closure/master
Mike Gerwitz 2011-03-04 16:36:15 -05:00
parent 7bb87e370f
commit b158e542d5
2 changed files with 32 additions and 1 deletions

View File

@ -67,7 +67,7 @@ module.exports = function()
if ( arguments.length > 1 )
{
throw Error(
"Expecting one argument for Class definition; " +
"Expecting one argument for anonymous Class definition; " +
arguments.length + " given."
);
}
@ -79,6 +79,16 @@ module.exports = function()
name = arguments[ 0 ];
def = arguments[ 1 ];
// if too many arguments were provided, it's likely that they're
// expecting some result that they're not going to get
if ( arguments.length > 2 )
{
throw Error(
"Expecting two arguments for named Class definition; " +
arguments.length + " given."
);
}
// add the name to the definition
def.__name = name;

View File

@ -49,6 +49,27 @@ var common = require( './common' ),
{
Class( 'Foo', 'Bar' );
}, TypeError, "Second argument to named class must be the definition" );
// we should be permitted only two arguments
var args = [ 'Foo', {}, 'extra' ];
try
{
Class.apply( null, args );
// we should not get to this line (an exception should be thrown due to
// too many arguments)
assert.fail(
"Should accept only two arguments when creating named class"
);
}
catch ( e )
{
assert.notEqual(
e.toString().match( args.length + ' given' ),
null,
"Named class error should provide number of given arguments"
);
}
} )();