Continued a bit:
authorRoland Häder <roland@mxchange.org>
Sun, 16 Jul 2017 15:02:28 +0000 (17:02 +0200)
committerRoland Häder <roland@mxchange.org>
Sun, 16 Jul 2017 16:08:24 +0000 (18:08 +0200)
- some rewrites to make PHPUnit be able to unit-test it
- more sanity-checks on parameters, were sometimes combined
- surpress some anoyances caused by to strict xdebug settings

Signed-off-by: Roland Häder <roland@mxchange.org>
framework/config/class_FrameworkConfiguration.php
tests/bootstrap.php

index aa29d57..0e7f4dc 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 
 // Own namespace
-
 namespace CoreFramework\Configuration;
 
 // Import framework stuff
@@ -10,6 +9,7 @@ use CoreFramework\Dns\UnknownHostnameException;
 use CoreFramework\Generic\FrameworkInterface;
 use CoreFramework\Generic\NullPointerException;
 use CoreFramework\Generic\UnsupportedOperationException;
+use CoreFramework\Object\BaseFrameworkSystem;
 use CoreFramework\Registry\Registerable;
 
 // Import SPL stuff
@@ -66,11 +66,11 @@ class FrameworkConfiguration implements Registerable {
        const EXCEPTION_CONFIG_VALUE_TYPE_UNSUPPORTED = 0x132;
 
        /**
-        * Protected constructor
+        * Private constructor
         *
         * @return      void
         */
-       protected function __construct () {
+       private function __construct () {
                // Empty for now
        }
 
@@ -111,7 +111,7 @@ class FrameworkConfiguration implements Registerable {
                // Is it null?
                if (is_null($str)) {
                        // Throw NPE
-                       throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+                       throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
                } elseif (empty($str)) {
                        // Entry is empty
                        throw new InvalidArgumentException('str is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
@@ -127,29 +127,35 @@ class FrameworkConfiguration implements Registerable {
        /**
         * Setter for default time zone (must be correct!)
         *
-        * @param       $zone   The time-zone string (e.g. Europe/Berlin)
-        * @return      void
-        * @throws      NullPointerException    If $zone is NULL
-        * @throws      InvalidArgumentException        If $zone is empty
+        * @param       $timezone       The timezone string (e.g. Europe/Berlin)
+        * @return      $success        If timezone was accepted
+        * @throws      NullPointerException    If $timezone is NULL
+        * @throws      InvalidArgumentException        If $timezone is empty
         */
-       public final function setDefaultTimezone ($zone) {
+       public final function setDefaultTimezone ($timezone) {
                // Is it null?
-               if (is_null($zone)) {
+               if (is_null($timezone)) {
                        // Throw NPE
-                       throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
-               } elseif (empty($zone)) {
+                       throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
+               } elseif (!is_string($timezone)) {
+                       // Is not a string
+                       throw new InvalidArgumentException(sprintf('timezone[]=%s is not a string', gettype($timezone)), self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+               } elseif (empty($timezone)) {
                        // Entry is empty
-                       throw new InvalidArgumentException('zone is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+                       throw new InvalidArgumentException('timezone is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
                }
 
-               // Is PHP version 5.1.0 or higher? Older versions are being ignored
-               if (version_compare(phpversion(), '5.1.0', '>=')) {
-                       /*
-                        * Set desired time zone to prevent date() and related functions to
-                        * issue a E_WARNING.
-                        */
-                       date_default_timezone_set($zone);
-               } // END - if
+               // Default success
+               $success = FALSE;
+
+               /*
+                * Set desired time zone to prevent date() and related functions to
+                * issue an E_WARNING.
+                */
+               $success = date_default_timezone_set($timezone);
+
+               // Return status
+               return $success;
        }
 
        /**
@@ -164,14 +170,17 @@ class FrameworkConfiguration implements Registerable {
                // Is it null?
                if (is_null($configKey)) {
                        // Throw NPE
-                       throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+                       throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
+               } elseif (!is_string($configKey)) {
+                       // Is not a string
+                       throw new InvalidArgumentException(sprintf('configKey[]=%s is not a string', gettype($configKey)), self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
                } elseif (empty($configKey)) {
                        // Entry is empty
                        throw new InvalidArgumentException('configKey is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
                }
 
                // Is it set?
-               $isset = isset($this->config[$configKey]);
+               $isset = ((isset($this->config[$configKey])) || (array_key_exists($configKey, $this->config)));
 
                // Return the result
                return $isset;
@@ -190,7 +199,10 @@ class FrameworkConfiguration implements Registerable {
                // Is it null?
                if (is_null($configKey)) {
                        // Throw NPE
-                       throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+                       throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
+               } elseif (!is_string($configKey)) {
+                       // Is not a string
+                       throw new InvalidArgumentException(sprintf('configKey[]=%s is not a string', gettype($configKey)), self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
                } elseif (empty($configKey)) {
                        // Entry is empty
                        throw new InvalidArgumentException('configKey is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
@@ -217,19 +229,22 @@ class FrameworkConfiguration implements Registerable {
         * @return      void
         * @throws      NullPointerException    If $configKey is NULL
         * @throws      InvalidArgumentException        If $configKey is empty
-        * @throws      ConfigValueTypeUnsupportedException     If $configValue has an unsupported variable type
+        * @throws      InvalidArgumentException        If $configValue has an unsupported variable type
         */
        public final function setConfigEntry ($configKey, $configValue) {
                // Is a valid configuration key key provided?
                if (is_null($configKey)) {
                        // Configuration key is null
-                       throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
-               } elseif ((empty($configKey)) || (!is_string($configKey))) {
+                       throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
+               } elseif (!is_string($configKey)) {
+                       // Is not a string
+                       throw new InvalidArgumentException(sprintf('configKey[]=%s is not a string', gettype($configKey)), self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+               } elseif (empty($configKey)) {
                        // Entry is empty
                        throw new InvalidArgumentException('configKey is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
-               } elseif ((is_null($configValue)) || (is_array($configValue)) || (is_object($configValue)) || (is_resource($configValue))) {
+               } elseif ((is_array($configValue)) || (is_object($configValue)) || (is_resource($configValue))) {
                        // These cannot be set as this is not intended for configuration values, please use FrameworkArrayObject instead.
-                       throw new ConfigValueTypeUnsupportedException(array($this, $configKey, $configValue), self::EXCEPTION_CONFIG_VALUE_TYPE_UNSUPPORTED);
+                       throw new InvalidArgumentException(sprintf('configValue[]=%s for configKey=%s is not supported.', gettype($configValue), $configKey), self::EXCEPTION_CONFIG_VALUE_TYPE_UNSUPPORTED);
                }
 
                // Cast to string
@@ -264,10 +279,14 @@ class FrameworkConfiguration implements Registerable {
         * @throws      NoConfigEntryException  If a configuration element was not found
         */
        public final function unsetConfigEntry ($configKey) {
+               // Validate parameters
                if (is_null($configKey)) {
                        // Configuration key is null
-                       throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
-               } elseif ((empty($configKey)) || (!is_string($configKey))) {
+                       throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
+               } elseif (!is_string($configKey)) {
+                       // Entry is empty
+                       throw new InvalidArgumentException(sprintf('configKey[]=%s is not a string', gettype($configKey)), self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+               } elseif (empty($configKey)) {
                        // Entry is empty
                        throw new InvalidArgumentException('configKey is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
                }
@@ -334,6 +353,19 @@ class FrameworkConfiguration implements Registerable {
         * @return      void
         */
        public function setServerAddress ($serverAddress) {
+               // Is a valid configuration key key provided?
+               if (is_null($serverAddress)) {
+                       // Configuration key is null
+                       throw new NullPointerException($this, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER);
+               } elseif (!is_string($serverAddress)) {
+                       // Is not a string
+                       throw new InvalidArgumentException(sprintf('serverAddress[]=%s is not a string', gettype($serverAddress)), self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+               } elseif (empty($serverAddress)) {
+                       // Entry is empty
+                       throw new InvalidArgumentException('serverAddress is empty', self::EXCEPTION_CONFIG_KEY_IS_EMPTY);
+               }
+
+               // Set it, please don't do it yourself here
                $this->setConfigEntry('server_addr', (string) $serverAddress);
        }
 
index 35eb2b2..3d2f1ae 100644 (file)
@@ -32,5 +32,11 @@ require dirname(__DIR__) . '/index.php';
 // Remove it to prevent leak to PHPUnit
 unset($_SERVER['argv'][1]);
 
+// For these unit tests, xdebug must be quieted a bit
+if (extension_loaded('xdebug')) {
+       // Quiet it a bit as this interfers with the nice testing output
+       ini_set('xdebug.show_exception_trace', FALSE);
+} // END - if
+
 // Autoload more stuff
 require dirname(__DIR__) . '/vendor/autoload.php';