Преглед изворни кода

fixed #ZF-8844 : added resetAdapterLoader() Method
added and improved unit tests
refactored unit tests


git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20345 44c647ce-9c0f-0410-b52a-842ac1e357ba

doctorrock83 пре 16 година
родитељ
комит
021fa6e052

+ 24 - 3
library/Zend/Serializer.php

@@ -81,9 +81,7 @@ class Zend_Serializer
     public static function getAdapterLoader() 
     {
         if (self::$_adapterLoader === null) {
-            $loader = new Zend_Loader_PluginLoader();
-            $loader->addPrefixPath('Zend_Serializer_Adapter', dirname(__FILE__).'/Serializer/Adapter');
-            self::$_adapterLoader = $loader;
+            self::$_adapterLoader = self::_getDefaultAdapterLoader();
         }
         return self::$_adapterLoader;
     }
@@ -98,6 +96,29 @@ class Zend_Serializer
     {
         self::$_adapterLoader = $pluginLoader;
     }
+    
+    /**
+     * Resets the internal adapter plugin loader
+     *
+     * @return Zend_Loader_PluginLoader
+     */
+    public static function resetAdapterLoader()
+    {
+        self::$_adapterLoader = self::_getDefaultAdapterLoader();
+        return self::$_adapterLoader;
+    }
+    
+    /**
+     * Returns a default adapter plugin loader
+     *
+     * @return Zend_Loader_PluginLoader
+     */
+    protected static function _getDefaultAdapterLoader()
+    {
+        $loader = new Zend_Loader_PluginLoader();
+        $loader->addPrefixPath('Zend_Serializer_Adapter', dirname(__FILE__).'/Serializer/Adapter');
+        return $loader;
+    }
 
     /**
      * Change the default adapter.

+ 31 - 21
tests/Zend/Serializer/SerializerTest.php

@@ -23,74 +23,83 @@ class Zend_Serializer_SerializerTest extends PHPUnit_Framework_TestCase
 
     public function setUp()
     {
+        Zend_Serializer::resetAdapterLoader();
     }
 
     public function tearDown()
     {
     }
 
-    public function testGetDefaultAdapterLoader() {
+    public function testGetDefaultAdapterLoader()
+    {
         $this->assertTrue(Zend_Serializer::getAdapterLoader() instanceof Zend_Loader_PluginLoader);
     }
 
-    public function testChangeAdapterLoader() {
-        $oldLoader = Zend_Serializer::getAdapterLoader();
+    public function testChangeAdapterLoader()
+    {
         $newLoader = new Zend_Loader_PluginLoader();
         Zend_Serializer::setAdapterLoader($newLoader);
         $this->assertTrue(Zend_Serializer::getAdapterLoader() === $newLoader);
-        Zend_Serializer::setAdapterLoader($oldLoader);
     }
 
-    public function testFactoryValidCall() {
+    public function testFactoryValidCall()
+    {
         $serializer = Zend_Serializer::factory('PhpSerialize');
         $this->assertTrue($serializer instanceof Zend_Serializer_Adapter_PhpSerialize);
     }
 
-    public function testFactoryUnknownAdapter() {
-        $this->setExpectedException('Zend_Serializer_Exception');
+    public function testFactoryUnknownAdapter()
+    {
+        $this->setExpectedException('Zend_Serializer_Exception','Can\'t load serializer adapter');
         Zend_Serializer::factory('unknown');
     }
+    
+    public function testFactoryOnADummyClassAdapter()
+    {
+        $this->setExpectedException('Zend_Serializer_Exception','must implement Zend_Serializer_Adapter_AdapterInterface');
+        Zend_Serializer::setAdapterLoader(new Zend_Loader_PluginLoader(array('Zend_Serializer_Adapter' => dirname(__FILE__).'/_files')));
+        Zend_Serializer::factory('dummy');
+    }
 
-    public function testDefaultAdapter() {
+    public function testDefaultAdapter()
+    {
         $adapter = Zend_Serializer::getDefaultAdapter();
         $this->assertTrue($adapter instanceof Zend_Serializer_Adapter_AdapterInterface);
     }
 
-    public function testChangeDefaultAdapterWithString() {
-        $oldAdapter = Zend_Serializer::getDefaultAdapter();
+    public function testChangeDefaultAdapterWithString()
+    {
         $newAdapter = 'Json';
-
         Zend_Serializer::setDefaultAdapter($newAdapter);
         $this->assertTrue(Zend_Serializer::getDefaultAdapter() instanceof Zend_Serializer_Adapter_Json);
-
-        Zend_Serializer::setDefaultAdapter($oldAdapter);
     }
 
-    public function testChangeDefaultAdapterWithInstance() {
-        $oldAdapter = Zend_Serializer::getDefaultAdapter();
+    public function testChangeDefaultAdapterWithInstance()
+    {
         $newAdapter = new Zend_Serializer_Adapter_PhpSerialize();
 
         Zend_Serializer::setDefaultAdapter($newAdapter);
         $this->assertTrue($newAdapter === Zend_Serializer::getDefaultAdapter());
-
-        Zend_Serializer::setDefaultAdapter($oldAdapter);
     }
 
-    public function testSerializeDefaultAdapter() {
+    public function testSerializeDefaultAdapter()
+    {
         $value = 'test';
         $adapter = Zend_Serializer::getDefaultAdapter();
         $expected = $adapter->serialize($value);
         $this->assertEquals($expected, Zend_Serializer::serialize($value));
     }
 
-    public function testSerializeSpecificAdapter() {
+    public function testSerializeSpecificAdapter()
+    {
         $value = 'test';
         $adapter = new Zend_Serializer_Adapter_Json();
         $expected = $adapter->serialize($value);
         $this->assertEquals($expected, Zend_Serializer::serialize($value, array('adapter' => $adapter)));
     }
 
-    public function testUnserializeDefaultAdapter() {
+    public function testUnserializeDefaultAdapter()
+    {
         $value = 'test';
         $adapter = Zend_Serializer::getDefaultAdapter();
         $value = $adapter->serialize($value);
@@ -98,7 +107,8 @@ class Zend_Serializer_SerializerTest extends PHPUnit_Framework_TestCase
         $this->assertEquals($expected, Zend_Serializer::unserialize($value));
     }
 
-    public function testUnserializeSpecificAdapter() {
+    public function testUnserializeSpecificAdapter()
+    {
         $adapter = new Zend_Serializer_Adapter_Json();
         $value = '"test"';
         $expected = $adapter->unserialize($value);

+ 2 - 0
tests/Zend/Serializer/_files/Dummy.php

@@ -0,0 +1,2 @@
+<?php
+class Zend_Serializer_Adapter_Dummy { }