From 562a4fcc4d408d073938ec55f4ad7c3d15c7edc8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Wed, 11 Jun 2008 22:46:23 +0000 Subject: [PATCH] Tests added --- .gitattributes | 5 ++ tests/RegistryTest.php | 94 +++++++++++++++++++++++++++++++++++++ tests/RequestTest.php | 102 +++++++++++++++++++++++++++++++++++++++++ tests/Test.php | 54 ++++++++++++++++++++++ tests/all-tests.sh | 3 ++ tests/unittest.sh | 5 ++ 6 files changed, 263 insertions(+) create mode 100644 tests/RegistryTest.php create mode 100644 tests/RequestTest.php create mode 100644 tests/Test.php create mode 100644 tests/all-tests.sh create mode 100644 tests/unittest.sh diff --git a/.gitattributes b/.gitattributes index 13522f9a1..722aab641 100644 --- a/.gitattributes +++ b/.gitattributes @@ -341,3 +341,8 @@ templates/de/code/footer_msg.ctp -text templates/de/code/header.ctp -text templates/de/html/.htaccess -text tests/ConfigTest.php -text +tests/RegistryTest.php -text +tests/RequestTest.php -text +tests/Test.php -text +tests/all-tests.sh -text +tests/unittest.sh -text diff --git a/tests/RegistryTest.php b/tests/RegistryTest.php new file mode 100644 index 000000000..4efbbb016 --- /dev/null +++ b/tests/RegistryTest.php @@ -0,0 +1,94 @@ +setConfigEntry('default_application', 'ship-simu'); + +// Set testing mode (no starter.php will be loaded!) +define('TEST_MODE', true); + +// Load the PHPUnit framework +require_once('PHPUnit/Framework.php'); + +print (basename(__FILE__).": Init completed.\n\n"); + +/** + * A test case for the registry + * + * @author Roland Haeder + * @version 0.0.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * @see http://www.phpunit.de + * + * This program 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 . + */ +class RegistryTest extends PHPUnit_Framework_TestCase { + /** + * Tests if we can store an instance to the registry + * + * @return void + */ + public function testInstanceRegistryAdd () { + // Get a registry instance + $registryInstance = Registry::getRegistry(); + + // Create a User instance + $userInstance = User::createUserByEmail("webmaster@mxchange.org"); + + // Now store the instance in the registry + $registryInstance->addInstance('user', $userInstance); + + // Test if the registry key is there + if (!$registryInstance->instanceExists('user')) { + $this->fail("Registry test failed: Cannot locate our user instance in registry!"); + } + } + + /** + * Tests if we can store an instance to the registry + * + * @return void + */ + public function testInstanceRegistryCompare () { + // Get a registry instance + $registryInstance = Registry::getRegistry(); + + // And get it back + $userInstance = $registryInstance->getInstance('user'); + + // Compare both unique keys + $testPassed = ($userInstance instanceof ManageableUser); + + // Test passed? + if (!$testPassed) { + $this->fail("Registry test failed: Method getInstance() returned a non-object."); + } + } +} + +?> diff --git a/tests/RequestTest.php b/tests/RequestTest.php new file mode 100644 index 000000000..75107b439 --- /dev/null +++ b/tests/RequestTest.php @@ -0,0 +1,102 @@ +setConfigEntry('default_application', 'ship-simu'); + +// Set testing mode (no starter.php will be loaded!) +define('TEST_MODE', true); + +// Load the PHPUnit framework +require_once('PHPUnit/Framework.php'); + +print (basename(__FILE__).": Init completed.\n\n"); + +/** + * A test case for faked HTTP requests. This is faked because we *set* + * $_REQUEST here. This should be made better in PHP6... :( + * + * @author Roland Haeder + * @version 0.0.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * @see http://www.phpunit.de + * + * This program 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 . + */ +class RequestTest extends PHPUnit_Framework_TestCase { + /** + * A non-exist request element is being asked for. null is the expected + * result from the class + * + * @return void + */ + public function testMissingRequestElement () { + // Get a request instance + $requestInstance = HttpRequest::createHttpRequest(); + + // Get the element + $nonExist = $requestInstance->getRequestElement('never_there'); + + // Is this null? + if (!is_null($nonExist)) { + // Is not null! + $this->fail(sprintf("[%s:] Unexpected type %s received from request handler.", + $requestInstance->__toString(), + gettype($nonExists) + )); + } + } + + /** + * Now fake a request array and try the test on it again + * + * @return void + */ + public function testFakeRequestElement () { + // Fake the request here + $_REQUEST = array('test_key' => "test_value"); + + // Again get an instance + $requestInstance = HttpRequest::createHttpRequest(); + + // Get the element + $testValue = $requestInstance->getRequestElement('test_key'); + + // Is it the same? + if ($testValue !== "test_value") { + // Something went wrong + $this->fail(sprintf("[%s] Unexpected value %s (%s) from test key received.", + $requestInstance->__toString(), + $testValue, + gettype($testValue) + )); + } + } +} + +?> diff --git a/tests/Test.php b/tests/Test.php new file mode 100644 index 000000000..284f9b22a --- /dev/null +++ b/tests/Test.php @@ -0,0 +1,54 @@ +setConfigEntry('default_application', 'ship-simu'); + +// Set testing mode (no starter.php will be loaded!) +define('TEST_MODE', true); + +// Load the PHPUnit framework +require_once('PHPUnit/Framework.php'); + +print (basename(__FILE__).": Init completed.\n\n"); +die("You need to remove this line (".__LINE__.") and implement this test!\n"); + +/** + * A test case for + * + * @author Roland Haeder + * @version 0.0.0 + * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @license GNU GPL 3.0 or any newer version + * @link http://www.ship-simu.org + * @see http://www.phpunit.de + * + * This program 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 . + */ +class Test extends PHPUnit_Framework_TestCase { +} + +?> diff --git a/tests/all-tests.sh b/tests/all-tests.sh new file mode 100644 index 000000000..13c704a64 --- /dev/null +++ b/tests/all-tests.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +find -type f -name "*Test.php" -not -name "Test.php" -exec sh ./unittest.sh {} \; diff --git a/tests/unittest.sh b/tests/unittest.sh new file mode 100644 index 000000000..18e210c5a --- /dev/null +++ b/tests/unittest.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +FILE=`echo $1 | cut -d "/" -f 2` + +phpunit --wait $FILE -- 2.39.2