Author: smarr
Date: Mon Dec 31 01:05:01 2007
New Revision: 7046

Log:
still 7 failures: will be probably fixed by implementing missing parts

Added:
    experimental/Reflection/tests/test_classes/MyReflectionMethod.php
    experimental/Reflection/tests/test_classes/MyReflectionProperty.php
    experimental/Reflection/tests/test_classes/interface.php
Modified:
    experimental/Reflection/src/class.php
    experimental/Reflection/src/extension.php
    experimental/Reflection/src/method.php
    experimental/Reflection/tests/class_test.php
    experimental/Reflection/tests/suite.php
    experimental/Reflection/tests/test_classes/MyReflectionClass.php

Modified: experimental/Reflection/src/class.php
==============================================================================
--- experimental/Reflection/src/class.php [iso-8859-1] (original)
+++ experimental/Reflection/src/class.php [iso-8859-1] Mon Dec 31 01:05:01 2007
@@ -105,7 +105,11 @@
      * @return ezcReflectionMethod
      */
     public function getMethod($name) {
-        return new ezcReflectionMethod($this->class, $name);
+       if ( $this->class instanceof ReflectionClass ) {
+               return new ezcReflectionMethod($this->class->getMethod($name));
+       } else {
+               return new ezcReflectionMethod(parent::getMethod($name));
+       }
     }
 
     /**
@@ -186,7 +190,7 @@
         }
         
         if (is_object($parentClass)) {
-            return new ezcReflectionClassType($parentClass->getName());
+            return new ezcReflectionClassType($parentClass);
         }
         else {
             return null;
@@ -222,8 +226,8 @@
      * @return ezcReflectionProperty[]
      */
     public function getProperties($filter = null) {
-        if ( $this->reflectionSource ) {
-               $props = $this->reflectionSource->getProperties($filter);
+        if ( $this->class instanceof ReflectionClass ) {
+               $props = $this->class->getProperties($filter);
         } else {
                $props = parent::getProperties($filter);
         }

Modified: experimental/Reflection/src/extension.php
==============================================================================
--- experimental/Reflection/src/extension.php [iso-8859-1] (original)
+++ experimental/Reflection/src/extension.php [iso-8859-1] Mon Dec 31 01:05:01 
2007
@@ -18,22 +18,35 @@
  */
 class ezcReflectionExtension extends ReflectionExtension {
 
+       /**
+        * @var ReflectionExtension
+        */
+       protected $reflectionSource = null;
+       
     /**
-    * @param string $name
+    * @param string|ReflectionExtension $extension
     */
-    public function __construct($name) {
-        parent::__construct($name);
+    public function __construct($extension) {
+       if ( $extension instanceof ReflectionExtension ) {
+               $this->reflectionSource = $extension;
+       } else {
+               parent::__construct( $extension );
+       }
     }
 
     /**
     * @return ezcReflectionFunction[]
     */
     public function getFunctions() {
-        $functs = parent::getFunctions();
+       if ( $this->reflectionSource ) {
+               $functs = $this->reflectionSource->getFunctions();
+       } else {
+               $functs = parent::getFunctions();
+       }
+       
         $result = array();
         foreach ($functs as $func) {
-               $function = new ezcReflectionFunction($func->getName());
-               $result[] = $function;
+               $result[] = new ezcReflectionFunction($func);
         }
         return $result;
     }
@@ -42,11 +55,15 @@
      * @return ezcReflectionClassType[]
      */
     public function getClasses() {
-        $classes = parent::getClasses();
+       if ( $this->reflectionSource ) {
+               $classes = $this->reflectionSource->getClasses();
+       } else {
+               $classes = parent::getClasses();
+       }
+       
         $result = array();
         foreach ($classes as $class) {
-               $extClass = new ezcReflectionClassType($class->getName());
-               $result[] = $extClass;
+               $result[] = new ezcReflectionClassType($class);
         }
         return $result;
     }

Modified: experimental/Reflection/src/method.php
==============================================================================
--- experimental/Reflection/src/method.php [iso-8859-1] (original)
+++ experimental/Reflection/src/method.php [iso-8859-1] Mon Dec 31 01:05:01 2007
@@ -231,6 +231,18 @@
     }
     
     /**
+     * Name of the method
+     * @return string
+     */
+    public function getName() {
+       if ( $this->reflectionSource ) {
+               return $this->reflectionSource->getName();
+       } else {
+               return parent::getName();
+       }
+    }
+    
+    /**
      * Use overloading to call additional methods
      * of the reflection instance given to the constructor
      *

Modified: experimental/Reflection/tests/class_test.php
==============================================================================
--- experimental/Reflection/tests/class_test.php [iso-8859-1] (original)
+++ experimental/Reflection/tests/class_test.php [iso-8859-1] Mon Dec 31 
01:05:01 2007
@@ -30,13 +30,13 @@
     public function testGetMethod() {
         $method = $this->class->getMethod('helloWorld');
         self::assertType('ezcReflectionMethod', $method);
-        self::assertEquals($method->getName(), 'helloWorld');
+        self::assertEquals('helloWorld', $method->getName());
     }
 
     public function testGetConstructor() {
         $method = $this->class->getConstructor();
         self::assertType('ezcReflectionMethod', $method);
-        self::assertEquals($method->getName(), '__construct');
+        self::assertEquals('__construct', $method->getName());
     }
     
        public function testGetInterfaces() {
@@ -52,10 +52,9 @@
         $methods = $class->getMethods();
         self::assertEquals(0, count($methods));
 
-        $class = new ezcReflectionClass('TestMethods');
-        $methods = $class->getMethods();
+        $methods = $this->class->getMethods();
 
-        $expectedMethods = array('__construct', 'm1', 'm2', 'm3', 'm4');
+        $expectedMethods = array('__construct', 'helloWorld');
         foreach ($methods as $method) {
             self::assertType('ezcReflectionMethod', $method);
             self::assertContains($method->getName(), $expectedMethods);
@@ -152,10 +151,9 @@
         $class = new ezcReflectionClass('ReflectionClass');
         $ext = $class->getExtension();
         self::assertType('ezcReflectionExtension', $ext);
-        self::assertEquals($ext->getName(), 'Reflection');
+        self::assertEquals('Reflection', $ext->getName());
 
-        $class = new ezcReflectionClass('TestWebservice');
-        $ext = $class->getExtension();
+        $ext = $this->class->getExtension();
         self::assertNull($ext);
     }
 

Modified: experimental/Reflection/tests/suite.php
==============================================================================
--- experimental/Reflection/tests/suite.php [iso-8859-1] (original)
+++ experimental/Reflection/tests/suite.php [iso-8859-1] Mon Dec 31 01:05:01 
2007
@@ -24,6 +24,8 @@
 require_once 'test_classes/methods.php';
 require_once 'test_classes/methods2.php';
 require_once 'test_classes/MyReflectionClass.php';
+require_once 'test_classes/MyReflectionProperty.php';
+require_once 'test_classes/MyReflectionMethod.php';
 require_once 'test_classes/webservice.php';
 require_once 'test_classes/interface.php';
 require_once 'test_classes/BaseClass.php';

Modified: experimental/Reflection/tests/test_classes/MyReflectionClass.php
==============================================================================
--- experimental/Reflection/tests/test_classes/MyReflectionClass.php 
[iso-8859-1] (original)
+++ experimental/Reflection/tests/test_classes/MyReflectionClass.php 
[iso-8859-1] Mon Dec 31 01:05:01 2007
@@ -1,8 +1,8 @@
 <?php
 
 class MyReflectionClass extends ReflectionClass {
-
-    public function doSomeMetaProgramming() 
+       
+       public function doSomeMetaProgramming() 
        {
                return true;
        }
@@ -10,6 +10,61 @@
        public function change() {
                return true;
        }
+       
+       public function getConstructor() {
+               return new MyReflectionMethod($this->getName(), 
parent::getConstructor()->getName());
+       }
+       
+    public function getMethod($name) {
+       return new MyReflectionMethod($this->getName(), $name);
+    }
+    
+    public function getMethods($filter = null) {
+       $methods = parent::getMethods($filter);
+       
+       $result = array();
+       foreach ($methods as $method) {
+               $result[] = new MyReflectionMethod($this->getName(), 
$method->getName());
+       }
+       return $result;
+    }
+    
+    public function getProperty($name) {
+       return new MyReflectionProperty($this->getName(), $name);
+    }
+    
+       public function getProperties($filter = null) {
+       $props = parent::getProperties($filter);
+       
+       $result = array();
+       foreach ($props as $prop) {
+               $result[] = new MyReflectionProperty($this->getName(), 
$prop->getName());
+       }
+       return $result;
+    }
+    
+       public function getInterfaces() {
+       $ifaces = parent::getInterfaceNames();
+       
+       $result = array();
+       foreach ($ifaces as $iface) {
+               $result[] = new MyReflectionClass($iface);
+       }
+       return $result;
+    }
+    
+    public function getParentClass() {
+       $parent = parent::getParentClass();
+       if ( $parent == null ) {
+               return null;
+       } else {
+               return new MyReflectionClass($parent->getName());
+       }
+    }
+    
+    public function getExtension() {
+       return new MyReflectionExtension(parent::getExtensionName());
+    }
 }
 
 ?>

Added: experimental/Reflection/tests/test_classes/MyReflectionMethod.php
==============================================================================
--- experimental/Reflection/tests/test_classes/MyReflectionMethod.php (added)
+++ experimental/Reflection/tests/test_classes/MyReflectionMethod.php 
[iso-8859-1] Mon Dec 31 01:05:01 2007
@@ -1,0 +1,21 @@
+<?php
+class MyReflectionMethod extends ReflectionMethod {
+       public function change() {
+               return true;
+       }
+       
+       public function getDeclaringClass() {
+               return new 
MyReflectionClass(parent::getDeclaringClass()->getName());
+       }
+       
+    public function getParameters() {
+       $params = parent::getParameters();
+       
+       $result = array();
+       foreach ($params as $param) {
+               $result = new MyReflectionProperty($this->getName(), 
$param->getName());
+       }
+       return $result;
+    }
+}
+?>

Added: experimental/Reflection/tests/test_classes/MyReflectionProperty.php
==============================================================================
--- experimental/Reflection/tests/test_classes/MyReflectionProperty.php (added)
+++ experimental/Reflection/tests/test_classes/MyReflectionProperty.php 
[iso-8859-1] Mon Dec 31 01:05:01 2007
@@ -1,0 +1,11 @@
+<?php
+class MyReflectionProperty extends ReflectionProperty {
+       public function change() {
+               return true;
+       }
+       
+       public function getDeclaringClass() {
+               return new 
MyReflectionClass(parent::getDeclaringClass()->getName());
+       }
+}
+?>

Added: experimental/Reflection/tests/test_classes/interface.php
==============================================================================
--- experimental/Reflection/tests/test_classes/interface.php (added)
+++ experimental/Reflection/tests/test_classes/interface.php [iso-8859-1] Mon 
Dec 31 01:05:01 2007
@@ -1,0 +1,5 @@
+<?php
+interface IInterface {
+       
+}
+?>


-- 
svn-components mailing list
svn-components@lists.ez.no
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to