2010-12-27 23:04:55 -05:00
|
|
|
/**
|
|
|
|
* Tests property keyword parser
|
|
|
|
*
|
|
|
|
* 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
|
|
|
|
*/
|
|
|
|
|
|
|
|
var common = require( './common' ),
|
|
|
|
assert = require( 'assert' ),
|
2011-03-29 23:28:37 -04:00
|
|
|
parse = common.require( 'prop_parser' ).parseKeywords,
|
2010-12-27 23:04:55 -05:00
|
|
|
|
2011-06-08 01:21:07 -04:00
|
|
|
data = parse( 'virtual static abstract foo' ),
|
2011-03-29 23:28:37 -04:00
|
|
|
keywords = data.keywords
|
|
|
|
;
|
2010-12-27 23:04:55 -05:00
|
|
|
|
|
|
|
|
2011-03-29 23:28:37 -04:00
|
|
|
( function testProperlyRetrievesName()
|
|
|
|
{
|
|
|
|
assert.equal(
|
|
|
|
data.name,
|
|
|
|
'foo',
|
|
|
|
"Property keyword parser properly retrieves name"
|
|
|
|
);
|
|
|
|
} )();
|
2010-12-27 23:04:55 -05:00
|
|
|
|
2011-03-29 23:28:37 -04:00
|
|
|
|
|
|
|
( function testProperlyRetrievesAllKeywords()
|
|
|
|
{
|
|
|
|
assert.ok(
|
2011-06-08 01:21:07 -04:00
|
|
|
( ( keywords['virtual'] === true )
|
2011-03-29 23:28:37 -04:00
|
|
|
&& ( keywords['static'] === true )
|
|
|
|
&& ( keywords['abstract'] === true )
|
|
|
|
),
|
|
|
|
"Property keyword parser properly retrieves all keywords"
|
|
|
|
);
|
|
|
|
} )();
|
2010-12-27 23:04:55 -05:00
|
|
|
|
2011-05-22 22:11:57 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* In an effort to prevent unnecessary bugs, notify the user when they use a
|
|
|
|
* keyword that is not recognized.
|
|
|
|
*/
|
|
|
|
( function testOnlyPermitsKnownKeywords()
|
|
|
|
{
|
|
|
|
assert.doesNotThrow( function()
|
|
|
|
{
|
|
|
|
// Odd seeing these all together, isn't it? Note that this is not at all
|
|
|
|
// valid, but the prop parser doesn't care what appears together.
|
2011-06-08 01:21:07 -04:00
|
|
|
parse( 'public protected private static virtual abstract const var' );
|
2011-05-22 22:11:57 -04:00
|
|
|
}, Error, "Known keywords are permitted by the parser" );
|
|
|
|
|
|
|
|
var oddword = 'foobunny',
|
|
|
|
oddname = 'moobunny';
|
|
|
|
|
|
|
|
try
|
|
|
|
{
|
|
|
|
// remember, the last part of the string is the var name and is not
|
|
|
|
// considered to be a keyword
|
|
|
|
parse( oddword + ' ' + oddname );
|
|
|
|
}
|
|
|
|
catch ( e )
|
|
|
|
{
|
|
|
|
assert.ok( e.message.search( oddword ) !== -1,
|
|
|
|
"Error message contains unrecognized keyword"
|
|
|
|
);
|
|
|
|
|
|
|
|
assert.ok( e.message.search( oddname ) !== -1,
|
|
|
|
"Error message contains name"
|
|
|
|
);
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
assert.fail( "Should not permit unknown keywords" );
|
|
|
|
} )();
|
|
|
|
|