Selaa lähdekoodia

Adds missing unit test for autoincluding the ClassMapAutoloader

Frank Brückner 11 vuotta sitten
vanhempi
commit
6a53a89cd4

+ 2 - 0
tests/Zend/Loader/AllTests.php

@@ -25,6 +25,7 @@ if (!defined('PHPUnit_MAIN_METHOD')) {
 }
 
 require_once 'Zend/Loader/AutoloaderTest.php';
+require_once 'Zend/Loader/AutoloaderFactoryClassMapLoaderTest.php';
 require_once 'Zend/Loader/AutoloaderFactoryTest.php';
 require_once 'Zend/Loader/AutoloaderMultiVersionTest.php';
 require_once 'Zend/Loader/Autoloader/ResourceTest.php';
@@ -52,6 +53,7 @@ class Zend_Loader_AllTests
         $suite = new PHPUnit_Framework_TestSuite('Zend Framework - Zend_Loader');
 
         $suite->addTestSuite('Zend_Loader_AutoloaderTest');
+        $suite->addTestSuite('Zend_Loader_AutoloaderFactoryClassMapLoaderTest');
         $suite->addTestSuite('Zend_Loader_AutoloaderFactoryTest');
         $suite->addTestSuite('Zend_Loader_AutoloaderMultiVersionTest');
         $suite->addTestSuite('Zend_Loader_Autoloader_ResourceTest');

+ 113 - 0
tests/Zend/Loader/AutoloaderFactoryClassMapLoaderTest.php

@@ -0,0 +1,113 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Loader
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+
+if (!defined('PHPUnit_MAIN_METHOD')) {
+    define('PHPUnit_MAIN_METHOD', 'Zend_Loader_AutoloaderFactoryClassMapLoaderTest::main');
+}
+
+require_once 'Zend/Loader/AutoloaderFactory.php';
+
+/**
+ * @package    Zend_Loader
+ * @subpackage UnitTests
+ * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @group      Loader
+ */
+class Zend_Loader_AutoloaderFactoryClassMapLoaderTest extends PHPUnit_Framework_TestCase
+{
+
+    /**
+     * @var array
+     */
+    protected $_loaders;
+
+    /**
+     * @var string
+     */
+    protected $_includePath;
+
+    public static function main()
+    {
+        $suite  = new PHPUnit_Framework_TestSuite(__CLASS__);
+        $result = PHPUnit_TextUI_TestRunner::run($suite);
+    }
+
+    public function setUp()
+    {
+        // Store original autoloaders
+        $this->_loaders = spl_autoload_functions();
+        if (!is_array($this->_loaders)) {
+            // spl_autoload_functions does not return empty array when no
+            // autoloaders registered...
+            $this->_loaders = array();
+        }
+
+        // Clear out other autoloaders to ensure those being tested are at the
+        // top of the stack
+        foreach ($this->_loaders as $loader) {
+            spl_autoload_unregister($loader);
+        }
+
+        // Store original include_path
+        $this->_includePath = get_include_path();
+    }
+
+    public function tearDown()
+    {
+        Zend_Loader_AutoloaderFactory::unregisterAutoloaders();
+        // Restore original autoloaders
+        $loaders = spl_autoload_functions();
+        if (is_array($loaders)) {
+            foreach ($loaders as $loader) {
+                spl_autoload_unregister($loader);
+            }
+        }
+
+        foreach ($this->_loaders as $loader) {
+            spl_autoload_register($loader);
+        }
+
+        // Restore original include_path
+        set_include_path($this->_includePath);
+    }
+
+    public function testAutoincluding()
+    {
+        Zend_Loader_AutoloaderFactory::factory(
+            array(
+                'Zend_Loader_ClassMapAutoloader' => array(
+                    dirname(__FILE__) . '/_files/goodmap.php',
+                ),
+            )
+        );
+        $loader = Zend_Loader_AutoloaderFactory::getRegisteredAutoloader(
+            'Zend_Loader_ClassMapAutoloader'
+        );
+        $map = $loader->getAutoloadMap();
+        $this->assertTrue(is_array($map));
+        $this->assertEquals(2, count($map));
+    }
+}
+
+if (PHPUnit_MAIN_METHOD == 'Zend_Loader_AutoloaderFactoryClassMapLoaderTest::main') {
+    Zend_Loader_AutoloaderFactoryClassMapLoaderTest::main();
+}