jay Mon Mar 3 11:44:38 2003 EDT
Added files:
/php4/tests/classes __call_001.phpt __clone_001.phpt
__set__get_001.phpt constants_scope_001.phpt
dereferencing_001.phpt factory_001.phpt
object_reference_001.phpt singleton_001.phpt
/php4/tests/lang error_2_exception_001.phpt namespace_001.phpt
Log:
Added some tests for ZE2 features and their functionality.
Index: php4/tests/classes/__call_001.phpt
+++ php4/tests/classes/__call_001.phpt
--TEST--
ZE2 __call()
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class Caller {
var $x = array(1, 2, 3);
function __call($m, $a) {
echo "Method $m called:\n";
var_dump($a);
return $this->x;
}
}
$foo = new Caller();
$a = $foo->test(1, '2', 3.4, true);
var_dump($a);
?>
--EXPECT--
Method test called:
array(4) {
[0]=>
int(1)
[1]=>
string(1) "2"
[2]=>
float(000000002)
[3]=>
bool(true)
}
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
Index: php4/tests/classes/__clone_001.phpt
+++ php4/tests/classes/__clone_001.phpt
--TEST--
ZE2 __clone()
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class MyCloneable {
static $id = 0;
function MyCloneable() {
$this->id = self::$id++;
}
function __clone() {
$this->name = $that->name;
$this->address = "New York";
$this->id = self::$id++;
}
}
$original = new MyCloneable();
$original->name = "Hello";
$original->address = "Tel-Aviv";
echo $original->id . "\n";
$clone = $original->__clone();
echo $clone->id . "\n";
echo $clone->name . "\n";
echo $clone->address . "\n";
?>
--EXPECT--
0
1
Hello
New York
Index: php4/tests/classes/__set__get_001.phpt
+++ php4/tests/classes/__set__get_001.phpt
--TEST--
ZE2 __set() and __get()
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class Setter {
public $n;
public $x = array('a' => 1, 'b' => 2, 'c' => 3);
function __get($nm) {
echo "Getting [$nm]\n";
if (isset($this->x[$nm])) {
$r = $this->x[$nm];
echo "Returning: $r\n";
return $r;
}
else {
echo "Nothing!\n";
}
}
function __set($nm, $val) {
echo "Setting [$nm] to $val\n";
if (isset($this->x[$nm])) {
$this->x[$nm] = $val;
echo "OK!\n";
}
else {
echo "Not OK!\n";
}
}
}
$foo = new Setter();
// this doesn't go through __set()... should it?
$foo->n = 1;
// the rest are fine...
$foo->a = 100;
$foo->a++;
$foo->z++;
var_dump($foo);
?>
--EXPECT--
Setting [a] to 100
OK!
Getting [a]
Returning: 100
Setting [a] to 101
OK!
Getting [z]
Nothing!
Setting [z] to 1
Not OK!
object(setter)(2) {
["n"]=>
int(1)
["x"]=>
array(3) {
["a"]=>
int(101)
["b"]=>
int(2)
["c"]=>
int(3)
}
}
Index: php4/tests/classes/constants_scope_001.phpt
+++ php4/tests/classes/constants_scope_001.phpt
--TEST--
ZE2 class constants and scope
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class ErrorCodes {
const FATAL = "Fatal error\n";
const WARNING = "Warning\n";
const INFO = "Informational message\n";
static function print_fatal_error_codes() {
echo "FATAL = " . FATAL;
echo "self::FATAL = " . self::FATAL;
}
}
/* Call the static function and move into the ErrorCodes scope */
ErrorCodes::print_fatal_error_codes();
?>
--EXPECT--
FATAL = Fatal error
self::FATAL = Fatal error
Index: php4/tests/classes/dereferencing_001.phpt
+++ php4/tests/classes/dereferencing_001.phpt
--TEST--
ZE2 dereferencing of objects from methods
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class Name {
function Name($_name) {
$this->name = $_name;
}
function display() {
echo $this->name . "\n";
}
}
class Person {
private $name;
function Person($_name, $_address) {
$this->name = new Name($_name);
}
function getName() {
return $this->name;
}
}
$person = new Person("John", "New York");
$person->getName()->display();
?>
--EXPECT--
John
Index: php4/tests/classes/factory_001.phpt
+++ php4/tests/classes/factory_001.phpt
--TEST--
ZE2 factory objects
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class Circle {
function draw() {
echo "Circle\n";
}
}
class Square {
function draw() {
print "Square\n";
}
}
function ShapeFactoryMethod($shape) {
switch ($shape) {
case "Circle":
return new Circle();
case "Square":
return new Square();
}
}
ShapeFactoryMethod("Circle")->draw();
ShapeFactoryMethod("Square")->draw();
?>
--EXPECT--
Circle
Square
Index: php4/tests/classes/object_reference_001.phpt
+++ php4/tests/classes/object_reference_001.phpt
--TEST--
ZE2 object references
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class Foo {
var $name;
function Foo() {
$this->name = "I'm Foo!\n";
}
}
$foo = new Foo;
echo $foo->name;
$bar = $foo;
$bar->name = "I'm Bar!\n";
// In ZE1, we would expect "I'm Foo!"
echo $foo->name;
?>
--EXPECT--
I'm Foo!
I'm Bar!
Index: php4/tests/classes/singleton_001.phpt
+++ php4/tests/classes/singleton_001.phpt
--TEST--
ZE2 singleton
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class Counter {
private $counter = 0;
function increment_and_print() {
echo ++$this->counter;
echo "\n";
}
}
class SingletonCounter {
private static $m_instance = NULL;
static function Instance() {
if (self::$m_instance == NULL) {
self::$m_instance = new Counter();
}
return self::$m_instance;
}
}
SingletonCounter::Instance()->increment_and_print();
SingletonCounter::Instance()->increment_and_print();
SingletonCounter::Instance()->increment_and_print();
?>
--EXPECT--
1
2
3
Index: php4/tests/lang/error_2_exception_001.phpt
+++ php4/tests/lang/error_2_exception_001.phpt
--TEST--
ZE2 errors caught as exceptions
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
class MyException {
function MyException($_errno, $_errmsg) {
$this->errno = $_errno;
$this->errmsg = $_errmsg;
}
function getErrno() {
return $this->errno;
}
function getErrmsg() {
return $this->errmsg;
}
}
function ErrorsToExceptions($errno, $errmsg) {
throw new MyException($errno, $errmsg);
}
set_error_handler("ErrorsToExceptions");
// make sure it isn't catching exceptions that weren't
// thrown...
try {
} catch (MyException $exception) {
echo "There was an exception: " . $exception->getErrno() . ", '" .
$exception->getErrmsg() . "'\n";
}
try {
trigger_error("I will become an exception", E_USER_ERROR);
} catch (MyException $exception) {
echo "There was an exception: " . $exception->getErrno() . ", '" .
$exception->getErrmsg() . "'\n";
}
?>
--EXPECT--
There was an exception: 256, 'I will become an exception'
Index: php4/tests/lang/namespace_001.phpt
+++ php4/tests/lang/namespace_001.phpt
--TEST--
ZE2 namespaces
--SKIPIF--
<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2
needed'); ?>
--FILE--
<?php
namespace Foo {
var $bar;
function SomeFunction() {
echo "I'm Foo::SomeFunction()! Foo::\$bar is set to: " . Foo::$bar;
}
class SomeClass {
function __construct() {
echo "I'm Foo::SomeClass::__construct()!\n";
echo Foo::$bar;
}
}
}
Foo::$bar = "I'm Foo::\$bar!\n";
Foo::SomeFunction();
$someClass = new Foo::SomeClass;
?>
--EXPECT--
I'm Foo::SomeFunction()! Foo::$bar is set to: I'm Foo::$bar!
I'm Foo::SomeClass::__construct()!
I'm Foo::$bar!
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php