Annotation of embedaddon/php/ext/standard/tests/array/array_slice_variation2.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test array_slice() function : usage variations - Pass different data types as $offset arg
3: --SKIPIF--
4: <?php if (PHP_INT_SIZE > 4) die("skip this test is for 32bit platform only"); ?>
5: --FILE--
6: <?php
7: /* Prototype : array array_slice(array $input, int $offset [, int $length [, bool $preserve_keys]])
8: * Description: Returns elements specified by offset and length
9: * Source code: ext/standard/array.c
10: */
11:
12: /*
13: * Pass different data types as $offset argument to array_slice() to test behaviour
14: */
15:
16: echo "*** Testing array_slice() : usage variations ***\n";
17:
18: // Initialise function arguments not being substituted
19: $input_array = array('one' => 1, 2, 'three' => 3, 4);
20:
21: //get an unset variable
22: $unset_var = 10;
23: unset ($unset_var);
24:
25: // get a class
26: class classA
27: {
28: public function __toString() {
29: return "Class A object";
30: }
31: }
32:
33: // heredoc string
34: $heredoc = <<<EOT
35: hello world
36: EOT;
37:
38: // get a resource variable
39: $fp = fopen(__FILE__, "r");
40:
41: // unexpected values to be passed to $offset argument
42: $inputs = array(
43:
44: // int data
45: /*1*/ 0,
46: 1,
47: 12345,
48: -2345,
49:
50: // float data
51: /*5*/ 10.5,
52: -10.5,
53: 12.3456789000e10,
54: 12.3456789000E-10,
55: .5,
56:
57: // null data
58: /*10*/ NULL,
59: null,
60:
61: // boolean data
62: /*12*/ true,
63: false,
64: TRUE,
65: FALSE,
66:
67: // empty data
68: /*16*/ "",
69: '',
70: array(),
71:
72: // string data
73: /*19*/ "string",
74: 'string',
75: $heredoc,
76:
77: // undefined data
78: /*22*/ @$undefined_var,
79:
80: // unset data
81: /*23*/ @$unset_var,
82: );
83:
84: // loop through each element of $inputs to check the behavior of array_slice()
85: $iterator = 1;
86: foreach($inputs as $input) {
87: echo "\n-- Iteration $iterator --\n";
88: var_dump( array_slice($input_array, $input) );
89: $iterator++;
90: };
91:
92: fclose($fp);
93:
94: echo "Done";
95: ?>
96:
97: --EXPECTF--
98: *** Testing array_slice() : usage variations ***
99:
100: -- Iteration 1 --
101: array(4) {
102: ["one"]=>
103: int(1)
104: [0]=>
105: int(2)
106: ["three"]=>
107: int(3)
108: [1]=>
109: int(4)
110: }
111:
112: -- Iteration 2 --
113: array(3) {
114: [0]=>
115: int(2)
116: ["three"]=>
117: int(3)
118: [1]=>
119: int(4)
120: }
121:
122: -- Iteration 3 --
123: array(0) {
124: }
125:
126: -- Iteration 4 --
127: array(4) {
128: ["one"]=>
129: int(1)
130: [0]=>
131: int(2)
132: ["three"]=>
133: int(3)
134: [1]=>
135: int(4)
136: }
137:
138: -- Iteration 5 --
139: array(0) {
140: }
141:
142: -- Iteration 6 --
143: array(4) {
144: ["one"]=>
145: int(1)
146: [0]=>
147: int(2)
148: ["three"]=>
149: int(3)
150: [1]=>
151: int(4)
152: }
153:
154: -- Iteration 7 --
155: array(4) {
156: ["one"]=>
157: int(1)
158: [0]=>
159: int(2)
160: ["three"]=>
161: int(3)
162: [1]=>
163: int(4)
164: }
165:
166: -- Iteration 8 --
167: array(4) {
168: ["one"]=>
169: int(1)
170: [0]=>
171: int(2)
172: ["three"]=>
173: int(3)
174: [1]=>
175: int(4)
176: }
177:
178: -- Iteration 9 --
179: array(4) {
180: ["one"]=>
181: int(1)
182: [0]=>
183: int(2)
184: ["three"]=>
185: int(3)
186: [1]=>
187: int(4)
188: }
189:
190: -- Iteration 10 --
191: array(4) {
192: ["one"]=>
193: int(1)
194: [0]=>
195: int(2)
196: ["three"]=>
197: int(3)
198: [1]=>
199: int(4)
200: }
201:
202: -- Iteration 11 --
203: array(4) {
204: ["one"]=>
205: int(1)
206: [0]=>
207: int(2)
208: ["three"]=>
209: int(3)
210: [1]=>
211: int(4)
212: }
213:
214: -- Iteration 12 --
215: array(3) {
216: [0]=>
217: int(2)
218: ["three"]=>
219: int(3)
220: [1]=>
221: int(4)
222: }
223:
224: -- Iteration 13 --
225: array(4) {
226: ["one"]=>
227: int(1)
228: [0]=>
229: int(2)
230: ["three"]=>
231: int(3)
232: [1]=>
233: int(4)
234: }
235:
236: -- Iteration 14 --
237: array(3) {
238: [0]=>
239: int(2)
240: ["three"]=>
241: int(3)
242: [1]=>
243: int(4)
244: }
245:
246: -- Iteration 15 --
247: array(4) {
248: ["one"]=>
249: int(1)
250: [0]=>
251: int(2)
252: ["three"]=>
253: int(3)
254: [1]=>
255: int(4)
256: }
257:
258: -- Iteration 16 --
259:
260: Warning: array_slice() expects parameter 2 to be long, string given in %s on line %d
261: NULL
262:
263: -- Iteration 17 --
264:
265: Warning: array_slice() expects parameter 2 to be long, string given in %s on line %d
266: NULL
267:
268: -- Iteration 18 --
269:
270: Warning: array_slice() expects parameter 2 to be long, array given in %s on line %d
271: NULL
272:
273: -- Iteration 19 --
274:
275: Warning: array_slice() expects parameter 2 to be long, string given in %s on line %d
276: NULL
277:
278: -- Iteration 20 --
279:
280: Warning: array_slice() expects parameter 2 to be long, string given in %s on line %d
281: NULL
282:
283: -- Iteration 21 --
284:
285: Warning: array_slice() expects parameter 2 to be long, string given in %s on line %d
286: NULL
287:
288: -- Iteration 22 --
289: array(4) {
290: ["one"]=>
291: int(1)
292: [0]=>
293: int(2)
294: ["three"]=>
295: int(3)
296: [1]=>
297: int(4)
298: }
299:
300: -- Iteration 23 --
301: array(4) {
302: ["one"]=>
303: int(1)
304: [0]=>
305: int(2)
306: ["three"]=>
307: int(3)
308: [1]=>
309: int(4)
310: }
311: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>