Altered property keyword parser tests to be more easily recognizable
parent
afc5d4668d
commit
1f661bebcd
|
@ -26,90 +26,99 @@ var common = require( './common' ),
|
||||||
assert = require( 'assert' ),
|
assert = require( 'assert' ),
|
||||||
util = common.require( 'util' );
|
util = common.require( 'util' );
|
||||||
|
|
||||||
var data = {
|
|
||||||
'abstract foo': [],
|
|
||||||
}
|
|
||||||
|
|
||||||
var abstract_methods = [],
|
( function testAbstractKeywordDesignatesMethodAsAbstract()
|
||||||
parse_data = {};
|
|
||||||
|
|
||||||
|
|
||||||
util.propParse( data, {
|
|
||||||
method: function ( name, func, is_abstract )
|
|
||||||
{
|
|
||||||
if ( is_abstract )
|
|
||||||
{
|
|
||||||
abstract_methods.push( name );
|
|
||||||
parse_data[ name ] = func;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
} );
|
|
||||||
|
|
||||||
assert.ok(
|
|
||||||
( ( abstract_methods.length === 1 )
|
|
||||||
&& ( abstract_methods[ 0 ] === 'foo' )
|
|
||||||
),
|
|
||||||
"Methods with 'abstract' keyword recognized as abstract"
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// custom parser
|
|
||||||
var data2 = {
|
|
||||||
foo: [],
|
|
||||||
},
|
|
||||||
map = {
|
|
||||||
foo: { 'abstract': true },
|
|
||||||
},
|
|
||||||
|
|
||||||
suffix = 'poo',
|
|
||||||
|
|
||||||
abstract_methods_2 = [];
|
|
||||||
|
|
||||||
util.propParse( data2, {
|
|
||||||
keywordParser: function ( prop )
|
|
||||||
{
|
|
||||||
return {
|
|
||||||
name: ( prop + suffix ),
|
|
||||||
keywords: map[ prop ],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
method: function ( name, func, is_abstract )
|
|
||||||
{
|
|
||||||
if ( is_abstract )
|
|
||||||
{
|
|
||||||
abstract_methods_2.push( name );
|
|
||||||
}
|
|
||||||
},
|
|
||||||
} );
|
|
||||||
|
|
||||||
assert.ok(
|
|
||||||
( abstract_methods_2[ 0 ] === ( 'foo' + suffix ) ),
|
|
||||||
"Can provide custom property keyword parser"
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// integrity test
|
|
||||||
assert.doesNotThrow( function()
|
|
||||||
{
|
{
|
||||||
var junk = { foo: 'bar' };
|
var data = {
|
||||||
|
'abstract foo': [],
|
||||||
|
},
|
||||||
|
|
||||||
util.propParse( junk, {
|
abstract_methods = [],
|
||||||
keywordParser: function ( prop )
|
parse_data = {}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
util.propParse( data, {
|
||||||
|
method: function ( name, func, is_abstract )
|
||||||
{
|
{
|
||||||
// return nothing
|
if ( is_abstract )
|
||||||
}
|
{
|
||||||
|
abstract_methods.push( name );
|
||||||
|
parse_data[ name ] = func;
|
||||||
|
}
|
||||||
|
},
|
||||||
} );
|
} );
|
||||||
|
|
||||||
util.propParse( junk, {
|
assert.ok(
|
||||||
|
( ( abstract_methods.length === 1 )
|
||||||
|
&& ( abstract_methods[ 0 ] === 'foo' )
|
||||||
|
),
|
||||||
|
"Methods with 'abstract' keyword recognized as abstract"
|
||||||
|
);
|
||||||
|
} )();
|
||||||
|
|
||||||
|
|
||||||
|
( function testCustomPropertyKeywordParsersAreSupported()
|
||||||
|
{
|
||||||
|
var data2 = {
|
||||||
|
foo: [],
|
||||||
|
},
|
||||||
|
|
||||||
|
map = {
|
||||||
|
foo: { 'abstract': true },
|
||||||
|
},
|
||||||
|
|
||||||
|
suffix = 'poo',
|
||||||
|
|
||||||
|
abstract_methods_2 = []
|
||||||
|
;
|
||||||
|
|
||||||
|
util.propParse( data2, {
|
||||||
keywordParser: function ( prop )
|
keywordParser: function ( prop )
|
||||||
{
|
{
|
||||||
// return bogus name and keywords
|
return {
|
||||||
return { name: [], keywords: 'slefwef' };
|
name: ( prop + suffix ),
|
||||||
}
|
keywords: map[ prop ],
|
||||||
} );
|
};
|
||||||
}, Error, "Custom keyword parser tolerates bogus response" );
|
},
|
||||||
|
|
||||||
|
|
||||||
|
method: function ( name, func, is_abstract )
|
||||||
|
{
|
||||||
|
if ( is_abstract )
|
||||||
|
{
|
||||||
|
abstract_methods_2.push( name );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
} );
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
( abstract_methods_2[ 0 ] === ( 'foo' + suffix ) ),
|
||||||
|
"Can provide custom property keyword parser"
|
||||||
|
);
|
||||||
|
} )();
|
||||||
|
|
||||||
|
|
||||||
|
( function testKeywordParserToleratesBogusResponses()
|
||||||
|
{
|
||||||
|
assert.doesNotThrow( function()
|
||||||
|
{
|
||||||
|
var junk = { foo: 'bar' };
|
||||||
|
|
||||||
|
util.propParse( junk, {
|
||||||
|
keywordParser: function ( prop )
|
||||||
|
{
|
||||||
|
// return nothing
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
|
||||||
|
util.propParse( junk, {
|
||||||
|
keywordParser: function ( prop )
|
||||||
|
{
|
||||||
|
// return bogus name and keywords
|
||||||
|
return { name: [], keywords: 'slefwef' };
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}, Error, "Custom keyword parser tolerates bogus response" );
|
||||||
|
} )();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue