From: Roland Häder Date: Sat, 15 Mar 2008 18:23:09 +0000 (+0000) Subject: first unit test for configuration sub system added X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=27487f797181d7c681778884c6195463b8ff1efc;p=shipsimu.git first unit test for configuration sub system added --- diff --git a/.gitattributes b/.gitattributes index 93335fa..4bc507e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -279,6 +279,7 @@ templates/de/code/emergency_exit.ctp -text templates/de/code/footer_msg.ctp -text templates/de/code/header.ctp -text templates/de/html/.htaccess -text +tests/ConfigTest.php -text tests/old/contract-test.php -text tests/old/loader-test.php -text tests/old/personell-test.php -text diff --git a/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php b/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php index df18915..f16e365 100644 --- a/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php +++ b/inc/classes/exceptions/main/class_ConfigEntryIsEmptyException.php @@ -7,7 +7,7 @@ * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software * @license GNU GPL 3.0 or any newer version * @link http://www.mxchange.org - * + * * 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 @@ -25,14 +25,14 @@ class ConfigEntryIsEmptyException extends FrameworkException { /** * The constructor * - * @param $message Message from the exception + * @param $message Message from the exception * @param $code Code number for the exception * @return void */ - public function __construct (BaseFrameworkSystem $class, $code) { + public function __construct (FrameworkConfiguration $class, $code) { // Add a message around the missing class $message = sprintf("[%s:%d] Leeren Konfigurationseintrag angegeben!", - $class, + $class->__toString(), $this->getLine() ); diff --git a/inc/config/class_FrameworkConfiguration.php b/inc/config/class_FrameworkConfiguration.php index 957a353..fc92040 100644 --- a/inc/config/class_FrameworkConfiguration.php +++ b/inc/config/class_FrameworkConfiguration.php @@ -116,7 +116,7 @@ class FrameworkConfiguration { /** * A private include loader * - * @param $arrayObject The array object with all include files + * @param $arrayObject The array object with all include files * @return void */ private function loadIncludes (ArrayObject $arrayObject) { @@ -212,7 +212,7 @@ class FrameworkConfiguration { // Is a valid configuration entry provided? if (empty($cfgEntry)) { // Entry is empty - throw new ConfigEntryIsEmptyException(__CLASS__, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY); + throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY); } elseif (!isset($this->config[$cfgEntry])) { // Entry was not found! throw new ConfigEntryNotFoundException(array(__CLASS__, $cfgEntry), self::EXCEPTION_CONFIG_ENTRY_WAS_NOT_FOUND); @@ -243,7 +243,7 @@ class FrameworkConfiguration { // Is a valid configuration entry provided? if (empty($cfgEntry)) { // Entry is empty - throw new ConfigEntryIsEmptyException(__CLASS__, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY); + throw new ConfigEntryIsEmptyException($this, self::EXCEPTION_CONFIG_ENTRY_IS_EMPTY); } // Set the configuration value diff --git a/tests/ConfigTest.php b/tests/ConfigTest.php new file mode 100644 index 0000000..84b245d --- /dev/null +++ b/tests/ConfigTest.php @@ -0,0 +1,142 @@ +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"); + +/** + * A test case for the configuration sub system + * + */ +class ConfigTest extends PHPUnit_Framework_TestCase { + /** + * Tests the exception ConfigEntryNotFoundException if it is being thrown. + * Else the test shall fail + * + * @return void + */ + public function testConfigEntryNotFoundException () { + // Now try the test + $testPassed = false; + try { + // Get a configuration instance + $cfg = FrameworkConfiguration::getInstance(); + + // Now find a configuration variable that does not exist + $dummy = $cfg->readConfig("does_not_exist"); + } catch (ConfigEntryNotFoundException $expected) { + // This exception was expected, so it is fine + $testPassed = true; + } catch (FrameworkException $unexptected) { + // This exception was not expected! + $this->fail(sprintf("Unexpected exception %s detected.", $unexpected->__toString())); + } + + if (!$testPassed) { + // This test went wrong + $this->fail("Test of thrown exception ConfigEntryNotFoundException failed!"); + } + } + + /** + * Tests if the exception ConfigEntryIsEmptyException is being thrown by + * "emulating" an empty configuration variable. + * + * @return void + */ + public function testConfigEntryIsEmptyExceptionRead () { + // Now try the test + $testPassed = false; + try { + // Get a configuration instance + $cfg = FrameworkConfiguration::getInstance(); + + // Try to read an empty configuration variable + $dummy = $cfg->readConfig(""); + } catch (ConfigEntryIsEmptyException $expected) { + // This exception was expected, so it is fine + $testPassed = true; + } catch (FrameworkException $unexptected) { + // This exception was not expected! + $this->fail(sprintf("Unexpected exception %s detected.", $unexpected->__toString())); + } + + if (!$testPassed) { + // This test went wrong + $this->fail("Test of thrown exception ConfigEntryIsEmptyException failed!"); + } + } + + /** + * Tests if the exception ConfigEntryIsEmptyException is being thrown by + * "emulating" an empty configuration variable. + * + * @return void + */ + public function testConfigEntryIsEmptyExceptionWrite () { + // Now try the test + $testPassed = false; + try { + // Get a configuration instance + $cfg = FrameworkConfiguration::getInstance(); + + // Try to read an empty configuration variable + $cfg->setConfigEntry("", "will_never_be_set"); + } catch (ConfigEntryIsEmptyException $expected) { + // This exception was expected, so it is fine + $testPassed = true; + } catch (FrameworkException $unexptected) { + // This exception was not expected! + $this->fail(sprintf("Unexpected exception %s detected.", $unexpected->__toString())); + } + + if (!$testPassed) { + // This test went wrong + $this->fail("Test of thrown exception ConfigEntryIsEmptyException failed!"); + } + } + + /** + * Tests if a set value can be returned from the configuration sub-system + * + * @return void + */ + public function testWriteReadConfigEntry () { + // Try it here + $value = "This is a test value"; + try { + // Get a configuration instance + $cfg = FrameworkConfiguration::getInstance(); + + // Try to read an empty configuration variable + $cfg->setConfigEntry("test_key", "{$value}"); + + // Read the config entry we have just written + $readValue = $cfg->readConfig("test_key"); + + // Now test the values + $this->assertEquals($value, $readValue); + } catch (FrameworkException $unexptected) { + // This exception was not expected! + $this->fail(sprintf("Unexpected exception %s detected.", $unexpected->__toString())); + } + } +} + +?> diff --git a/tests/old/contract-test.php b/tests/old/contract-test.php index f948c30..db00ced 100644 --- a/tests/old/contract-test.php +++ b/tests/old/contract-test.php @@ -1,5 +1,4 @@ setConfigEntry("default_application", "sh // Set testing mode (no starter.php will be loaded!) define('TEST_MODE', true); -// Load the "selector" -require(PATH . "inc/selector.php"); - // Wir tun hier so, als waere schon das Reederei-Objekt generiert und wir wollen // jetzt die Personalliste wiederherstellen try { diff --git a/tests/old/loader-test.php b/tests/old/loader-test.php index 0c648d9..80b75c5 100644 --- a/tests/old/loader-test.php +++ b/tests/old/loader-test.php @@ -1,5 +1,4 @@ setConfigEntry("default_application", "sh // Set testing mode (no starter.php will be loaded!) define('TEST_MODE', true); -// Load the "selector" -require(PATH . "inc/selector.php"); - // Wir tun hier so, als waere schon das Reederei-Objekt generiert und wir wollen // jetzt die Personalliste wiederherstellen try { diff --git a/tests/old/personell-test.php b/tests/old/personell-test.php index 5a8e604..c288237 100644 --- a/tests/old/personell-test.php +++ b/tests/old/personell-test.php @@ -1,5 +1,4 @@ setConfigEntry("default_application", "sh // Set testing mode (no starter.php will be loaded!) define('TEST_MODE', true); -// Load the "selector" -require(PATH . "inc/selector.php"); - // Wir tun hier so, als waere schon das Reederei-Objekt generiert und wir wollen // jetzt die Personalliste wiederherstellen try {