diff --git a/test/MemberBuilder/VisibilityTest.js b/test/MemberBuilder/VisibilityTest.js index 5c85675..b9e6746 100644 --- a/test/MemberBuilder/VisibilityTest.js +++ b/test/MemberBuilder/VisibilityTest.js @@ -174,6 +174,57 @@ require( 'common' ).testCase( }, + /** + * The member object stores the members associated with each of the three + * levels of visibility that are denoted by access modifiers: public, + * protected and private. The initMembers() method is simply an abstraction. + */ + 'Can create empty member object': function() + { + var members = this.sut.initMembers(), + test = [ 'public', 'protected', 'private' ]; + + // ensure each level of visibility exists in the new member object + // (aren't these for statements terribly repetitive? 0 <= i < len would + // be nice to be able to do.) + for ( var i = 0, len = test.length; i < len; i++ ) + { + this.assertOk( ( typeof members[ test[ i ] ] !== 'undefined' ), + 'Clean member object is missing visibility level: ' + test[ i ] + ); + } + }, + + + /** + * The initialization method gives us the option to use existing objects + * for each level of visibility rather than creating new, empty ones. + */ + 'Can initialize member object with existing objects': function() + { + var pub = { foo: 'bar' }, + prot = { bar: 'baz' }, + priv = { baz: 'foo' }, + + members = this.sut.initMembers( pub, prot, priv ), + + test = { + 'public': pub, + 'protected': prot, + 'private': priv, + } + ; + + // ensure we can initialize the values of each visibility level + for ( vis in test ) + { + this.assertStrictEqual( test[ vis ], members[ vis ], + "Visibility level '" + vis + "' cannot be initialized" + ); + } + }, + + 'Properties are only accessible via their respective interfaces': function() { var _self = this, diff --git a/test/test-member_builder.js b/test/test-member_builder.js deleted file mode 100644 index bb84669..0000000 --- a/test/test-member_builder.js +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Tests generic member builder - * - * 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 . - * - * @author Mike Gerwitz - * @package test - */ - -var common = require( './common' ), - assert = require( 'assert' ), - builder = common.require( 'MemberBuilder' )() -; - - -( function testCanEmptyMemberObject() -{ - assert.deepEqual( - builder.initMembers(), - { 'public': {}, 'protected': {}, 'private': {} }, - "Can initialize empty (clean) member object with each level of " + - " visibility" - ); -} )(); - - -( function testCanInitMembersWithExistingObjects() -{ - var pub = { foo: 'bar' }, - pro = { bar: 'baz' }, - priv = { baz: 'foo' }, - - members = builder.initMembers( pub, pro, priv ) - ; - - assert.deepEqual( - members[ 'public' ], - pub, - "Can specify object to use for public members" - ); - - assert.deepEqual( - members[ 'protected' ], - pro, - "Can specify object to use for protected members" - ); - - assert.deepEqual( - members[ 'private' ], - priv, - "Can specify object to use for private members" - ); -} )(); -