]> granicus.if.org Git - php/commitdiff
- Add new tests
authorMarcus Boerger <helly@php.net>
Wed, 29 Sep 2004 09:36:23 +0000 (09:36 +0000)
committerMarcus Boerger <helly@php.net>
Wed, 29 Sep 2004 09:36:23 +0000 (09:36 +0000)
tests/classes/array_access_008.phpt [new file with mode: 0755]
tests/classes/destructor_and_exceptions.phpt [new file with mode: 0755]

diff --git a/tests/classes/array_access_008.phpt b/tests/classes/array_access_008.phpt
new file mode 100755 (executable)
index 0000000..84ecf08
--- /dev/null
@@ -0,0 +1,58 @@
+--TEST--
+ZE2 ArrayAccess and ASSIGN_OP operators (.=) 
+--FILE--
+<?php 
+
+class Peoples implements ArrayAccess {
+       public $person;
+       
+       function __construct() {
+               $this->person = array(array('name'=>'Foo'));
+       }
+
+       function offsetExists($index) {
+               return array_key_exists($this->person, $index);
+       }
+
+       function & offsetGet($index) {
+               return $this->person[$index];
+       }
+
+       function offsetSet($index, $value) {
+               $this->person[$index] = $value;
+       }
+
+       function offsetUnset($index) {
+               unset($this->person[$index]);
+       }
+}
+
+$people = new Peoples;
+
+var_dump($people->person[0]['name']);
+$people->person[0]['name'] = $people->person[0]['name'] . 'Bar';
+var_dump($people->person[0]['name']);
+$people->person[0]['name'] .= 'Baz';
+var_dump($people->person[0]['name']);
+
+echo "===ArrayOverloading===\n";
+
+$people = new Peoples;
+
+var_dump($people[0]['name']);
+$people[0]['name'] = $people->person[0]['name'] . 'Bar';
+var_dump($people[0]['name']);
+$people[0]['name'] .= 'Baz';
+var_dump($people[0]['name']);
+
+?>
+===DONE===
+--EXPECT--
+string(3) "Foo"
+string(6) "FooBar"
+string(9) "FooBarBaz"
+===ArrayOverloading===
+string(3) "Foo"
+string(6) "FooBar"
+string(9) "FooBarBaz"
+===DONE===
diff --git a/tests/classes/destructor_and_exceptions.phpt b/tests/classes/destructor_and_exceptions.phpt
new file mode 100755 (executable)
index 0000000..8100c92
--- /dev/null
@@ -0,0 +1,60 @@
+--TEST--
+ZE2 catch exception thrown in destructor
+--FILE--
+<?php
+
+class FailClass
+{
+       public $fatal;
+
+       function __destruct()
+       {
+               echo __METHOD__ . "\n";
+               throw new exception("FailClass");
+               echo "Done: " . __METHOD__ . "\n";
+       }
+}
+
+try
+{
+       $a = new FailClass;
+       unset($a);
+}
+catch(Exception $e)
+{
+       echo "Caught: " . $e->getMessage() . "\n";
+}
+
+class FatalException extends Exception
+{
+       function __construct($what)
+       {
+               echo __METHOD__ . "\n";
+               $o = new FailClass;
+               unset($o);
+               echo "Done: " . __METHOD__ . "\n";
+       }
+}
+
+try
+{
+       throw new FatalException("Damn");
+}
+catch(Exception $e)
+{
+       echo "Caught Exception: " . $e->getMessage() . "\n";
+}
+catch(FatalException $e)
+{
+       echo "Caught FatalException: " . $e->getMessage() . "\n";
+}
+
+?>
+===DONE===
+--EXPECTF--
+FailClass::__destruct
+Caught: FailClass
+FatalException::__construct
+FailClass::__destruct
+Caught Exception: FailClass
+===DONE===