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