1--TEST--
2assert() - variation  - test callback options using ini_get/ini_set/assert_options
3--INI--
4assert.active = 1
5assert.warning = 0
6assert.callback = f1
7assert.bail = 0
8assert.exception=0
9--FILE--
10<?php
11function f1()
12{
13    echo "f1 called\n";
14}
15function f2()
16{
17    echo "f2 called\n";
18}
19function f3()
20{
21    echo "f3 called\n";
22}
23class c1
24{
25    static function assert($file, $line, $unused, $desc)
26    {
27        echo "Class assertion failed $line, \"$desc\"\n";
28    }
29}
30echo "Initial values: assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
31echo "Initial values: ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
32var_dump($r2=assert(0 != 0));
33echo"\n";
34
35echo "Change callback function using ini.set and test return value\n";
36var_dump($rv = ini_set("assert.callback","f2"));
37echo "assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
38echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
39var_dump($r2=assert(0 != 0));
40echo"\n";
41
42echo "Change callback function using assert_options and test return value\n";
43var_dump($rv=assert_options(ASSERT_CALLBACK, "f3"));
44echo "assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
45echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
46var_dump($r2=assert(0 != 0));
47echo"\n";
48
49
50echo "Reset the name of the callback routine to a class method\n";
51var_dump($rc=assert_options(ASSERT_CALLBACK, "c1"));
52echo "assert_options(ASSERT_CALLBACK) => [".assert_options(ASSERT_CALLBACK)."]\n";
53echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n";
54try {
55    var_dump($r2=assert(0 != 0));
56} catch (Error $e) {
57    echo $e->getMessage(), "\n";
58}
59echo"\n";
60
61echo "Reset callback options to use a class method\n";
62var_dump($rc = assert_options(ASSERT_CALLBACK,array("c1","assert")));
63var_dump($rao=assert_options(ASSERT_CALLBACK));
64echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n\n";
65var_dump($r2=assert(0 != 0));
66echo"\n";
67
68echo "Reset callback options to use an object method\n";
69$o = new c1();
70var_dump($rc=assert_options(ASSERT_CALLBACK,array(&$o,"assert")));
71var_dump($rao=assert_options(ASSERT_CALLBACK));
72echo "ini.get(\"assert.callback\") => [".ini_get("assert.callback")."]\n\n";
73var_dump($r2=assert(0 != 0));
74echo"\n";
75
76echo "Set callback to something silly\n";
77assert_options(ASSERT_CALLBACK, 3.141);
78var_dump($rao = assert_options(ASSERT_CALLBACK));
79
80?>
81--EXPECTF--
82Deprecated: PHP Startup: assert.warning INI setting is deprecated in Unknown on line 0
83
84Deprecated: PHP Startup: assert.callback INI setting is deprecated in Unknown on line 0
85
86Deprecated: PHP Startup: assert.exception INI setting is deprecated in Unknown on line 0
87
88Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
89
90Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
91Initial values: assert_options(ASSERT_CALLBACK) => [f1]
92Initial values: ini.get("assert.callback") => [f1]
93f1 called
94bool(false)
95
96Change callback function using ini.set and test return value
97
98Deprecated: ini_set(): assert.callback INI setting is deprecated in %s on line %d
99string(2) "f1"
100
101Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
102
103Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
104assert_options(ASSERT_CALLBACK) => [f2]
105ini.get("assert.callback") => [f2]
106f2 called
107bool(false)
108
109Change callback function using assert_options and test return value
110
111Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
112
113Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
114string(2) "f2"
115
116Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
117
118Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
119assert_options(ASSERT_CALLBACK) => [f3]
120ini.get("assert.callback") => [f2]
121f3 called
122bool(false)
123
124Reset the name of the callback routine to a class method
125
126Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
127
128Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
129string(2) "f3"
130
131Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
132
133Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
134assert_options(ASSERT_CALLBACK) => [c1]
135ini.get("assert.callback") => [f2]
136Invalid callback c1, function "c1" not found or invalid function name
137
138Reset callback options to use a class method
139
140Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
141
142Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
143string(2) "c1"
144
145Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
146
147Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
148array(2) {
149  [0]=>
150  string(2) "c1"
151  [1]=>
152  string(6) "assert"
153}
154ini.get("assert.callback") => [f2]
155
156Class assertion failed 56, "assert(0 != 0)"
157bool(false)
158
159Reset callback options to use an object method
160
161Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
162
163Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
164array(2) {
165  [0]=>
166  string(2) "c1"
167  [1]=>
168  string(6) "assert"
169}
170
171Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
172
173Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
174array(2) {
175  [0]=>
176  &object(c1)#2 (0) {
177  }
178  [1]=>
179  string(6) "assert"
180}
181ini.get("assert.callback") => [f2]
182
183Class assertion failed 64, "assert(0 != 0)"
184bool(false)
185
186Set callback to something silly
187
188Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
189
190Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
191
192Deprecated: Constant ASSERT_CALLBACK is deprecated in %s on line %d
193
194Deprecated: Function assert_options() is deprecated since 8.3 in %s on line %d
195float(3.141)
196