summaryrefslogtreecommitdiff
path: root/ext/reflection/tests
diff options
context:
space:
mode:
authorAnt Phillips <ant@php.net>2008-11-17 11:20:19 +0000
committerAnt Phillips <ant@php.net>2008-11-17 11:20:19 +0000
commit29023692ce968b24b2462496cb6944d0c39619b0 (patch)
treec613da8d2eb0db343750e5155113b49fc7445843 /ext/reflection/tests
parentbb8070433218d7d254e21d04022240afc2c54fdb (diff)
downloadphp-git-29023692ce968b24b2462496cb6944d0c39619b0.tar.gz
Commit tests for ext/reflection
Diffstat (limited to 'ext/reflection/tests')
-rw-r--r--ext/reflection/tests/reflectionClass_export_basic1.phpt62
-rw-r--r--ext/reflection/tests/reflectionClass_export_basic2.phpt54
-rw-r--r--ext/reflection/tests/reflectionClass_getExtensionName_basic.phpt14
-rw-r--r--ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt20
-rw-r--r--ext/reflection/tests/reflectionClass_getExtension_basic.phpt17
-rw-r--r--ext/reflection/tests/reflectionClass_getExtension_variation.phpt20
-rw-r--r--ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt25
-rw-r--r--ext/reflection/tests/reflectionClass_getModifiers_basic.phpt39
-rw-r--r--ext/reflection/tests/reflectionClass_getParentClass.phpt21
-rw-r--r--ext/reflection/tests/reflectionClass_hasConstant_basic.phpt23
-rw-r--r--ext/reflection/tests/reflectionClass_hasMethod_basic.phpt57
-rw-r--r--ext/reflection/tests/reflectionClass_hasProperty_basic.phpt38
-rw-r--r--ext/reflection/tests/reflectionClass_isAbstract_basic.phpt23
-rw-r--r--ext/reflection/tests/reflectionClass_isFinal_basic.phpt23
-rw-r--r--ext/reflection/tests/reflectionClass_isInterface_basic.phpt27
-rw-r--r--ext/reflection/tests/reflectionClass_isIterateable_basic.phpt36
-rw-r--r--ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt27
-rw-r--r--ext/reflection/tests/reflectionObject___toString_basic1.phpt36
-rw-r--r--ext/reflection/tests/reflectionObject___toString_basic2.phpt39
-rw-r--r--ext/reflection/tests/reflectionObject_export_basic1.phpt36
-rw-r--r--ext/reflection/tests/reflectionObject_export_basic2.phpt39
-rw-r--r--ext/reflection/tests/reflectionObject_export_basic3.phpt38
-rw-r--r--ext/reflection/tests/reflectionProperty_constructor_variation1.phpt58
23 files changed, 772 insertions, 0 deletions
diff --git a/ext/reflection/tests/reflectionClass_export_basic1.phpt b/ext/reflection/tests/reflectionClass_export_basic1.phpt
new file mode 100644
index 0000000000..8729731f56
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_export_basic1.phpt
@@ -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
index 0000000000..b6644883ee
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_export_basic2.phpt
@@ -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/reflectionClass_getExtensionName_basic.phpt b/ext/reflection/tests/reflectionClass_getExtensionName_basic.phpt
new file mode 100644
index 0000000000..7813cca315
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_getExtensionName_basic.phpt
@@ -0,0 +1,14 @@
+--TEST--
+ReflectionClass::getExtensionName() method - basic test for getExtensionName() method
+--SKIPIF--
+<?php extension_loaded('reflection') && extension_loaded('dom') or die('skip - reflection or dom extension not loaded'); ?>
+--CREDITS--
+Rein Velt <rein@velt.org>
+#testFest Roosendaal 2008-05-10
+--FILE--
+<?php
+ $rc=new reflectionClass('domDocument');
+ var_dump( $rc->getExtensionName()) ;
+?>
+--EXPECT--
+string(3) "dom"
diff --git a/ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt b/ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt
new file mode 100644
index 0000000000..35372c4f84
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_getExtensionName_variation.phpt
@@ -0,0 +1,20 @@
+--TEST--
+ReflectionClass::getExtensionName() method - variation test for getExtensionName()
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip - reflection extension not loaded'); ?>
+--CREDITS--
+Rein Velt <rein@velt.org>
+#testFest Roosendaal 2008-05-10
+--FILE--
+<?php
+
+ class myClass
+ {
+ public $varX;
+ public $varY;
+ }
+ $rc=new reflectionClass('myClass');
+ var_dump( $rc->getExtensionName()) ;
+?>
+--EXPECT--
+bool(false) \ No newline at end of file
diff --git a/ext/reflection/tests/reflectionClass_getExtension_basic.phpt b/ext/reflection/tests/reflectionClass_getExtension_basic.phpt
new file mode 100644
index 0000000000..efc1ed8eed
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_getExtension_basic.phpt
@@ -0,0 +1,17 @@
+--TEST--
+ReflectionClass::getExtension() method - basic test for getExtension() method
+--SKIPIF--
+<?php extension_loaded('reflection') && extension_loaded('dom') or die('skip - reflection or dom extension not loaded'); ?>
+--CREDITS--
+Rein Velt <rein@velt.org>
+#testFest Roosendaal 2008-05-10
+--FILE--
+<?php
+ $rc=new reflectionClass('domDocument');
+ var_dump($rc->getExtension()) ;
+?>
+--EXPECTF--
+object(ReflectionExtension)#%d (1) {
+ ["name"]=>
+ string(3) "dom"
+} \ No newline at end of file
diff --git a/ext/reflection/tests/reflectionClass_getExtension_variation.phpt b/ext/reflection/tests/reflectionClass_getExtension_variation.phpt
new file mode 100644
index 0000000000..f2272777a0
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_getExtension_variation.phpt
@@ -0,0 +1,20 @@
+--TEST--
+ReflectionClass::getExtension() method - variation test for getExtension()
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip - reflection extension not loaded'); ?>
+--CREDITS--
+Rein Velt <rein@velt.org>
+#testFest Roosendaal 2008-05-10
+--FILE--
+<?php
+
+ class myClass
+ {
+ public $varX;
+ public $varY;
+ }
+ $rc=new reflectionClass('myClass');
+ var_dump( $rc->getExtension()) ;
+?>
+--EXPECT--
+NULL \ No newline at end of file
diff --git a/ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt b/ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt
new file mode 100644
index 0000000000..abbaa35f5c
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_getInterfaceNames_basic.phpt
@@ -0,0 +1,25 @@
+--TEST--
+ReflectionClass::getInterfaceNames()
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip - reflection extension not loaded'); ?>
+--CREDITS--
+Michelangelo van Dam <dragonbe@gmail.com>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+interface Foo { }
+
+interface Bar { }
+
+class Baz implements Foo, Bar { }
+
+$rc1 = new ReflectionClass("Baz");
+var_dump($rc1->getInterfaceNames());
+?>
+--EXPECT--
+array(2) {
+ [0]=>
+ string(3) "Foo"
+ [1]=>
+ string(3) "Bar"
+}
diff --git a/ext/reflection/tests/reflectionClass_getModifiers_basic.phpt b/ext/reflection/tests/reflectionClass_getModifiers_basic.phpt
new file mode 100644
index 0000000000..33a2539b95
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_getModifiers_basic.phpt
@@ -0,0 +1,39 @@
+--TEST--
+ReflectionClass::getModifiers()
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+--FILE--
+<?php
+
+class a {}
+abstract class b {}
+final class c {}
+interface d {}
+class e implements d {}
+interface f extends d {}
+class g extends b {}
+
+function dump_modifiers($class) {
+ $obj = new ReflectionClass($class);
+ var_dump($obj->getModifiers());
+}
+
+dump_modifiers('a');
+dump_modifiers('b');
+dump_modifiers('c');
+dump_modifiers('d');
+dump_modifiers('e');
+dump_modifiers('f');
+dump_modifiers('g');
+
+?>
+--EXPECT--
+int(0)
+int(32)
+int(64)
+int(128)
+int(0)
+int(128)
+int(0) \ No newline at end of file
diff --git a/ext/reflection/tests/reflectionClass_getParentClass.phpt b/ext/reflection/tests/reflectionClass_getParentClass.phpt
new file mode 100644
index 0000000000..46884ca2ba
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_getParentClass.phpt
@@ -0,0 +1,21 @@
+--TEST--
+ReflectionClass::getParentClass()
+--CREDITS--
+Michelangelo van Dam <dragonbe@gmail.com>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+
+class Foo {}
+
+class Bar extends Foo {}
+
+$rc1 = new ReflectionClass("Bar");
+var_dump($rc1->getParentClass());
+?>
+
+--EXPECTF--
+object(ReflectionClass)#%d (1) {
+ ["name"]=>
+ string(3) "Foo"
+}
diff --git a/ext/reflection/tests/reflectionClass_hasConstant_basic.phpt b/ext/reflection/tests/reflectionClass_hasConstant_basic.phpt
new file mode 100644
index 0000000000..49570150c7
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_hasConstant_basic.phpt
@@ -0,0 +1,23 @@
+--TEST--
+ReflectionClass::hasConstant()
+--CREDIT--
+Marc Veldman <marc@ibuildings.nl>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+//New instance of class C - defined below
+$rc = new ReflectionClass("C");
+
+//Check if C has constant foo
+var_dump($rc->hasConstant('foo'));
+
+//C should not have constant bar
+var_dump($rc->hasConstant('bar'));
+
+Class C {
+ const foo=1;
+}
+?>
+--EXPECTF--
+bool(true)
+bool(false)
diff --git a/ext/reflection/tests/reflectionClass_hasMethod_basic.phpt b/ext/reflection/tests/reflectionClass_hasMethod_basic.phpt
new file mode 100644
index 0000000000..3ef5ac9202
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_hasMethod_basic.phpt
@@ -0,0 +1,57 @@
+--TEST--
+ReflectionClass::hasMethod()
+--CREDIT--
+Marc Veldman <marc@ibuildings.nl>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+//New instance of class C - defined below
+$rc = new ReflectionClass("C");
+
+//Check if C has public method publicFoo
+var_dump($rc->hasMethod('publicFoo'));
+
+//Check if C has protected method protectedFoo
+var_dump($rc->hasMethod('protectedFoo'));
+
+//Check if C has private method privateFoo
+var_dump($rc->hasMethod('privateFoo'));
+
+//Check if C has static method staticFoo
+var_dump($rc->hasMethod('staticFoo'));
+
+//C should not have method bar
+var_dump($rc->hasMethod('bar'));
+
+//Method names are case insensitive
+var_dump($rc->hasMethod('PUBLICfOO'));
+
+Class C {
+ public function publicFoo()
+ {
+ return true;
+ }
+
+ protected function protectedFoo()
+ {
+ return true;
+ }
+
+ private function privateFoo()
+ {
+ return true;
+ }
+
+ static function staticFoo()
+ {
+ return true;
+ }
+}
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(false)
+bool(true)
diff --git a/ext/reflection/tests/reflectionClass_hasProperty_basic.phpt b/ext/reflection/tests/reflectionClass_hasProperty_basic.phpt
new file mode 100644
index 0000000000..b3264e01ed
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_hasProperty_basic.phpt
@@ -0,0 +1,38 @@
+--TEST--
+ReflectionClass::hasProperty()
+--CREDIT--
+Marc Veldman <marc@ibuildings.nl>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+//New instance of class C - defined below
+$rc = new ReflectionClass("C");
+
+//Check if C has public property publicFoo
+var_dump($rc->hasProperty('publicFoo'));
+
+//Check if C has protected property protectedFoo
+var_dump($rc->hasProperty('protectedFoo'));
+
+//Check if C has private property privateFoo
+var_dump($rc->hasProperty('privateFoo'));
+
+//Check if C has static property staticFoo
+var_dump($rc->hasProperty('staticFoo'));
+
+//C should not have property bar
+var_dump($rc->hasProperty('bar'));
+
+Class C {
+ public $publicFoo;
+ protected $protectedFoo;
+ private $privateFoo;
+ public static $staticFoo;
+}
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(false)
diff --git a/ext/reflection/tests/reflectionClass_isAbstract_basic.phpt b/ext/reflection/tests/reflectionClass_isAbstract_basic.phpt
new file mode 100644
index 0000000000..7a3d577ef6
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_isAbstract_basic.phpt
@@ -0,0 +1,23 @@
+--TEST--
+ReflectionClass::isAbstract() method
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip - reflection extension not loaded'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+
+class TestClass {}
+abstract class TestAbstractClass {}
+
+$testClass = new ReflectionClass('TestClass');
+$abstractClass = new ReflectionClass('TestAbstractClass');
+
+var_dump($testClass->isAbstract());
+var_dump($abstractClass->isAbstract());
+
+?>
+--EXPECT--
+bool(false)
+bool(true)
diff --git a/ext/reflection/tests/reflectionClass_isFinal_basic.phpt b/ext/reflection/tests/reflectionClass_isFinal_basic.phpt
new file mode 100644
index 0000000000..efa131724e
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_isFinal_basic.phpt
@@ -0,0 +1,23 @@
+--TEST--
+ReflectionClass::isFinal() method
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip - reflection extension not loaded'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+
+class TestClass {}
+final class TestFinalClass {}
+
+$normalClass = new ReflectionClass('TestClass');
+$finalClass = new ReflectionClass('TestFinalClass');
+
+var_dump($normalClass->isFinal());
+var_dump($finalClass->isFinal());
+
+?>
+--EXPECT--
+bool(false)
+bool(true)
diff --git a/ext/reflection/tests/reflectionClass_isInterface_basic.phpt b/ext/reflection/tests/reflectionClass_isInterface_basic.phpt
new file mode 100644
index 0000000000..2870725e83
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_isInterface_basic.phpt
@@ -0,0 +1,27 @@
+--TEST--
+ReflectionClass::isInterface() method
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+#testfest roosendaal on 2008-05-10
+--FILE--
+<?php
+
+interface TestInterface {}
+class TestClass {}
+interface DerivedInterface extends TestInterface {}
+
+$reflectionClass = new ReflectionClass('TestInterface');
+$reflectionClass2 = new ReflectionClass('TestClass');
+$reflectionClass3 = new ReflectionClass('DerivedInterface');
+
+var_dump($reflectionClass->isInterface());
+var_dump($reflectionClass2->isInterface());
+var_dump($reflectionClass3->isInterface());
+
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
diff --git a/ext/reflection/tests/reflectionClass_isIterateable_basic.phpt b/ext/reflection/tests/reflectionClass_isIterateable_basic.phpt
new file mode 100644
index 0000000000..3e1228af25
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_isIterateable_basic.phpt
@@ -0,0 +1,36 @@
+--TEST--
+ReflectionClass::isIterateable() basic
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>, Marc Veldman <marc@ibuildings.nl>
+--FILE--
+<?php
+
+class IteratorClass implements Iterator {
+ public function __construct() { }
+ public function key() {}
+ public function current() {}
+ function next() {}
+ function valid() {}
+ function rewind() {}
+}
+class DerivedClass extends IteratorClass {}
+class NonIterator {}
+
+function dump_iterateable($class) {
+ $reflection = new ReflectionClass($class);
+ var_dump($reflection->isIterateable());
+}
+
+$classes = array("ArrayObject", "IteratorClass", "DerivedClass", "NonIterator");
+foreach ($classes as $class) {
+ echo "Is $class iterateable? ";
+ dump_iterateable($class);
+}
+?>
+--EXPECT--
+Is ArrayObject iterateable? bool(true)
+Is IteratorClass iterateable? bool(true)
+Is DerivedClass iterateable? bool(true)
+Is NonIterator iterateable? bool(false)
diff --git a/ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt b/ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt
new file mode 100644
index 0000000000..6d737bb893
--- /dev/null
+++ b/ext/reflection/tests/reflectionClass_isIterateable_variation1.phpt
@@ -0,0 +1,27 @@
+--TEST--
+ReflectionClass::isIterateable() variations
+--SKIPIF--
+<?php extension_loaded('reflection') or die('skip'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+--FILE--
+<?php
+
+class BasicClass {}
+
+function dump_iterateable($obj)
+{
+ $reflection = new ReflectionClass($obj);
+ var_dump($reflection->isIterateable());
+}
+
+$basicClass = new BasicClass();
+$stdClass = new StdClass();
+
+dump_iterateable($basicClass);
+dump_iterateable($stdClass);
+
+?>
+--EXPECT--
+bool(false)
+bool(false)
diff --git a/ext/reflection/tests/reflectionObject___toString_basic1.phpt b/ext/reflection/tests/reflectionObject___toString_basic1.phpt
new file mode 100644
index 0000000000..fefa220c9e
--- /dev/null
+++ b/ext/reflection/tests/reflectionObject___toString_basic1.phpt
@@ -0,0 +1,36 @@
+--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] {
+ }
+} \ No newline at end of file
diff --git a/ext/reflection/tests/reflectionObject___toString_basic2.phpt b/ext/reflection/tests/reflectionObject___toString_basic2.phpt
new file mode 100644
index 0000000000..332386afd3
--- /dev/null
+++ b/ext/reflection/tests/reflectionObject___toString_basic2.phpt
@@ -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
index 0000000000..f7dfef8670
--- /dev/null
+++ b/ext/reflection/tests/reflectionObject_export_basic1.phpt
@@ -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
index 0000000000..277f06eaf5
--- /dev/null
+++ b/ext/reflection/tests/reflectionObject_export_basic2.phpt
@@ -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
index 0000000000..7c1da34c93
--- /dev/null
+++ b/ext/reflection/tests/reflectionObject_export_basic3.phpt
@@ -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
index 0000000000..d61480377c
--- /dev/null
+++ b/ext/reflection/tests/reflectionProperty_constructor_variation1.phpt
@@ -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