]> granicus.if.org Git - php/commitdiff
MFB Enforce protocol of magic methods/classes
authorMarcus Boerger <helly@php.net>
Mon, 2 Aug 2004 08:29:59 +0000 (08:29 +0000)
committerMarcus Boerger <helly@php.net>
Mon, 2 Aug 2004 08:29:59 +0000 (08:29 +0000)
tests/classes/__call_002.phpt [new file with mode: 0755]
tests/classes/__set__get_002.phpt [new file with mode: 0755]
tests/classes/__set__get_003.phpt [new file with mode: 0755]
tests/classes/destructor_visibility_001.phpt [new file with mode: 0755]
tests/classes/destructor_visibility_002.phpt [new file with mode: 0755]
tests/classes/destructor_visibility_003.phpt [new file with mode: 0755]

diff --git a/tests/classes/__call_002.phpt b/tests/classes/__call_002.phpt
new file mode 100755 (executable)
index 0000000..53a179f
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+ZE2 __call() signature check
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+
+class Test {
+       function __call() {
+       }
+}
+
+?>
+--EXPECTF--
+Fatal error: Method Test::__call() must take exactly 2 arguments in %s__call_002.php on line %d
diff --git a/tests/classes/__set__get_002.phpt b/tests/classes/__set__get_002.phpt
new file mode 100755 (executable)
index 0000000..71111cc
--- /dev/null
@@ -0,0 +1,14 @@
+--TEST--
+ZE2 __get() signature check
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+class Test {
+       function __get($x,$y) {
+       }
+}
+
+?>
+--EXPECTF--
+Fatal error: Method Test::__get() must take exactly 1 argument in %s__set__get_002.php on line %d
diff --git a/tests/classes/__set__get_003.phpt b/tests/classes/__set__get_003.phpt
new file mode 100755 (executable)
index 0000000..390d303
--- /dev/null
@@ -0,0 +1,14 @@
+--TEST--
+ZE2 __set() signature check
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+class Test {
+       function __set() {
+       }
+}
+
+?>
+--EXPECTF--
+Fatal error: Method Test::__set() must take exactly 2 arguments in %s__set__get_003.php on line %d
diff --git a/tests/classes/destructor_visibility_001.phpt b/tests/classes/destructor_visibility_001.phpt
new file mode 100755 (executable)
index 0000000..7674c51
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+ZE2 Ensuring destructor visibility
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+
+class Base {
+       private function __destruct() {
+       echo __METHOD__ . "\n";
+       }
+}
+
+class Derived extends Base {
+}
+
+$obj = new Derived;
+
+unset($obj);
+
+?>
+===DONE===
+--EXPECTF--
+Fatal error: Call to private Derived::__destruct() from context '' in %sdestructor_visibility_001.php on line %d
diff --git a/tests/classes/destructor_visibility_002.phpt b/tests/classes/destructor_visibility_002.phpt
new file mode 100755 (executable)
index 0000000..2cc8333
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+ZE2 Ensuring destructor visibility
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+
+class Base {
+       private function __destruct() {
+               echo __METHOD__ . "\n";
+       }
+}
+
+class Derived extends Base {
+}
+
+$obj = new Derived;
+
+?>
+===DONE===
+--EXPECTF--
+===DONE===
+
+Warning: Call to private Derived::__destruct() from context '' during shutdown ignored in Unknown on line %d
diff --git a/tests/classes/destructor_visibility_003.phpt b/tests/classes/destructor_visibility_003.phpt
new file mode 100755 (executable)
index 0000000..83e3efe
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+ZE2 Ensuring destructor visibility
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+
+class Base {
+       private function __destruct() {
+               echo __METHOD__ . "\n";
+       }
+}
+
+class Derived extends Base {
+       public function __destruct() {
+               echo __METHOD__ . "\n";
+       }
+}
+
+$obj = new Derived;
+
+unset($obj); // Derived::__destruct is being called not Base::__destruct
+
+?>
+===DONE===
+--EXPECTF--
+Derived::__destruct
+===DONE===