]> granicus.if.org Git - php/commitdiff
Commit tests for ext/reflection
authorAnt Phillips <ant@php.net>
Mon, 17 Nov 2008 12:50:18 +0000 (12:50 +0000)
committerAnt Phillips <ant@php.net>
Mon, 17 Nov 2008 12:50:18 +0000 (12:50 +0000)
ext/reflection/tests/reflectionClass_export_basic1.phpt [new file with mode: 0644]
ext/reflection/tests/reflectionClass_export_basic2.phpt [new file with mode: 0644]
ext/reflection/tests/reflectionObject___toString_basic1.phpt [new file with mode: 0644]
ext/reflection/tests/reflectionObject___toString_basic2.phpt [new file with mode: 0644]
ext/reflection/tests/reflectionObject_export_basic1.phpt [new file with mode: 0644]
ext/reflection/tests/reflectionObject_export_basic2.phpt [new file with mode: 0644]
ext/reflection/tests/reflectionObject_export_basic3.phpt [new file with mode: 0644]
ext/reflection/tests/reflectionProperty_constructor_variation1.phpt [new file with mode: 0644]

diff --git a/ext/reflection/tests/reflectionClass_export_basic1.phpt b/ext/reflection/tests/reflectionClass_export_basic1.phpt
new file mode 100644 (file)
index 0000000..8729731
--- /dev/null
@@ -0,0 +1,62 @@
+--TEST--
+ReflectionClass::export() - various parameters
+--FILE--
+<?php
+Class A { 
+       public function privf(Exception $a) {}
+       public function pubf(A $a,
+                                                $b,
+                                                C $c = null,
+                                                $d = K,
+                                                $e = "15 chars long -",
+                                                $f = null,
+                                                $g = false,
+                                                array $h = null) {}
+}
+
+Class C extends A { }
+
+define('K', "16 chars long --");
+ReflectionClass::export("C");
+?>
+--EXPECTF--
+Class [ <user> class C extends A ] {
+  @@ %s 14-14
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [0] {
+  }
+
+  - Methods [2] {
+    Method [ <user, inherits A> public method privf ] {
+      @@ %s 3 - 3
+
+      - Parameters [1] {
+        Parameter #0 [ <required> Exception $a ]
+      }
+    }
+
+    Method [ <user, inherits A> public method pubf ] {
+      @@ %s 4 - 11
+
+      - Parameters [8] {
+        Parameter #0 [ <required> A $a ]
+        Parameter #1 [ <required> $b ]
+        Parameter #2 [ <optional> C or NULL $c = NULL ]
+        Parameter #3 [ <optional> $d = '16 chars long -...' ]
+        Parameter #4 [ <optional> $e = '15 chars long -' ]
+        Parameter #5 [ <optional> $f = NULL ]
+        Parameter #6 [ <optional> $g = false ]
+        Parameter #7 [ <optional> array or NULL $h = NULL ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/ext/reflection/tests/reflectionClass_export_basic2.phpt b/ext/reflection/tests/reflectionClass_export_basic2.phpt
new file mode 100644 (file)
index 0000000..b664488
--- /dev/null
@@ -0,0 +1,54 @@
+--TEST--
+ReflectionClass::export() - ensure inherited private props are hidden.
+--FILE--
+<?php
+Class c {
+       private $a;
+       static private $b;
+}
+
+class d extends c {}
+
+ReflectionClass::export("c");
+ReflectionClass::export("d");
+?>
+--EXPECTF--
+Class [ <user> class c ] {
+  @@ %s 2-5
+
+  - Constants [0] {
+  }
+
+  - Static properties [1] {
+    Property [ private static $b ]
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [1] {
+    Property [ <default> private $a ]
+  }
+
+  - Methods [0] {
+  }
+}
+
+Class [ <user> class d extends c ] {
+  @@ %s 7-7
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [0] {
+  }
+
+  - Methods [0] {
+  }
+}
\ No newline at end of file
diff --git a/ext/reflection/tests/reflectionObject___toString_basic1.phpt b/ext/reflection/tests/reflectionObject___toString_basic1.phpt
new file mode 100644 (file)
index 0000000..077ec74
--- /dev/null
@@ -0,0 +1,37 @@
+--TEST--
+ReflectionObject::__toString() : very basic test with no dynamic properties
+--FILE--
+<?php
+
+class Foo  {
+       public $bar = 1;
+}
+$f = new foo;
+
+echo new ReflectionObject($f);
+
+?>
+--EXPECTF--
+Object of class [ <user> class Foo ] {
+  @@ %s 3-5
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [1] {
+    Property [ <default> public $bar ]
+  }
+
+  - Dynamic properties [0] {
+  }
+
+  - Methods [0] {
+  }
+}
+
diff --git a/ext/reflection/tests/reflectionObject___toString_basic2.phpt b/ext/reflection/tests/reflectionObject___toString_basic2.phpt
new file mode 100644 (file)
index 0000000..332386a
--- /dev/null
@@ -0,0 +1,39 @@
+--TEST--
+ReflectionObject::__toString() : very basic test with dynamic properties
+--FILE--
+<?php
+
+class Foo  {
+       public $bar = 1;
+}
+$f = new foo;
+$f->dynProp = 'hello';
+$f->dynProp2 = 'hello again';
+echo new ReflectionObject($f);
+
+?>
+--EXPECTF--
+Object of class [ <user> class Foo ] {
+  @@ %s 3-5
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [1] {
+    Property [ <default> public $bar ]
+  }
+
+  - Dynamic properties [2] {
+    Property [ <dynamic> public $dynProp ]
+    Property [ <dynamic> public $dynProp2 ]
+  }
+
+  - Methods [0] {
+  }
+}
\ No newline at end of file
diff --git a/ext/reflection/tests/reflectionObject_export_basic1.phpt b/ext/reflection/tests/reflectionObject_export_basic1.phpt
new file mode 100644 (file)
index 0000000..f7dfef8
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+ReflectionObject::export() : very basic test with no dynamic properties
+--FILE--
+<?php
+
+class Foo  {
+       public $bar = 1;
+}
+$f = new foo;
+
+ReflectionObject::export($f);
+
+?>
+--EXPECTF--
+Object of class [ <user> class Foo ] {
+  @@ %s 3-5
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [1] {
+    Property [ <default> public $bar ]
+  }
+
+  - Dynamic properties [0] {
+  }
+
+  - Methods [0] {
+  }
+}
\ No newline at end of file
diff --git a/ext/reflection/tests/reflectionObject_export_basic2.phpt b/ext/reflection/tests/reflectionObject_export_basic2.phpt
new file mode 100644 (file)
index 0000000..277f06e
--- /dev/null
@@ -0,0 +1,39 @@
+--TEST--
+ReflectionObject::export() : very basic test with dynamic properties
+--FILE--
+<?php
+
+class Foo  {
+       public $bar = 1;
+}
+$f = new foo;
+$f->dynProp = 'hello';
+$f->dynProp2 = 'hello again';
+ReflectionObject::export($f);
+
+?>
+--EXPECTF--
+Object of class [ <user> class Foo ] {
+  @@ %s 3-5
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [1] {
+    Property [ <default> public $bar ]
+  }
+
+  - Dynamic properties [2] {
+    Property [ <dynamic> public $dynProp ]
+    Property [ <dynamic> public $dynProp2 ]
+  }
+
+  - Methods [0] {
+  }
+}
\ No newline at end of file
diff --git a/ext/reflection/tests/reflectionObject_export_basic3.phpt b/ext/reflection/tests/reflectionObject_export_basic3.phpt
new file mode 100644 (file)
index 0000000..7c1da34
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+ReflectionObject::export() - ensure dynamic property with same name as inherited private property is shown. 
+--FILE--
+<?php
+class C {
+       private $p = 1;
+}
+
+class D extends C{
+}
+
+$Obj = new D;
+$Obj->p = 'value';
+ReflectionObject::export($Obj)
+?>
+--EXPECTF--
+Object of class [ <user> class D extends C ] {
+  @@ %s 6-7
+
+  - Constants [0] {
+  }
+
+  - Static properties [0] {
+  }
+
+  - Static methods [0] {
+  }
+
+  - Properties [0] {
+  }
+
+  - Dynamic properties [0] {
+  }
+
+  - Methods [0] {
+  }
+}
+
diff --git a/ext/reflection/tests/reflectionProperty_constructor_variation1.phpt b/ext/reflection/tests/reflectionProperty_constructor_variation1.phpt
new file mode 100644 (file)
index 0000000..d614803
--- /dev/null
@@ -0,0 +1,58 @@
+--TEST--
+ReflectionProperty::__construct(): ensure inherited private props can't be accessed through ReflectionProperty.
+--FILE--
+<?php
+
+class C {
+       private $p = 1;
+       
+       static function testFromC() {
+               try {
+                 $rp = new ReflectionProperty("D", "p");
+                 var_dump($rp);
+               } catch (Exception $e) {
+                       echo $e->getMessage();
+               }               
+       }
+}
+
+class D extends C{
+       static function testFromD() {
+               try {
+                 $rp = new ReflectionProperty("D", "p");
+                 var_dump($rp);
+               } catch (Exception $e) {
+                       echo $e->getMessage();
+               }               
+       }
+}
+
+echo "--> Reflect inherited private from global scope:\n";
+try {
+  $rp = new ReflectionProperty("D", "p");
+  var_dump($rp);
+} catch (Exception $e) {
+       echo $e->getMessage();
+}
+
+echo "\n\n--> Reflect inherited private from declaring scope:\n";
+C::testFromC();
+
+echo "\n\n--> Reflect inherited private from declaring scope via subclass:\n";
+D::testFromC();
+
+echo "\n\n--> Reflect inherited private from subclass:\n";
+D::testFromD();
+?>
+--EXPECTF--
+--> Reflect inherited private from global scope:
+Property D::$p does not exist
+
+--> Reflect inherited private from declaring scope:
+Property D::$p does not exist
+
+--> Reflect inherited private from declaring scope via subclass:
+Property D::$p does not exist
+
+--> Reflect inherited private from subclass:
+Property D::$p does not exist
\ No newline at end of file