mirror of
https://github.com/php/php-src.git
synced 2025-08-19 08:49:28 +02:00
Commit tests for ext/reflection
This commit is contained in:
parent
43791516db
commit
d7ed58db8b
8 changed files with 363 additions and 0 deletions
62
ext/reflection/tests/reflectionClass_export_basic1.phpt
Normal file
62
ext/reflection/tests/reflectionClass_export_basic1.phpt
Normal file
|
@ -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 ]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
54
ext/reflection/tests/reflectionClass_export_basic2.phpt
Normal file
54
ext/reflection/tests/reflectionClass_export_basic2.phpt
Normal file
|
@ -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] {
|
||||
}
|
||||
}
|
37
ext/reflection/tests/reflectionObject___toString_basic1.phpt
Normal file
37
ext/reflection/tests/reflectionObject___toString_basic1.phpt
Normal file
|
@ -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] {
|
||||
}
|
||||
}
|
||||
|
39
ext/reflection/tests/reflectionObject___toString_basic2.phpt
Normal file
39
ext/reflection/tests/reflectionObject___toString_basic2.phpt
Normal file
|
@ -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] {
|
||||
}
|
||||
}
|
36
ext/reflection/tests/reflectionObject_export_basic1.phpt
Normal file
36
ext/reflection/tests/reflectionObject_export_basic1.phpt
Normal file
|
@ -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] {
|
||||
}
|
||||
}
|
39
ext/reflection/tests/reflectionObject_export_basic2.phpt
Normal file
39
ext/reflection/tests/reflectionObject_export_basic2.phpt
Normal file
|
@ -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] {
|
||||
}
|
||||
}
|
38
ext/reflection/tests/reflectionObject_export_basic3.phpt
Normal file
38
ext/reflection/tests/reflectionObject_export_basic3.phpt
Normal file
|
@ -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] {
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue