Annotation of embedaddon/php/ext/standard/tests/general_functions/strval.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test strval() function
3: --INI--
4: precision=14
5: --FILE--
6: <?php
7: /* Prototype: string strval ( mixed $var );
8: * Description: Returns the string value of var
9: */
10:
11: echo "*** Testing str_val() with scalar values***\n";
12: $heredoc_string = <<<EOD
13: This is a multiline heredoc
14: string. Numeric = 1232455.
15: EOD;
16: /* heredoc string with only numeric values */
17: $heredoc_numeric_string = <<<EOD
18: 12345
19: 2345
20: EOD;
21: /* null heredoc string */
22: $heredoc_empty_string = <<<EOD
23: EOD;
24: /* heredoc string with NULL */
25: $heredoc_NULL_string = <<<EOD
26: NULL
27: EOD;
28:
29: // different valid scalar vlaues
30: $scalars = array(
31: /* integers */
32: 0,
33: 1,
34: -1,
35: -2147483648, // max negative integer value
36: -2147483647,
37: 2147483647, // max positive integer value
38: 2147483640,
39: 0x123B, // integer as hexadecimal
40: 0x12ab,
41: 0Xfff,
42: 0XFA,
43:
44: /* floats */
45: -0x80000000, // max negative integer as hexadecimal
46: 0x7fffffff, // max postive integer as hexadecimal
47: 0x7FFFFFFF, // max postive integer as hexadecimal
48: 0123, // integer as octal
49: 01912, // should be quivalent to octal 1
50: -020000000000, // max negative integer as octal
51: 017777777777, // max positive integer as octal
52: -2147483649, // float value
53: 2147483648, // float value
54: -0x80000001, // float value, beyond max negative int
55: 0x800000001, // float value, beyond max positive int
56: 020000000001, // float value, beyond max positive int
57: -020000000001, // float value, beyond max negative int
58: 0.0,
59: -0.1,
60: 10.0000000000000000005,
61: 10.5e+5,
62: 1e-5,
63: .5e+7,
64: .6e-19,
65: .05E+44,
66: .0034E-30,
67:
68: /* booleans */
69: true,
70: TRUE,
71: FALSE,
72: false,
73:
74: /* strings */
75: "",
76: '',
77: " ",
78: ' ',
79: '0',
80: "0",
81: "testing",
82: "0x564",
83: "0123",
84: "new\n",
85: 'new\n',
86: "@#$$%^&&*()",
87: " ",
88: "null",
89: 'null',
90: 'true',
91: "true",
92: /*"\0123",
93: "\0x12FF",*/
94: $heredoc_string,
95: $heredoc_numeric_string,
96: $heredoc_empty_string
97: );
98: /* loop to check that strval() recognizes different
99: scalar values and retuns the string conversion of same */
100: $loop_counter = 1;
101: foreach ($scalars as $scalar ) {
102: echo "-- Iteration $loop_counter --\n"; $loop_counter++;
103: var_dump( strval($scalar) );
104: }
105:
106: echo "\n*** Testing strval() with non_scalar values ***\n";
107: // get a resource type variable
108: $fp = fopen(__FILE__, "r");
109: $dfp = opendir( dirname(__FILE__) );
110:
111: // unset variable
112: $unset_var = 10;
113: unset ($unset_var);
114:
115: // non_scalar values, objects, arrays, resources and boolean
116: class foo
117: {
118: function __toString() {
119: return "Object";
120: }
121: }
122:
123: $not_scalars = array (
124: new foo, //object
125: $fp, // resource
126: $dfp,
127: array(), // arrays
128: array(NULL),
129: array(1,2,3,4),
130: array("string"),
131: NULL, // nulls
132: null,
133: @$unset_var, // unset variable
134: @$undefined_var
135: );
136: /* loop through the $not_scalars to see working of
137: strval() on objects, arrays, boolean and others */
138: $loop_counter = 1;
139: foreach ($not_scalars as $value ) {
140: echo "-- Iteration $loop_counter --\n"; $loop_counter++;
141: var_dump( strval($value) );
142: }
143:
144: echo "\n*** Testing error conditions ***\n";
145: //Zero argument
146: var_dump( strval() );
147:
148: //arguments more than expected
149: var_dump( strval( $scalars[0], $scalars[1]) );
150:
151: echo "Done\n";
152:
153: // close the resources used
154: fclose($fp);
155: closedir($dfp);
156:
157: ?>
158: --EXPECTF--
159: *** Testing str_val() with scalar values***
160: -- Iteration 1 --
161: string(1) "0"
162: -- Iteration 2 --
163: string(1) "1"
164: -- Iteration 3 --
165: string(2) "-1"
166: -- Iteration 4 --
167: string(11) "-2147483648"
168: -- Iteration 5 --
169: string(11) "-2147483647"
170: -- Iteration 6 --
171: string(10) "2147483647"
172: -- Iteration 7 --
173: string(10) "2147483640"
174: -- Iteration 8 --
175: string(4) "4667"
176: -- Iteration 9 --
177: string(4) "4779"
178: -- Iteration 10 --
179: string(4) "4095"
180: -- Iteration 11 --
181: string(3) "250"
182: -- Iteration 12 --
183: string(11) "-2147483648"
184: -- Iteration 13 --
185: string(10) "2147483647"
186: -- Iteration 14 --
187: string(10) "2147483647"
188: -- Iteration 15 --
189: string(2) "83"
190: -- Iteration 16 --
191: string(1) "1"
192: -- Iteration 17 --
193: string(11) "-2147483648"
194: -- Iteration 18 --
195: string(10) "2147483647"
196: -- Iteration 19 --
197: string(11) "-2147483649"
198: -- Iteration 20 --
199: string(10) "2147483648"
200: -- Iteration 21 --
201: string(11) "-2147483649"
202: -- Iteration 22 --
203: string(11) "34359738369"
204: -- Iteration 23 --
205: string(10) "2147483649"
206: -- Iteration 24 --
207: string(11) "-2147483649"
208: -- Iteration 25 --
209: string(1) "0"
210: -- Iteration 26 --
211: string(4) "-0.1"
212: -- Iteration 27 --
213: string(2) "10"
214: -- Iteration 28 --
215: string(7) "1050000"
216: -- Iteration 29 --
217: string(6) "1.0E-5"
218: -- Iteration 30 --
219: string(7) "5000000"
220: -- Iteration 31 --
221: string(7) "6.0E-20"
222: -- Iteration 32 --
223: string(7) "5.0E+42"
224: -- Iteration 33 --
225: string(7) "3.4E-33"
226: -- Iteration 34 --
227: string(1) "1"
228: -- Iteration 35 --
229: string(1) "1"
230: -- Iteration 36 --
231: string(0) ""
232: -- Iteration 37 --
233: string(0) ""
234: -- Iteration 38 --
235: string(0) ""
236: -- Iteration 39 --
237: string(0) ""
238: -- Iteration 40 --
239: string(1) " "
240: -- Iteration 41 --
241: string(1) " "
242: -- Iteration 42 --
243: string(1) "0"
244: -- Iteration 43 --
245: string(1) "0"
246: -- Iteration 44 --
247: string(7) "testing"
248: -- Iteration 45 --
249: string(5) "0x564"
250: -- Iteration 46 --
251: string(4) "0123"
252: -- Iteration 47 --
253: string(4) "new
254: "
255: -- Iteration 48 --
256: string(5) "new\n"
257: -- Iteration 49 --
258: string(11) "@#$$%^&&*()"
259: -- Iteration 50 --
260: string(8) " "
261: -- Iteration 51 --
262: string(4) "null"
263: -- Iteration 52 --
264: string(4) "null"
265: -- Iteration 53 --
266: string(4) "true"
267: -- Iteration 54 --
268: string(4) "true"
269: -- Iteration 55 --
270: string(5%d) "This is a multiline heredoc
271: string. Numeric = 1232455."
272: -- Iteration 56 --
273: string(1%d) "12345
274: 2345"
275: -- Iteration 57 --
276: string(0) ""
277:
278: *** Testing strval() with non_scalar values ***
279: -- Iteration 1 --
280: string(6) "Object"
281: -- Iteration 2 --
282: string(14) "Resource id #5"
283: -- Iteration 3 --
284: string(14) "Resource id #6"
285: -- Iteration 4 --
286: string(5) "Array"
287: -- Iteration 5 --
288: string(5) "Array"
289: -- Iteration 6 --
290: string(5) "Array"
291: -- Iteration 7 --
292: string(5) "Array"
293: -- Iteration 8 --
294: string(0) ""
295: -- Iteration 9 --
296: string(0) ""
297: -- Iteration 10 --
298: string(0) ""
299: -- Iteration 11 --
300: string(0) ""
301:
302: *** Testing error conditions ***
303:
304: Warning: strval() expects exactly 1 parameter, 0 given in %s on line %d
305: NULL
306:
307: Warning: strval() expects exactly 1 parameter, 2 given in %s on line %d
308: NULL
309: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>