diff --git a/test/test-interface-extend.js b/test/test-interface-extend.js new file mode 100644 index 0000000..2b2310e --- /dev/null +++ b/test/test-interface-extend.js @@ -0,0 +1,61 @@ +/** + * Tests extending of 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' ); + +var assert = require( 'assert' ), + Interface = require( 'interface' ), + abstractMethod = Interface.abstractMethod; + + +assert.throws( function() +{ + Interface.extend( + { + // properties (non-methods) are not permitted + prop: 'not permitted', + }); +}, Error, "Properties are not permitted within Interface definitions" ); + +assert.throws( function() +{ + Interface.extend( + { + // concrete method + method: function() {} + }); +}, Error, "Concrete methods are not permitted within Interface definitions" ); + +assert.doesNotThrow( + function() + { + Interface.extend( + { + method: abstractMethod(), + }); + }, + Error, + "Abstract method declarations are allowed within Interface definitions" +); + diff --git a/test/test-interface.js b/test/test-interface.js index 073229f..05b6cb2 100644 --- a/test/test-interface.js +++ b/test/test-interface.js @@ -42,34 +42,3 @@ assert.equal( "Generated interface object should be frozen" ); - -assert.throws( function() -{ - Interface.extend( - { - // properties (non-methods) are not permitted - prop: 'not permitted', - }); -}, Error, "Properties are not permitted within Interface definitions" ); - -assert.throws( function() -{ - Interface.extend( - { - // concrete method - method: function() {} - }); -}, Error, "Concrete methods are not permitted within Interface definitions" ); - -assert.doesNotThrow( - function() - { - Interface.extend( - { - method: abstractMethod(), - }); - }, - Error, - "Abstract method declarations are allowed within Interface definitions" -); -