summaryrefslogtreecommitdiff
path: root/ext/standard/tests/assert
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/tests/assert')
-rw-r--r--ext/standard/tests/assert/assert.phpt44
-rw-r--r--ext/standard/tests/assert/assert02.phpt48
-rw-r--r--ext/standard/tests/assert/assert03.phpt39
-rw-r--r--ext/standard/tests/assert/assert04.phpt48
-rw-r--r--ext/standard/tests/assert/assert_basic.phpt30
-rw-r--r--ext/standard/tests/assert/assert_basic1.phpt29
-rw-r--r--ext/standard/tests/assert/assert_basic2.phpt37
-rw-r--r--ext/standard/tests/assert/assert_basic3.phpt25
-rw-r--r--ext/standard/tests/assert/assert_basic4.phpt37
-rw-r--r--ext/standard/tests/assert/assert_basic5.phpt32
-rw-r--r--ext/standard/tests/assert/assert_basic6.phpt26
-rw-r--r--ext/standard/tests/assert/assert_closures.phpt16
-rw-r--r--ext/standard/tests/assert/assert_error.phpt27
-rw-r--r--ext/standard/tests/assert/assert_error1.phpt45
-rw-r--r--ext/standard/tests/assert/assert_error2.phpt30
-rw-r--r--ext/standard/tests/assert/assert_error3.phpt21
-rw-r--r--ext/standard/tests/assert/assert_error4.phpt21
-rw-r--r--ext/standard/tests/assert/assert_variation.phpt131
18 files changed, 686 insertions, 0 deletions
diff --git a/ext/standard/tests/assert/assert.phpt b/ext/standard/tests/assert/assert.phpt
new file mode 100644
index 0000000..44fb609
--- /dev/null
+++ b/ext/standard/tests/assert/assert.phpt
@@ -0,0 +1,44 @@
+--TEST--
+assert()
+--INI--
+error_reporting = 2039
+assert.active = 0
+assert.warning = 1
+assert.callback =
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+function a($file,$line,$myev)
+{
+ echo "assertion failed $line,\"$myev\"\n";
+}
+
+class a
+{
+ function assert($file,$line,$myev)
+ {
+ echo "class assertion failed $line,\"$myev\"\n";
+ }
+}
+
+assert_options(ASSERT_ACTIVE,1);
+assert_options(ASSERT_QUIET_EVAL,1);
+assert_options(ASSERT_WARNING,0);
+
+$a = 0;
+
+assert_options(ASSERT_CALLBACK,"a");
+assert('$a != 0');
+
+assert_options(ASSERT_CALLBACK,array("a","assert"));
+assert('$a != 0');
+
+$obj = new a();
+assert_options(ASSERT_CALLBACK,array(&$obj,"assert"));
+assert('$a != 0');
+?>
+--EXPECT--
+assertion failed 22,"$a != 0"
+class assertion failed 25,"$a != 0"
+class assertion failed 29,"$a != 0"
diff --git a/ext/standard/tests/assert/assert02.phpt b/ext/standard/tests/assert/assert02.phpt
new file mode 100644
index 0000000..723eeb9
--- /dev/null
+++ b/ext/standard/tests/assert/assert02.phpt
@@ -0,0 +1,48 @@
+--TEST--
+catch assert() errors
+--INI--
+assert.active=1
+assert.warning=1
+assert.callback=
+assert.bail=0
+assert.quiet_eval=0
+--FILE--
+<?php
+function handler($errno, $errstr) {
+ echo "in handler()\n";
+ assert(E_RECOVERABLE_ERROR === $errno);
+ var_dump($errstr);
+}
+
+set_error_handler('handler', E_RECOVERABLE_ERROR);
+
+assert(1);
+assert('1');
+assert('$a');
+
+assert('aa=sd+as+safsafasfasafsaf');
+
+assert('0');
+
+assert_options(ASSERT_BAIL, 1);
+assert('aa=sd+as+safsafasfasafsaf');
+
+echo "done\n";
+
+?>
+--EXPECTF--
+Notice: Undefined variable: a in %sassert02.php(12) : assert code on line 1
+
+Warning: assert(): Assertion "$a" failed in %sassert02.php on line 12
+
+Parse error: %s error%sin %sassert02.php(14) : assert code on line 1
+in handler()
+%string|unicode%(%d) "assert(): Failure evaluating code:
+aa=sd+as+safsafasfasafsaf"
+
+Warning: assert(): Assertion "0" failed in %sassert02.php on line 16
+
+Parse error: %s error%sin %sassert02.php(19) : assert code on line 1
+in handler()
+%string|unicode%(%d) "assert(): Failure evaluating code:
+aa=sd+as+safsafasfasafsaf"
diff --git a/ext/standard/tests/assert/assert03.phpt b/ext/standard/tests/assert/assert03.phpt
new file mode 100644
index 0000000..d839414
--- /dev/null
+++ b/ext/standard/tests/assert/assert03.phpt
@@ -0,0 +1,39 @@
+--TEST--
+assert() - set callback using ini_set()
+--INI--
+assert.active = 1
+assert.warning = 0
+assert.callback =
+assert.bail = 0
+assert.quiet_eval = 1
+--FILE--
+<?php
+function a($file,$line,$myev)
+{
+ echo "assertion failed - a - $line,\"$myev\"\n";
+}
+
+function b($file,$line,$myev)
+{
+ echo "assertion failed - b - $line,\"$myev\"\n";
+}
+
+assert_options(ASSERT_ACTIVE,1);
+assert_options(ASSERT_QUIET_EVAL,1);
+assert_options(ASSERT_WARNING,0);
+
+$a = 0;
+
+assert_options(ASSERT_CALLBACK,"a");
+assert('$a != 0');
+
+ /* Modify call back using ini_set() */
+ini_set("assert.callback", "b");
+assert('$a != 0');
+
+?>
+==DONE==
+--EXPECTF--
+assertion failed - a - %d,"$a != 0"
+assertion failed - b - %d,"$a != 0"
+==DONE==
diff --git a/ext/standard/tests/assert/assert04.phpt b/ext/standard/tests/assert/assert04.phpt
new file mode 100644
index 0000000..bffadcb
--- /dev/null
+++ b/ext/standard/tests/assert/assert04.phpt
@@ -0,0 +1,48 @@
+--TEST--
+misc assert() tests tests
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback =
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+/* Assert not active */
+assert_options(ASSERT_ACTIVE, 0);
+assert(1);
+
+
+/* Wrong parameter count in assert */
+assert_options(ASSERT_ACTIVE, 1);
+assert(2, "failure", 3);
+
+/* Wrong parameter count in assert_options */
+assert_options(ASSERT_ACTIVE, 0, 2);
+
+/* Wrong parameter name in assert_options */
+$test="ASSERT_FRED";
+assert_options($test, 1);
+
+/* Assert false */
+assert(0);
+
+
+/* Assert false and bail*/
+assert_options(ASSERT_BAIL, 1);
+assert(0);
+
+echo "not reached\n";
+
+?>
+--EXPECTF--
+Warning: assert() expects at most 2 parameters, 3 given in %s on line %d
+
+Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d
+
+Warning: assert_options() expects parameter 1 to be long, %unicode_string_optional% given in %s on line %d
+
+Warning: assert(): Assertion failed in %s on line %d
+
+Warning: assert(): Assertion failed in %s on line %d
+
diff --git a/ext/standard/tests/assert/assert_basic.phpt b/ext/standard/tests/assert/assert_basic.phpt
new file mode 100644
index 0000000..ea58e9f
--- /dev/null
+++ b/ext/standard/tests/assert/assert_basic.phpt
@@ -0,0 +1,30 @@
+--TEST--
+assert() - basic - check that assert runs when assert.active is set to 1.
+--INI--
+assert.active = 1
+assert.warning = 0
+assert.callback = f1
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+function f1()
+{
+ echo "f1 called\n";
+}
+//String assert
+$sa = "0 != 0";
+var_dump($r2=assert($sa));
+$sa = "0 == 0";
+var_dump($r2=assert($sa));
+
+//Non string assert
+var_dump($r2=assert(0));
+var_dump($r2=assert(1));
+--EXPECTF--
+f1 called
+NULL
+bool(true)
+f1 called
+NULL
+bool(true)
diff --git a/ext/standard/tests/assert/assert_basic1.phpt b/ext/standard/tests/assert/assert_basic1.phpt
new file mode 100644
index 0000000..8aed519
--- /dev/null
+++ b/ext/standard/tests/assert/assert_basic1.phpt
@@ -0,0 +1,29 @@
+--TEST--
+assert() - basic - check that assert can be switched off
+--INI--
+assert.active = 0
+assert.warning = 0
+assert.callback = f1
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+function f1()
+{
+ echo "f1 called\n";
+}
+
+//String assert
+$sa = "0 != 0";
+var_dump($r2=assert($sa));
+$sa = "0 == 0";
+var_dump($r2=assert($sa));
+
+//Non string assert
+var_dump($r2=assert(0));
+var_dump($r2=assert(1));
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
diff --git a/ext/standard/tests/assert/assert_basic2.phpt b/ext/standard/tests/assert/assert_basic2.phpt
new file mode 100644
index 0000000..277e5ca
--- /dev/null
+++ b/ext/standard/tests/assert/assert_basic2.phpt
@@ -0,0 +1,37 @@
+--TEST--
+assert() - basic - correct call back values before and after assert.
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback=f1
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+function f2()
+{
+ echo "f2 called\n";
+}
+
+function f1()
+{
+ echo "f1 called\n";
+}
+
+var_dump($o = assert_options(ASSERT_CALLBACK));
+assert(0);
+
+var_dump($o= assert_options(ASSERT_CALLBACK, "f2"));
+var_dump($n= assert_options(ASSERT_CALLBACK));
+assert(0);
+?>
+--EXPECTF--
+string(2) "f1"
+f1 called
+
+Warning: assert(): Assertion failed in %s on line 13
+string(2) "f1"
+string(2) "f2"
+f2 called
+
+Warning: assert(): Assertion failed in %s on line 17
diff --git a/ext/standard/tests/assert/assert_basic3.phpt b/ext/standard/tests/assert/assert_basic3.phpt
new file mode 100644
index 0000000..0ce3266
--- /dev/null
+++ b/ext/standard/tests/assert/assert_basic3.phpt
@@ -0,0 +1,25 @@
+--TEST--
+assert() - basic - Test that bailout works
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback = f1
+assert.quiet_eval = 1
+assert.bail = 0
+--FILE--
+<?php
+function f1()
+{
+ echo "f1 called\n";
+}
+
+//bail out on error
+var_dump($rao=assert_options(ASSERT_BAIL, 1));
+$sa = "0 != 0";
+var_dump($r2=assert($sa));
+echo "If this is printed BAIL hasn't worked";
+--EXPECTF--
+int(0)
+f1 called
+
+Warning: assert(): Assertion "0 != 0" failed in %s on line 10
diff --git a/ext/standard/tests/assert/assert_basic4.phpt b/ext/standard/tests/assert/assert_basic4.phpt
new file mode 100644
index 0000000..2f11234
--- /dev/null
+++ b/ext/standard/tests/assert/assert_basic4.phpt
@@ -0,0 +1,37 @@
+--TEST--
+assert() - basic - test initial values using ini.get and assert_options
+--INI--
+assert.active = 0
+assert.warning = 0
+assert.bail = 0
+assert.quiet_eval = 0
+assert.callback = f1
+--FILE--
+<?php
+// Check the initial settings for all assert_options
+
+//Using assert_options;
+echo "Initial values: assert_options(ASSERT_ACTIVE) => [".assert_options(ASSERT_ACTIVE)."]\n";
+echo "Initial values: assert_options(ASSERT_WARNING) => [".assert_options(ASSERT_WARNING)."]\n";
+echo "Initial values: assert_options(ASSERT_BAIL) => [".assert_options(ASSERT_BAIL)."]\n";
+echo "Initial values: assert_options(ASSERT_QUIET_EVAL) => [".assert_options(ASSERT_QUIET_EVAL)."]\n";
+echo "Initial values: assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
+
+//Using ini.get;
+echo "Initial values: ini.get(\"assert.active\") => [".ini_get("assert.active")."]\n";
+echo "Initial values: ini.get(\"assert.warning\") => [".ini_get("assert.warning")."]\n";
+echo "Initial values: ini.get(\"assert.bail\") => [".ini_get("assert.bail")."]\n";
+echo "Initial values: ini.get(\"assert.quiet_eval\") => [".ini_get("assert.quiet_eval")."]\n";
+echo "Initial values: ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n\n";
+
+--EXPECTF--
+Initial values: assert_options(ASSERT_ACTIVE) => [0]
+Initial values: assert_options(ASSERT_WARNING) => [0]
+Initial values: assert_options(ASSERT_BAIL) => [0]
+Initial values: assert_options(ASSERT_QUIET_EVAL) => [0]
+Initial values: assert_options(ASSERT_CALLBACK) => [f1]
+Initial values: ini.get("assert.active") => [0]
+Initial values: ini.get("assert.warning") => [0]
+Initial values: ini.get("assert.bail") => [0]
+Initial values: ini.get("assert.quiet_eval") => [0]
+Initial values: ini.get("assert.callback") => [f1]
diff --git a/ext/standard/tests/assert/assert_basic5.phpt b/ext/standard/tests/assert/assert_basic5.phpt
new file mode 100644
index 0000000..737f902
--- /dev/null
+++ b/ext/standard/tests/assert/assert_basic5.phpt
@@ -0,0 +1,32 @@
+--TEST--
+assert() - basic - check switch on warnings using assert_options.
+--INI--
+assert.active = 1
+assert.warning = 0
+assert.callback = f1
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+function f1()
+{
+ echo "f1 called\n";
+}
+
+//switch warning on and test return value
+var_dump($rao=assert_options(ASSERT_WARNING, 1));
+$sa = "0 != 0";
+var_dump($r2=assert($sa));
+$sa = "0 == 0";
+var_dump($r2=assert($sa));
+
+//switch warning on and test return value
+var_dump($rao=assert_options(ASSERT_WARNING, 0));
+--EXPECTF--
+int(0)
+f1 called
+
+Warning: assert(): Assertion "0 != 0" failed in %s on line 10
+NULL
+bool(true)
+int(1)
diff --git a/ext/standard/tests/assert/assert_basic6.phpt b/ext/standard/tests/assert/assert_basic6.phpt
new file mode 100644
index 0000000..2a73713
--- /dev/null
+++ b/ext/standard/tests/assert/assert_basic6.phpt
@@ -0,0 +1,26 @@
+--TEST--
+assert() - basic - Test that bailout works
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback = f1
+assert.quiet_eval = 1
+assert.bail = 0
+--FILE--
+<?php
+function f1($message)
+{
+ echo "f1 called\n";
+}
+
+//bail out on error
+var_dump($rao = assert_options(ASSERT_BAIL, 1));
+$sa = "0 != 0";
+var_dump($r2 = assert($sa, "0 is 0"));
+echo "If this is printed BAIL hasn't worked";
+--EXPECTF--
+int(0)
+f1 called
+
+Warning: assert(): 0 is 0: "0 != 0" failed in %s on line 10
+
diff --git a/ext/standard/tests/assert/assert_closures.phpt b/ext/standard/tests/assert/assert_closures.phpt
new file mode 100644
index 0000000..e01c11a
--- /dev/null
+++ b/ext/standard/tests/assert/assert_closures.phpt
@@ -0,0 +1,16 @@
+--TEST--
+assert() - basic - accept closures as callback.
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+assert_options(ASSERT_CALLBACK, function () { echo "Hello World!\n"; });
+assert(0);
+?>
+--EXPECTF--
+Hello World!
+
+Warning: assert(): Assertion failed in %s on line %d
diff --git a/ext/standard/tests/assert/assert_error.phpt b/ext/standard/tests/assert/assert_error.phpt
new file mode 100644
index 0000000..28655be
--- /dev/null
+++ b/ext/standard/tests/assert/assert_error.phpt
@@ -0,0 +1,27 @@
+--TEST--
+assert() - error - give assert nonsense string with quiet_eval on then off
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback = f1
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+function f1()
+{
+ echo "f1 called\n";
+}
+
+$sa = "threemeninaboat";
+
+var_dump($r2=assert($sa));
+
+var_dump($ra0 = assert_options(ASSERT_QUIET_EVAL, 1));
+
+var_dump($r2=assert($sa));
+--EXPECTF--
+Notice: Use of undefined constant threemeninaboat - assumed 'threemeninaboat' in %s(9) : assert code on line 1
+bool(true)
+int(0)
+bool(true)
diff --git a/ext/standard/tests/assert/assert_error1.phpt b/ext/standard/tests/assert/assert_error1.phpt
new file mode 100644
index 0000000..657b411
--- /dev/null
+++ b/ext/standard/tests/assert/assert_error1.phpt
@@ -0,0 +1,45 @@
+--TEST--
+assert() - error - invalid params
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback = f1
+assert.quiet_eval = 1
+assert.bail = 0
+--FILE--
+<?php
+function f1()
+{
+ echo "f1 called\n";
+}
+function handler($errno, $errstr) {
+ echo "in handler()\n\n";
+ assert(E_RECOVERABLE_ERROR === $errno);
+ var_dump($errstr);
+}
+
+//Wrong number of parameters for assert_options()
+assert_options(ASSERT_WARNING, 1);
+var_dump($rao = assert_options(ASSERT_CALLBACK, "f1", 1));
+
+
+//Unknown option for assert_options()
+var_dump($rao=assert_options("F1", "f1"));
+
+//Wrong number of parameters for assert()
+$sa="0 != 0";
+var_dump($r2 = assert($sa, "message", 1));
+
+
+//Catch recoverable error with handler
+var_dump($rc = assert('aa=sd+as+safsafasfaçsafçsafç'));
+--EXPECTF--
+Warning: assert_options() expects at most 2 parameters, 3 given in %s on line %d
+NULL
+
+Warning: assert_options() expects parameter 1 to be long, string given in %s on line %d
+NULL
+
+Warning: assert() expects at most 2 parameters, 3 given in %s on line %d
+NULL
+
diff --git a/ext/standard/tests/assert/assert_error2.phpt b/ext/standard/tests/assert/assert_error2.phpt
new file mode 100644
index 0000000..da7c3d9
--- /dev/null
+++ b/ext/standard/tests/assert/assert_error2.phpt
@@ -0,0 +1,30 @@
+--TEST--
+assert() - basic - Test that bailout works
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback = f1
+assert.quiet_eval = 1
+assert.bail = 0
+error_reporting = -1
+display_errors = 1
+--FILE--
+<?php
+function f1($script, $line, $message, $user_message)
+{
+ echo "f1 called\n";
+}
+
+//bail out on error
+var_dump($rao = assert_options(ASSERT_BAIL, 1));
+$sa = "0 != 0";
+var_dump($r2 = assert($sa));
+echo "If this is printed BAIL hasn't worked";
+--EXPECTF--
+int(0)
+
+Warning: Missing argument 4 for f1() in %s on line 2
+f1 called
+
+Warning: assert(): Assertion "0 != 0" failed in %s on line 10
+
diff --git a/ext/standard/tests/assert/assert_error3.phpt b/ext/standard/tests/assert/assert_error3.phpt
new file mode 100644
index 0000000..54b91ed
--- /dev/null
+++ b/ext/standard/tests/assert/assert_error3.phpt
@@ -0,0 +1,21 @@
+--TEST--
+assert() - basic - Test recoverable error
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback = f1
+assert.quiet_eval = 0
+assert.bail = 0
+error_reporting = -1
+display_errors = 1
+--FILE--
+<?php
+$sa = "0 $ 0";
+var_dump($r2 = assert($sa));
+--EXPECTF--
+
+Parse error: syntax error, unexpected '$' in %s(3) : assert code on line 1
+
+Catchable fatal error: assert(): Failure evaluating code:
+0 $ 0 in %s on line 3
+
diff --git a/ext/standard/tests/assert/assert_error4.phpt b/ext/standard/tests/assert/assert_error4.phpt
new file mode 100644
index 0000000..264cc8f
--- /dev/null
+++ b/ext/standard/tests/assert/assert_error4.phpt
@@ -0,0 +1,21 @@
+--TEST--
+assert() - basic - Test recoverable error
+--INI--
+assert.active = 1
+assert.warning = 1
+assert.callback = f1
+assert.quiet_eval = 0
+assert.bail = 0
+error_reporting = -1
+display_errors = 1
+--FILE--
+<?php
+$sa = "0 $ 0";
+var_dump($r2 = assert($sa, "Describing what was asserted"));
+--EXPECTF--
+
+Parse error: syntax error, unexpected '$' in %s(3) : assert code on line 1
+
+Catchable fatal error: assert(): Failure evaluating code:
+Describing what was asserted:"0 $ 0" in %s on line 3
+
diff --git a/ext/standard/tests/assert/assert_variation.phpt b/ext/standard/tests/assert/assert_variation.phpt
new file mode 100644
index 0000000..c49feea
--- /dev/null
+++ b/ext/standard/tests/assert/assert_variation.phpt
@@ -0,0 +1,131 @@
+--TEST--
+assert() - variation - test callback options using ini_get/ini_set/assert_options
+--INI--
+assert.active = 1
+assert.warning = 0
+assert.callback = f1
+assert.bail = 0
+assert.quiet_eval = 0
+--FILE--
+<?php
+function f1()
+{
+ echo "f1 called\n";
+}
+function f2()
+{
+ echo "f2 called\n";
+}
+function f3()
+{
+ echo "f3 called\n";
+}
+class c1
+{
+ function assert($file, $line, $myev)
+ {
+ echo "Class assertion failed $line, \"$myev\"\n";
+ }
+}
+echo "Initial values: assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
+echo "Initial values: ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
+$sa = "0 != 0";
+var_dump($r2=assert($sa));
+echo"\n";
+
+echo "Change callback function using ini.set and test return value \n";
+var_dump($rv = ini_set("assert.callback","f2"));
+echo "assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
+echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
+var_dump($r2=assert($sa));
+echo"\n";
+
+echo "Change callback function using assert_options and test return value \n";
+var_dump($rv=assert_options(ASSERT_CALLBACK, "f3"));
+echo "assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
+echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
+var_dump($r2=assert($sa));
+echo"\n";
+
+
+echo "Reset the name of the callback routine to a class method and check that it works\n";
+var_dump($rc=assert_options(ASSERT_CALLBACK, "c1"));
+echo "assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
+echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
+var_dump($r2=assert($sa));
+echo"\n";
+
+echo "Reset callback options to use a class method \n";
+var_dump($rc = assert_options(ASSERT_CALLBACK,array("c1","assert")));
+var_dump($rao=assert_options(ASSERT_CALLBACK));
+echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n\n";
+var_dump($r2=assert($sa));
+echo"\n";
+
+echo "Reset callback options to use an object method \n";
+$o = new c1();
+var_dump($rc=assert_options(ASSERT_CALLBACK,array(&$o,"assert")));
+var_dump($rao=assert_options(ASSERT_CALLBACK));
+echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n\n";
+var_dump($r2=assert($sa));
+echo"\n";
+
+--EXPECTF--
+Initial values: assert_options(ASSERT_CALLBACK) => [f1]
+Initial values: ini.get("assert.callback") => [f1]
+f1 called
+NULL
+
+Change callback function using ini.set and test return value
+string(2) "f1"
+assert_options(ASSERT_CALLBACK) => [f2]
+ini.get("assert.callback") => [f2]
+f2 called
+NULL
+
+Change callback function using assert_options and test return value
+string(2) "f2"
+assert_options(ASSERT_CALLBACK) => [f3]
+ini.get("assert.callback") => [f2]
+f3 called
+NULL
+
+Reset the name of the callback routine to a class method and check that it works
+string(2) "f3"
+assert_options(ASSERT_CALLBACK) => [c1]
+ini.get("assert.callback") => [f2]
+NULL
+
+Reset callback options to use a class method
+string(2) "c1"
+array(2) {
+ [0]=>
+ string(2) "c1"
+ [1]=>
+ string(6) "assert"
+}
+ini.get("assert.callback") => [f2]
+
+
+Strict Standards: Non-static method c1::assert() should not be called statically in %s on line 53
+Class assertion failed 53, "0 != 0"
+NULL
+
+Reset callback options to use an object method
+array(2) {
+ [0]=>
+ string(2) "c1"
+ [1]=>
+ string(6) "assert"
+}
+array(2) {
+ [0]=>
+ &object(c1)#1 (0) {
+ }
+ [1]=>
+ string(6) "assert"
+}
+ini.get("assert.callback") => [f2]
+
+Class assertion failed 61, "0 != 0"
+NULL