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