diff --git a/test/Util/AbstractTest.js b/test/Util/AbstractTest.js new file mode 100644 index 0000000..41520a7 --- /dev/null +++ b/test/Util/AbstractTest.js @@ -0,0 +1,67 @@ +/** + * Tests util abstract functions + * + * Copyright (C) 2010, 2011, 2013 Mike Gerwitz + * + * This file is part of GNU ease.js. + * + * ease.js is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * TODO: We are missing tests for various details such as ensuring that the + * definition and parameter length are properly recorded. + */ + +require( 'common' ).testCase( +{ + setUp: function() + { + this.Sut = this.require( 'util' ); + }, + + + /** + * The purpose is to return a function that can be used as part of a + * class definition. + */ + 'abstractMethod returns a function': function() + { + this.assertEqual( + typeof this.Sut.createAbstractMethod(), + 'function' + ); + }, + + + /** + * We also expose a means of checking whether or not a given function is + * abstract; this hides the implementation details. + */ + 'Returned function is considered abstract by isAbstractMethod': + function() + { + this.assertOk( + this.Sut.isAbstractMethod( this.Sut.createAbstractMethod() ) + ); + }, + + + 'Abstract methods cannot be invoked': function() + { + var Sut = this.Sut; + this.assertThrows( function() + { + Sut.createAbstractMethod()(); + }, Error ); + }, +} ); diff --git a/test/test-util-abstract.js b/test/test-util-abstract.js deleted file mode 100644 index 2553398..0000000 --- a/test/test-util-abstract.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Tests util abstract functions - * - * Copyright (C) 2010, 2011, 2013 Mike Gerwitz - * - * This file is part of GNU ease.js. - * - * ease.js is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -var common = require( './common' ), - assert = require( 'assert' ), - util = common.require( 'util' ); - - -assert.ok( - ( util.createAbstractMethod() instanceof Function ), - "abstractMethod() returns a function" -); - -assert.ok( - ( util.isAbstractMethod( util.createAbstractMethod() ) ), - "Functions returned by abstractMethod() are considered to be abstract by " + - "util.isAbstractMethod" -); - -assert['throws']( function() -{ - util.createAbstractMethod()(); -}, Error, "Abstract methods cannot be called" ); -