1
0
Fork 0

Exposing keyword bit values and bitmasks

Available through property parser interface
newmaster
Mike Gerwitz 2014-04-20 02:40:36 -04:00
parent 004fbd24ad
commit 42b52bb692
2 changed files with 54 additions and 0 deletions

View File

@ -50,6 +50,11 @@ var _kmasks = {
}; };
// expose magic values
exports.kvals = _keywords;
exports.kmasks = _kmasks;
/** /**
* Parses property keywords * Parses property keywords
* *

View File

@ -203,4 +203,53 @@ require( 'common' ).testCase(
{} {}
); );
}, },
/**
* As the keyword bit values are magic values, they must be exposed if
* the bitfield is to be used. The bitmasks are useful for quick and
* convenient checks in other parts of the framework.
*/
'Exposes keyword bit values and masks': function()
{
this.assertOk( this.Sut.kvals );
this.assertOk( this.Sut.kmasks );
},
/**
* Access modifier checks are common; ensure that the bitmask can
* properly check them all and does not check for any other keywords.
*/
'Access modifier bitmask catches all access modifiers': function()
{
var kvals = this.Sut.kvals;
// this can be easily checked by ensuring that the inclusive logical
// or of all the access modifier bits are no different than the mask
this.assertEqual(
this.Sut.kmasks.amods
| kvals[ 'public' ]
| kvals[ 'protected' ]
| kvals[ 'private' ],
this.Sut.kmasks.amods
);
},
/**
* Likewise, a virtual bitmask is also useful since it can be denoted by
* multiple keywords (abstract is implicitly virtual).
*/
'Virtual bitmask catches abstract and virtual keywords': function()
{
var kvals = this.Sut.kvals;
this.assertEqual(
this.Sut.kmasks[ 'virtual' ]
| kvals[ 'abstract' ]
| kvals[ 'virtual' ],
this.Sut.kmasks[ 'virtual' ]
);
},
} ); } );