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