1--TEST--
2Test is_int() & it's FALIASes: is_long() & is_integer() functions
3--SKIPIF--
4<?php
5if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
6?>
7--FILE--
8<?php
9/* Prototype: bool is_int ( mixed $var );
10 * Description: Finds whether the given variable is an integer
11 */
12
13echo "*** Testing is_int(), is_integer() & is_long()  with valid integer values ***\n";
14// different valid  integer values
15$valid_ints = array(
16  0,
17  1,
18  -1,
19  -2147483648, // max negative integer value
20  -2147483647,
21  2147483647,  // max positive integer value
22  2147483640,
23  0x123B,      // integer as hexadecimal
24  0x12ab,
25  0Xfff,
26  0XFA,
27  -0x80000000, // max negative integer as hexadecimal
28  0x7fffffff,  // max positive integer as hexadecimal
29  0x7FFFFFFF,  // max positive integer as hexadecimal
30  0123,        // integer as octal
31  01,       // should be quivalent to octal 1
32  -020000000000, // max negative integer as octal
33  017777777777,  // max positive integer as octal
34);
35/* loop to check that is_int() recognizes different
36   integer values, expected output: bool(true) */
37$loop_counter = 1;
38foreach ($valid_ints as $int_val ) {
39   echo "--Iteration $loop_counter--\n"; $loop_counter++;
40   var_dump( is_int($int_val) );
41   var_dump( is_integer($int_val) );
42   var_dump( is_long($int_val) );
43}
44
45echo "\n*** Testing is_int(), is_integer() & is_long() with  non integer values ***\n";
46
47// resource type variable
48$fp = fopen (__FILE__, "r");
49$dfp = opendir ( __DIR__ );
50// unset variable
51
52$unset_var = 10;
53unset ($unset_var);
54
55// other types in a array
56$not_int_types = array (
57  /* float values */
58  -2147483649, // float value
59  2147483648,  // float value
60  -0x80000001, // float value, beyond max negative int
61  0x800000001, // float value, beyond max positive int
62  020000000001, // float value, beyond max positive int
63  -020000000001, // float value, beyond max negative int
64  0.0,
65  -0.1,
66  1.0,
67  1e5,
68  -1e6,
69  1E8,
70  -1E9,
71  10.0000000000000000005,
72  10.5e+5,
73
74  /* objects */
75  new stdclass,
76
77  /* resources */
78  $fp,
79  $dfp,
80
81  /* arrays */
82  array(),
83  array(0),
84  array(1),
85  array(NULL),
86  array(null),
87  array("string"),
88  array(true),
89  array(TRUE),
90  array(false),
91  array(FALSE),
92  array(1,2,3,4),
93  array(1 => "One", "two" => 2),
94
95  /* strings */
96  "",
97  '',
98  "0",
99  '0',
100  "1",
101  '1',
102  "\x01",
103  '\x01',
104  "\01",
105  '\01',
106  'string',
107  "string",
108  "true",
109  "FALSE",
110  'false',
111  'TRUE',
112  "NULL",
113  'null',
114
115  /* booleans */
116  true,
117  false,
118  TRUE,
119  FALSE,
120
121  /* undefined and unset vars */
122  @$unset_var,
123  @$undefined_var
124);
125/* loop through the $not_int_types to see working of
126   is_int() on non integer types, expected output: bool(false) */
127$loop_counter = 1;
128foreach ($not_int_types as $type ) {
129   echo "--Iteration $loop_counter--\n"; $loop_counter++;
130   var_dump( is_int($type) );
131   var_dump( is_integer($type) );
132   var_dump( is_long($type) );
133}
134
135echo "\n*** Testing error conditions ***\n";
136//Zero argument
137var_dump( is_int() );
138var_dump( is_integer() );
139var_dump( is_long() );
140
141//arguments more than expected
142var_dump( is_int(TRUE, FALSE) );
143var_dump( is_integer(TRUE, FALSE) );
144var_dump( is_long(TRUE, FALSE) );
145
146echo "Done\n";
147
148// close the resources
149fclose($fp);
150closedir($dfp);
151
152?>
153--EXPECTF--
154*** Testing is_int(), is_integer() & is_long()  with valid integer values ***
155--Iteration 1--
156bool(true)
157bool(true)
158bool(true)
159--Iteration 2--
160bool(true)
161bool(true)
162bool(true)
163--Iteration 3--
164bool(true)
165bool(true)
166bool(true)
167--Iteration 4--
168bool(false)
169bool(false)
170bool(false)
171--Iteration 5--
172bool(true)
173bool(true)
174bool(true)
175--Iteration 6--
176bool(true)
177bool(true)
178bool(true)
179--Iteration 7--
180bool(true)
181bool(true)
182bool(true)
183--Iteration 8--
184bool(true)
185bool(true)
186bool(true)
187--Iteration 9--
188bool(true)
189bool(true)
190bool(true)
191--Iteration 10--
192bool(true)
193bool(true)
194bool(true)
195--Iteration 11--
196bool(true)
197bool(true)
198bool(true)
199--Iteration 12--
200bool(false)
201bool(false)
202bool(false)
203--Iteration 13--
204bool(true)
205bool(true)
206bool(true)
207--Iteration 14--
208bool(true)
209bool(true)
210bool(true)
211--Iteration 15--
212bool(true)
213bool(true)
214bool(true)
215--Iteration 16--
216bool(true)
217bool(true)
218bool(true)
219--Iteration 17--
220bool(false)
221bool(false)
222bool(false)
223--Iteration 18--
224bool(true)
225bool(true)
226bool(true)
227
228*** Testing is_int(), is_integer() & is_long() with  non integer values ***
229--Iteration 1--
230bool(false)
231bool(false)
232bool(false)
233--Iteration 2--
234bool(false)
235bool(false)
236bool(false)
237--Iteration 3--
238bool(false)
239bool(false)
240bool(false)
241--Iteration 4--
242bool(false)
243bool(false)
244bool(false)
245--Iteration 5--
246bool(false)
247bool(false)
248bool(false)
249--Iteration 6--
250bool(false)
251bool(false)
252bool(false)
253--Iteration 7--
254bool(false)
255bool(false)
256bool(false)
257--Iteration 8--
258bool(false)
259bool(false)
260bool(false)
261--Iteration 9--
262bool(false)
263bool(false)
264bool(false)
265--Iteration 10--
266bool(false)
267bool(false)
268bool(false)
269--Iteration 11--
270bool(false)
271bool(false)
272bool(false)
273--Iteration 12--
274bool(false)
275bool(false)
276bool(false)
277--Iteration 13--
278bool(false)
279bool(false)
280bool(false)
281--Iteration 14--
282bool(false)
283bool(false)
284bool(false)
285--Iteration 15--
286bool(false)
287bool(false)
288bool(false)
289--Iteration 16--
290bool(false)
291bool(false)
292bool(false)
293--Iteration 17--
294bool(false)
295bool(false)
296bool(false)
297--Iteration 18--
298bool(false)
299bool(false)
300bool(false)
301--Iteration 19--
302bool(false)
303bool(false)
304bool(false)
305--Iteration 20--
306bool(false)
307bool(false)
308bool(false)
309--Iteration 21--
310bool(false)
311bool(false)
312bool(false)
313--Iteration 22--
314bool(false)
315bool(false)
316bool(false)
317--Iteration 23--
318bool(false)
319bool(false)
320bool(false)
321--Iteration 24--
322bool(false)
323bool(false)
324bool(false)
325--Iteration 25--
326bool(false)
327bool(false)
328bool(false)
329--Iteration 26--
330bool(false)
331bool(false)
332bool(false)
333--Iteration 27--
334bool(false)
335bool(false)
336bool(false)
337--Iteration 28--
338bool(false)
339bool(false)
340bool(false)
341--Iteration 29--
342bool(false)
343bool(false)
344bool(false)
345--Iteration 30--
346bool(false)
347bool(false)
348bool(false)
349--Iteration 31--
350bool(false)
351bool(false)
352bool(false)
353--Iteration 32--
354bool(false)
355bool(false)
356bool(false)
357--Iteration 33--
358bool(false)
359bool(false)
360bool(false)
361--Iteration 34--
362bool(false)
363bool(false)
364bool(false)
365--Iteration 35--
366bool(false)
367bool(false)
368bool(false)
369--Iteration 36--
370bool(false)
371bool(false)
372bool(false)
373--Iteration 37--
374bool(false)
375bool(false)
376bool(false)
377--Iteration 38--
378bool(false)
379bool(false)
380bool(false)
381--Iteration 39--
382bool(false)
383bool(false)
384bool(false)
385--Iteration 40--
386bool(false)
387bool(false)
388bool(false)
389--Iteration 41--
390bool(false)
391bool(false)
392bool(false)
393--Iteration 42--
394bool(false)
395bool(false)
396bool(false)
397--Iteration 43--
398bool(false)
399bool(false)
400bool(false)
401--Iteration 44--
402bool(false)
403bool(false)
404bool(false)
405--Iteration 45--
406bool(false)
407bool(false)
408bool(false)
409--Iteration 46--
410bool(false)
411bool(false)
412bool(false)
413--Iteration 47--
414bool(false)
415bool(false)
416bool(false)
417--Iteration 48--
418bool(false)
419bool(false)
420bool(false)
421--Iteration 49--
422bool(false)
423bool(false)
424bool(false)
425--Iteration 50--
426bool(false)
427bool(false)
428bool(false)
429--Iteration 51--
430bool(false)
431bool(false)
432bool(false)
433--Iteration 52--
434bool(false)
435bool(false)
436bool(false)
437--Iteration 53--
438bool(false)
439bool(false)
440bool(false)
441--Iteration 54--
442bool(false)
443bool(false)
444bool(false)
445
446*** Testing error conditions ***
447
448Warning: is_int() expects exactly 1 parameter, 0 given in %s on line %d
449bool(false)
450
451Warning: is_integer() expects exactly 1 parameter, 0 given in %s on line %d
452bool(false)
453
454Warning: is_long() expects exactly 1 parameter, 0 given in %s on line %d
455bool(false)
456
457Warning: is_int() expects exactly 1 parameter, 2 given in %s on line %d
458bool(false)
459
460Warning: is_integer() expects exactly 1 parameter, 2 given in %s on line %d
461bool(false)
462
463Warning: is_long() expects exactly 1 parameter, 2 given in %s on line %d
464bool(false)
465Done
466