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