Tests for reflectionClass

This commit is contained in:
Zoe Slattery 2007-07-10 16:21:26 +00:00
parent e51458cd76
commit a8b455aa5b
8 changed files with 438 additions and 0 deletions

View file

@ -0,0 +1,40 @@
--TEST--
ReflectionClass::getFileName(), ReflectionClass::getStartLine(), ReflectionClass::getEndLine()
--FILE--
<?php
//New instance of class C - defined below
$rc = new ReflectionClass("C");
//Get the file name of the PHP script in which C is defined
var_dump($rc->getFileName());
//Get the line number at the start of the definition of class C
var_dump($rc->getStartLine());
//Get the line number at the end of the definition of class C
var_dump($rc->getEndLine());
//Same tests as above but stdclass is internal - so all results should be false.
$rc = new ReflectionClass("stdClass");
var_dump($rc->getFileName());
var_dump($rc->getStartLine());
var_dump($rc->getEndLine());
Class C {
}
?>
--EXPECTF--
string(%d) "%sreflectionClass_FileInfo_basic.php"
int(20)
int(22)
bool(false)
bool(false)
bool(false)
--UEXPECTF--
unicode(%d) "%sreflectionClass_FileInfo_basic.php"
int(20)
int(22)
bool(false)
bool(false)
bool(false)

View file

@ -0,0 +1,59 @@
--TEST--
ReflectionClass::getFileName(), ReflectionClass::getStartLine(), ReflectionClass::getEndLine() - bad params
--FILE--
<?php
Class C { }
$rc = new ReflectionClass("C");
$methods = array("getFileName", "getStartLine", "getEndLine");
foreach ($methods as $method) {
var_dump($rc->$method());
var_dump($rc->$method(null));
var_dump($rc->$method('X', 0));
}
?>
--EXPECTF--
string(%d) "%s"
Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 9
NULL
Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 10
NULL
int(2)
Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 9
NULL
Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 10
NULL
int(2)
Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 9
NULL
Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 10
NULL
--UEXPECTF--
unicode(%d) "%s"
Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 9
NULL
Warning: Wrong parameter count for ReflectionClass::getFileName() in %s on line 10
NULL
int(2)
Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 9
NULL
Warning: Wrong parameter count for ReflectionClass::getStartLine() in %s on line 10
NULL
int(2)
Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 9
NULL
Warning: Wrong parameter count for ReflectionClass::getEndLine() in %s on line 10
NULL

View file

@ -0,0 +1,57 @@
--TEST--
ReflectionClass::getConstants()
--FILE--
<?php
class C {
const a = 'hello from C';
}
class D extends C {
}
class E extends D {
}
class F extends E {
const a = 'hello from F';
}
class X {
}
$classes = array("C", "D", "E", "F", "X");
foreach($classes as $class) {
echo "Reflecting on class $class: \n";
$rc = new ReflectionClass($class);
var_dump($rc->getConstant('a'));
var_dump($rc->getConstant('doesntexist'));
}
?>
--EXPECTF--
Reflecting on class C:
string(12) "hello from C"
bool(false)
Reflecting on class D:
string(12) "hello from C"
bool(false)
Reflecting on class E:
string(12) "hello from C"
bool(false)
Reflecting on class F:
string(12) "hello from F"
bool(false)
Reflecting on class X:
bool(false)
bool(false)
--UEXPECTF--
Reflecting on class C:
unicode(12) "hello from C"
bool(false)
Reflecting on class D:
unicode(12) "hello from C"
bool(false)
Reflecting on class E:
unicode(12) "hello from C"
bool(false)
Reflecting on class F:
unicode(12) "hello from F"
bool(false)
Reflecting on class X:
bool(false)
bool(false)

View file

@ -0,0 +1,55 @@
--TEST--
ReflectionClass::getConstant() - bad params
--FILE--
<?php
class C {
const myConst = 1;
}
$rc = new ReflectionClass("C");
echo "Check invalid params:\n";
var_dump($rc->getConstant());
var_dump($rc->getConstant("myConst", "myConst"));
var_dump($rc->getConstant(null));
var_dump($rc->getConstant(1));
var_dump($rc->getConstant(1.5));
var_dump($rc->getConstant(true));
var_dump($rc->getConstant(array(1,2,3)));
var_dump($rc->getConstant(new C));
?>
--EXPECTF--
Check invalid params:
Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 0 given in %s on line 8
NULL
Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 2 given in %s on line 9
NULL
bool(false)
bool(false)
bool(false)
bool(false)
Warning: ReflectionClass::getConstant() expects parameter 1 to be string (Unicode or binary), array given in %s on line 14
NULL
Warning: ReflectionClass::getConstant() expects parameter 1 to be string (Unicode or binary), object given in %s on line 15
NULL
--UEXPECTF--
Check invalid params:
Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 0 given in %s on line 8
NULL
Warning: ReflectionClass::getConstant() expects exactly 1 parameter, 2 given in %s on line 9
NULL
bool(false)
bool(false)
bool(false)
bool(false)
Warning: ReflectionClass::getConstant() expects parameter 1 to be string (Unicode or binary), array given in %s on line 14
NULL
Warning: ReflectionClass::getConstant() expects parameter 1 to be string (Unicode or binary), object given in %s on line 15
NULL

View file

@ -0,0 +1,72 @@
--TEST--
ReflectionClass::getConstants()
--FILE--
<?php
class C {
const a = 'hello from C';
}
class D extends C {
}
class E extends D {
}
class F extends E {
const a = 'hello from F';
}
class X {
}
$classes = array('C', 'D', 'E', 'F', 'X');
foreach($classes as $class) {
echo "Constants from class $class: \n";
$rc = new ReflectionClass($class);
var_dump($rc->getConstants());
}
?>
--EXPECTF--
Constants from class C:
array(1) {
["a"]=>
string(12) "hello from C"
}
Constants from class D:
array(1) {
["a"]=>
string(12) "hello from C"
}
Constants from class E:
array(1) {
["a"]=>
string(12) "hello from C"
}
Constants from class F:
array(1) {
["a"]=>
string(12) "hello from F"
}
Constants from class X:
array(0) {
}
--UEXPECTF--
Constants from class C:
array(1) {
[u"a"]=>
unicode(12) "hello from C"
}
Constants from class D:
array(1) {
[u"a"]=>
unicode(12) "hello from C"
}
Constants from class E:
array(1) {
[u"a"]=>
unicode(12) "hello from C"
}
Constants from class F:
array(1) {
[u"a"]=>
unicode(12) "hello from F"
}
Constants from class X:
array(0) {
}

View file

@ -0,0 +1,32 @@
--TEST--
ReflectionClass::getConstants()
--FILE--
<?php
class X {
}
$rc = new reflectionClass('X');
//Test invalid arguments
$rc->getConstants('X');
$rc->getConstants(true);
$rc->getConstants(null);
$rc->getConstants('A', 'B');
?>
--EXPECTF--
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 8
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 9
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 10
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 11
--UEXPECTF--
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 8
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 9
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 10
Warning: Wrong parameter count for ReflectionClass::getConstants() in %s on line 11

View file

@ -0,0 +1,99 @@
--TEST--
ReflectionClass::getConstructor()
--FILE--
<?php
class NewCtor {
function __construct() {}
}
class ExtendsNewCtor extends NewCtor {
}
class OldCtor {
function OldCtor() {}
}
class ExtendsOldCtor extends OldCtor {
}
class X {
function Y() {}
}
class Y extends X {
}
class OldAndNewCtor {
function OldAndNewCtor() {}
function __construct() {}
}
class NewAndOldCtor {
function __construct() {}
function NewAndOldCtor() {}
}
class B {
function B() {}
}
class C extends B {
function C() {}
}
class D1 extends C {
function __construct() {}
}
class D2 extends C {
}
$classes = array('NewCtor', 'ExtendsNewCtor', 'OldCtor', 'ExtendsOldCtor',
'OldAndNewCtor', 'NewAndOldCtor', 'B', 'C', 'D1', 'D2', 'X', 'Y');
foreach ($classes as $class) {
$rc = new ReflectionClass($class);
$rm = $rc->getConstructor();
if ($rm != null) {
echo "Constructor of $class: " . $rm->getName() . "\n";
} else {
echo "No constructor for $class\n";
}
}
?>
--EXPECTF--
Strict Standards: Redefining already defined constructor for class OldAndNewCtor in %s on line 26
Strict Standards: %s for class NewAndOldCtor in %s on line 31
Constructor of NewCtor: __construct
Constructor of ExtendsNewCtor: __construct
Constructor of OldCtor: OldCtor
Constructor of ExtendsOldCtor: OldCtor
Constructor of OldAndNewCtor: __construct
Constructor of NewAndOldCtor: __construct
Constructor of B: B
Constructor of C: C
Constructor of D1: __construct
Constructor of D2: C
No constructor for X
No constructor for Y
--UEXPECTF--
Strict Standards: Redefining already defined constructor for class OldAndNewCtor in %s on line 26
Strict Standards: %s for class NewAndOldCtor in %s on line 31
Constructor of NewCtor: __construct
Constructor of ExtendsNewCtor: __construct
Constructor of OldCtor: OldCtor
Constructor of ExtendsOldCtor: OldCtor
Constructor of OldAndNewCtor: __construct
Constructor of NewAndOldCtor: __construct
Constructor of B: B
Constructor of C: C
Constructor of D1: __construct
Constructor of D2: C
No constructor for X
No constructor for Y

View file

@ -0,0 +1,24 @@
--TEST--
ReflectionClass::getConstructor() - bad params
--FILE--
<?php
class C {}
$rc = new ReflectionClass('C');
var_dump($rc->getConstructor(null));
var_dump($rc->getConstructor('X'));
var_dump($rc->getConstructor(true));
var_dump($rc->getConstructor(array(1,2,3)));
?>
--EXPECTF--
Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 4
NULL
Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 5
NULL
Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 6
NULL
Warning: Wrong parameter count for ReflectionClass::getConstructor() in %s on line 7
NULL