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