summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2004-09-29 09:36:23 +0000
committerMarcus Boerger <helly@php.net>2004-09-29 09:36:23 +0000
commit13f3e07ff2e2c36c8c02b4db0fc45337e9e218cb (patch)
treeb5a71643e4c9205f62506ae8b8998b88c91cdbe4
parenta898c2dd2850dfbb16cf4aa01bcd32f75eaee412 (diff)
downloadphp-git-13f3e07ff2e2c36c8c02b4db0fc45337e9e218cb.tar.gz
- Add new tests
-rwxr-xr-xtests/classes/array_access_008.phpt58
-rwxr-xr-xtests/classes/destructor_and_exceptions.phpt60
2 files changed, 118 insertions, 0 deletions
diff --git a/tests/classes/array_access_008.phpt b/tests/classes/array_access_008.phpt
new file mode 100755
index 0000000000..84ecf08ba8
--- /dev/null
+++ b/tests/classes/array_access_008.phpt
@@ -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
index 0000000000..8100c92465
--- /dev/null
+++ b/tests/classes/destructor_and_exceptions.phpt
@@ -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===