From cef0c0146bcba004b0a9589acb3c66fb64b84ace Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Sat, 19 Nov 2011 12:39:45 -0500 Subject: [PATCH] [#29] Refactored test-interface.js into new test case format --- test/Interface/GeneralTest.js | 75 +++++++++++++++++++++++++++++++++++ test/test-interface.js | 53 ------------------------- 2 files changed, 75 insertions(+), 53 deletions(-) create mode 100644 test/Interface/GeneralTest.js delete mode 100644 test/test-interface.js diff --git a/test/Interface/GeneralTest.js b/test/Interface/GeneralTest.js new file mode 100644 index 0000000..ee50cc9 --- /dev/null +++ b/test/Interface/GeneralTest.js @@ -0,0 +1,75 @@ +/** + * Tests interfaces + * + * 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 + */ + +require( 'common' ).testCase( +{ + setUp: function() + { + this.FooType = this.require( 'interface' ).extend(); + }, + + + /** + * Interface.extend(), like Class.extend(), should result in a new + * interface. + */ + 'Interface extend method creates a new interface object': function() + { + this.assertOk( + ( typeof this.FooType === 'function' ), + "Interface extend method creates a new interface object" + ); + }, + + + /** + * Interfaces describe an API; they do not have any actual implementation. + * It does not make sense to instantiate them. + */ + 'Interfaces cannot be instantiated': function() + { + this.assertThrows( function() + { + new this.FooType(); + }, Error, "Should not be able to instantiate interfaces" ); + }, + + + /** + * To prevent altering the interface after it is defined, the resulting + * object should be frozen, if supported by the environment. + */ + 'Generated interface should be frozen': function() + { + // only perform the assertion if supported by our environment + if ( Object.isFrozen ) + { + this.assertEqual( + Object.isFrozen( this.FooType ), + true, + "Generated interface object should be frozen" + ); + } + }, +} ); diff --git a/test/test-interface.js b/test/test-interface.js deleted file mode 100644 index 0236940..0000000 --- a/test/test-interface.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Tests interfaces - * - * 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' ), - Interface = common.require( 'interface' ), - abstractMethod = Interface.abstractMethod; - -var FooType = Interface.extend(); - - -assert.ok( - ( FooType instanceof Function ), - "Interface extend method creates a new interface object" -); - -assert.throws( function() -{ - new FooType(); -}, Error, "Interfaces cannot be instantiated" ); - - -// only perform check if supported by the engine -if ( Object.isFrozen ) -{ - assert.equal( - Object.isFrozen( FooType ), - true, - "Generated interface object should be frozen" - ); -} -