summaryrefslogtreecommitdiff
path: root/Examples/test-suite/php/director_finalizer_runme.php
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/php/director_finalizer_runme.php')
-rw-r--r--Examples/test-suite/php/director_finalizer_runme.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/Examples/test-suite/php/director_finalizer_runme.php b/Examples/test-suite/php/director_finalizer_runme.php
new file mode 100644
index 0000000..0fcddfd
--- /dev/null
+++ b/Examples/test-suite/php/director_finalizer_runme.php
@@ -0,0 +1,61 @@
+<?php
+
+require "tests.php";
+require "director_finalizer.php";
+
+// No new functions
+check::functions(array(foo_orstatus,deletefoo,getstatus,launder,resetstatus));
+// No new classes
+check::classes(array(director_finalizer,Foo));
+// now new vars
+check::globals(array());
+
+class MyFoo extends Foo {
+ function __destruct() {
+ $this->orStatus(2);
+ if (method_exists(parent, "__destruct")) {
+ parent::__destruct();
+ }
+ }
+}
+
+resetStatus();
+
+$a = new MyFoo();
+unset($a);
+
+check::equal(getStatus(), 3, "getStatus() failed #1");
+
+resetStatus();
+
+$a = new MyFoo();
+launder($a);
+
+check::equal(getStatus(), 0, "getStatus() failed #2");
+
+unset($a);
+
+check::equal(getStatus(), 3, "getStatus() failed #3");
+
+resetStatus();
+
+$a = new MyFoo();
+$a->thisown = 0;
+deleteFoo($a);
+unset($a);
+
+check::equal(getStatus(), 3, "getStatus() failed #4");
+
+resetStatus();
+
+$a = new MyFoo();
+$a->thisown = 0;
+deleteFoo(launder($a));
+unset($a);
+
+check::equal(getStatus(), 3, "getStatus() failed #5");
+
+resetStatus();
+
+check::done();
+?>