1--TEST--
2Test is_float() & its is_double() alias
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_float(), is_double() with float values***\n";
10// different valid  float values
11$floats = array(
12  -2147483649, // float value
13  2147483648,  // float value
14  -0x80000001, // float value, beyond max negative int
15  0x800000001, // float value, beyond max positive int
16  020000000001, // float value, beyond max positive int
17  -020000000001, // float value, beyond max negative int
18  0.0,
19  -0.1,
20  10.0000000000000000005,
21  10.5e+5,
22  1e5,
23  -1e5,
24  1e-5,
25  -1e-5,
26  1e+5,
27  -1e+5,
28  1E5,
29  -1E5,
30  1E+5,
31  -1E+5,
32  1E-5,
33  -1E-5,
34  .5e+7,
35  -.5e+7,
36  .6e-19,
37  -.6e-19,
38  .05E+44,
39  -.05E+44,
40  .0034E-30,
41  -.0034E-30
42);
43/* loop to check that is_float(), is_double() & recognizes
44   different float values, expected: bool(true)  */
45$loop_counter = 1;
46foreach ($floats as $float ) {
47  echo "-- Iteration $loop_counter --\n"; $loop_counter++;
48  var_dump( is_float($float) );
49  var_dump( is_double($float) );
50}
51
52echo "\n*** Testing is_float(), is_double() with non float values ***\n";
53// get a resource type variable
54$fp = fopen (__FILE__, "r");
55$dfp = opendir ( __DIR__ );
56
57// unset variable
58$unset_var = 10;
59unset ($unset_var);
60
61// non_scalar values, objects, arrays, resources and boolean
62class foo
63{
64  var $array = array(10.5);
65};
66$object = new foo();
67
68$not_floats = array (
69  new foo, //object
70  $object,
71
72  $fp,  // resource
73  $dfp,
74
75  array(),  // arrays
76  array(NULL),
77  array(0.5e10),
78  array(1,2,3,4),
79  array("string"),
80
81  NULL,  // nulls
82  null,
83
84  true,  // boolean
85  TRUE,
86  false,
87  FALSE,
88
89  "",  // strings
90  '',
91  "0",
92  '0',
93  "0.0",
94  '0.0',
95  '0.5',
96  "-0.5",
97  "1e5",
98  '1e5',
99  '1.5e6_string',
100  "1.5e6_string",
101
102  1,  // integers, hex and octal
103  -1,
104  0,
105  12345,
106  0xFF55,
107  -0x673,
108  0123,
109  -0123,
110
111  @$unset_var,  // unset variable
112  @$undefined_var
113);
114/* loop through the $not_floats to see working of
115   is_float(), is_double() on objects,
116    arrays, boolean and others */
117$loop_counter = 1;
118foreach ($not_floats as $value ) {
119  echo "--Iteration $loop_counter--\n"; $loop_counter++;
120  var_dump( is_float($value) );
121  var_dump( is_double($value) );
122}
123
124echo "Done\n";
125
126// close the resources used
127fclose($fp);
128closedir($dfp);
129
130?>
131--EXPECT--
132*** Testing is_float(), is_double() with float values***
133-- Iteration 1 --
134bool(true)
135bool(true)
136-- Iteration 2 --
137bool(true)
138bool(true)
139-- Iteration 3 --
140bool(true)
141bool(true)
142-- Iteration 4 --
143bool(true)
144bool(true)
145-- Iteration 5 --
146bool(true)
147bool(true)
148-- Iteration 6 --
149bool(true)
150bool(true)
151-- Iteration 7 --
152bool(true)
153bool(true)
154-- Iteration 8 --
155bool(true)
156bool(true)
157-- Iteration 9 --
158bool(true)
159bool(true)
160-- Iteration 10 --
161bool(true)
162bool(true)
163-- Iteration 11 --
164bool(true)
165bool(true)
166-- Iteration 12 --
167bool(true)
168bool(true)
169-- Iteration 13 --
170bool(true)
171bool(true)
172-- Iteration 14 --
173bool(true)
174bool(true)
175-- Iteration 15 --
176bool(true)
177bool(true)
178-- Iteration 16 --
179bool(true)
180bool(true)
181-- Iteration 17 --
182bool(true)
183bool(true)
184-- Iteration 18 --
185bool(true)
186bool(true)
187-- Iteration 19 --
188bool(true)
189bool(true)
190-- Iteration 20 --
191bool(true)
192bool(true)
193-- Iteration 21 --
194bool(true)
195bool(true)
196-- Iteration 22 --
197bool(true)
198bool(true)
199-- Iteration 23 --
200bool(true)
201bool(true)
202-- Iteration 24 --
203bool(true)
204bool(true)
205-- Iteration 25 --
206bool(true)
207bool(true)
208-- Iteration 26 --
209bool(true)
210bool(true)
211-- Iteration 27 --
212bool(true)
213bool(true)
214-- Iteration 28 --
215bool(true)
216bool(true)
217-- Iteration 29 --
218bool(true)
219bool(true)
220-- Iteration 30 --
221bool(true)
222bool(true)
223
224*** Testing is_float(), is_double() with non float values ***
225--Iteration 1--
226bool(false)
227bool(false)
228--Iteration 2--
229bool(false)
230bool(false)
231--Iteration 3--
232bool(false)
233bool(false)
234--Iteration 4--
235bool(false)
236bool(false)
237--Iteration 5--
238bool(false)
239bool(false)
240--Iteration 6--
241bool(false)
242bool(false)
243--Iteration 7--
244bool(false)
245bool(false)
246--Iteration 8--
247bool(false)
248bool(false)
249--Iteration 9--
250bool(false)
251bool(false)
252--Iteration 10--
253bool(false)
254bool(false)
255--Iteration 11--
256bool(false)
257bool(false)
258--Iteration 12--
259bool(false)
260bool(false)
261--Iteration 13--
262bool(false)
263bool(false)
264--Iteration 14--
265bool(false)
266bool(false)
267--Iteration 15--
268bool(false)
269bool(false)
270--Iteration 16--
271bool(false)
272bool(false)
273--Iteration 17--
274bool(false)
275bool(false)
276--Iteration 18--
277bool(false)
278bool(false)
279--Iteration 19--
280bool(false)
281bool(false)
282--Iteration 20--
283bool(false)
284bool(false)
285--Iteration 21--
286bool(false)
287bool(false)
288--Iteration 22--
289bool(false)
290bool(false)
291--Iteration 23--
292bool(false)
293bool(false)
294--Iteration 24--
295bool(false)
296bool(false)
297--Iteration 25--
298bool(false)
299bool(false)
300--Iteration 26--
301bool(false)
302bool(false)
303--Iteration 27--
304bool(false)
305bool(false)
306--Iteration 28--
307bool(false)
308bool(false)
309--Iteration 29--
310bool(false)
311bool(false)
312--Iteration 30--
313bool(false)
314bool(false)
315--Iteration 31--
316bool(false)
317bool(false)
318--Iteration 32--
319bool(false)
320bool(false)
321--Iteration 33--
322bool(false)
323bool(false)
324--Iteration 34--
325bool(false)
326bool(false)
327--Iteration 35--
328bool(false)
329bool(false)
330--Iteration 36--
331bool(false)
332bool(false)
333--Iteration 37--
334bool(false)
335bool(false)
336Done
337