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