1--TEST--
2Test fscanf() function: usage variations - hexa formats with float values
3--SKIPIF--
4<?php
5if (PHP_INT_SIZE != 4) {
6	die("skip this test is for 32bit platform only");
7}
8?>
9--FILE--
10<?php
11
12/*
13  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
14  Description: Parses input from a file according to a format
15*/
16
17/* Test fscanf() to scan float values using different hexa format types */
18
19$file_path = __DIR__;
20
21echo "*** Test fscanf(): different hexa format types with float values ***\n";
22
23// create a file
24$filename = "$file_path/fscanf_variation34.tmp";
25$file_handle = fopen($filename, "w");
26if($file_handle == false)
27  exit("Error:failed to open file $filename");
28
29// array of float type values
30
31$float_values = array (
32  -2147483649,
33  2147483648,
34  -0x80000001, // float value, beyond max negative int
35  0x800000001, // float value, beyond max positive int
36  020000000001, // float value, beyond max positive int
37  -020000000001, // float value, beyond max negative int
38  0.0,
39  -0.1,
40  1.0,
41  1e5,
42  -1e6,
43  1E8,
44  -1E9,
45  10.0000000000000000005,
46  10.5e+5
47);
48
49$hexa_formats = array( 	"%x",
50			"%hx", "%lx", "%Lx",
51		        " %x", "%x ", "% x",
52		        "\t%x", "\n%x", "%4x",
53	  	        "%30x", "%[0-9A-Za-z]", "%*x");
54
55$counter = 1;
56
57// writing to the file
58foreach($float_values as $value) {
59  @fprintf($file_handle, $value);
60  @fprintf($file_handle, "\n");
61}
62// closing the file
63fclose($file_handle);
64
65// opening the file for reading
66$file_handle = fopen($filename, "r");
67if($file_handle == false) {
68  exit("Error:failed to open file $filename");
69}
70
71$counter = 1;
72// reading the values from file using different hexa formats
73foreach($hexa_formats as $hexa_format) {
74  // rewind the file so that for every foreach iteration the file pointer starts from bof
75  rewind($file_handle);
76  echo "\n-- iteration $counter --\n";
77  while( !feof($file_handle) ) {
78    var_dump( fscanf($file_handle,$hexa_format) );
79  }
80  $counter++;
81}
82
83echo "\n*** Done ***";
84?>
85--CLEAN--
86<?php
87$file_path = __DIR__;
88$filename = "$file_path/fscanf_variation34.tmp";
89unlink($filename);
90?>
91--EXPECTF--
92*** Test fscanf(): different hexa format types with float values ***
93
94-- iteration 1 --
95array(1) {
96  [0]=>
97  int(-2147483648)
98}
99array(1) {
100  [0]=>
101  int(2147483647)
102}
103array(1) {
104  [0]=>
105  int(-2147483648)
106}
107array(1) {
108  [0]=>
109  int(2147483647)
110}
111array(1) {
112  [0]=>
113  int(2147483647)
114}
115array(1) {
116  [0]=>
117  int(-2147483648)
118}
119array(1) {
120  [0]=>
121  int(0)
122}
123array(1) {
124  [0]=>
125  int(0)
126}
127array(1) {
128  [0]=>
129  int(1)
130}
131array(1) {
132  [0]=>
133  int(1048576)
134}
135array(1) {
136  [0]=>
137  int(-16777216)
138}
139array(1) {
140  [0]=>
141  int(2147483647)
142}
143array(1) {
144  [0]=>
145  int(-2147483648)
146}
147array(1) {
148  [0]=>
149  int(16)
150}
151array(1) {
152  [0]=>
153  int(17104896)
154}
155bool(false)
156
157-- iteration 2 --
158array(1) {
159  [0]=>
160  int(-2147483648)
161}
162array(1) {
163  [0]=>
164  int(2147483647)
165}
166array(1) {
167  [0]=>
168  int(-2147483648)
169}
170array(1) {
171  [0]=>
172  int(2147483647)
173}
174array(1) {
175  [0]=>
176  int(2147483647)
177}
178array(1) {
179  [0]=>
180  int(-2147483648)
181}
182array(1) {
183  [0]=>
184  int(0)
185}
186array(1) {
187  [0]=>
188  int(0)
189}
190array(1) {
191  [0]=>
192  int(1)
193}
194array(1) {
195  [0]=>
196  int(1048576)
197}
198array(1) {
199  [0]=>
200  int(-16777216)
201}
202array(1) {
203  [0]=>
204  int(2147483647)
205}
206array(1) {
207  [0]=>
208  int(-2147483648)
209}
210array(1) {
211  [0]=>
212  int(16)
213}
214array(1) {
215  [0]=>
216  int(17104896)
217}
218bool(false)
219
220-- iteration 3 --
221array(1) {
222  [0]=>
223  int(-2147483648)
224}
225array(1) {
226  [0]=>
227  int(2147483647)
228}
229array(1) {
230  [0]=>
231  int(-2147483648)
232}
233array(1) {
234  [0]=>
235  int(2147483647)
236}
237array(1) {
238  [0]=>
239  int(2147483647)
240}
241array(1) {
242  [0]=>
243  int(-2147483648)
244}
245array(1) {
246  [0]=>
247  int(0)
248}
249array(1) {
250  [0]=>
251  int(0)
252}
253array(1) {
254  [0]=>
255  int(1)
256}
257array(1) {
258  [0]=>
259  int(1048576)
260}
261array(1) {
262  [0]=>
263  int(-16777216)
264}
265array(1) {
266  [0]=>
267  int(2147483647)
268}
269array(1) {
270  [0]=>
271  int(-2147483648)
272}
273array(1) {
274  [0]=>
275  int(16)
276}
277array(1) {
278  [0]=>
279  int(17104896)
280}
281bool(false)
282
283-- iteration 4 --
284array(1) {
285  [0]=>
286  int(-2147483648)
287}
288array(1) {
289  [0]=>
290  int(2147483647)
291}
292array(1) {
293  [0]=>
294  int(-2147483648)
295}
296array(1) {
297  [0]=>
298  int(2147483647)
299}
300array(1) {
301  [0]=>
302  int(2147483647)
303}
304array(1) {
305  [0]=>
306  int(-2147483648)
307}
308array(1) {
309  [0]=>
310  int(0)
311}
312array(1) {
313  [0]=>
314  int(0)
315}
316array(1) {
317  [0]=>
318  int(1)
319}
320array(1) {
321  [0]=>
322  int(1048576)
323}
324array(1) {
325  [0]=>
326  int(-16777216)
327}
328array(1) {
329  [0]=>
330  int(2147483647)
331}
332array(1) {
333  [0]=>
334  int(-2147483648)
335}
336array(1) {
337  [0]=>
338  int(16)
339}
340array(1) {
341  [0]=>
342  int(17104896)
343}
344bool(false)
345
346-- iteration 5 --
347array(1) {
348  [0]=>
349  int(-2147483648)
350}
351array(1) {
352  [0]=>
353  int(2147483647)
354}
355array(1) {
356  [0]=>
357  int(-2147483648)
358}
359array(1) {
360  [0]=>
361  int(2147483647)
362}
363array(1) {
364  [0]=>
365  int(2147483647)
366}
367array(1) {
368  [0]=>
369  int(-2147483648)
370}
371array(1) {
372  [0]=>
373  int(0)
374}
375array(1) {
376  [0]=>
377  int(0)
378}
379array(1) {
380  [0]=>
381  int(1)
382}
383array(1) {
384  [0]=>
385  int(1048576)
386}
387array(1) {
388  [0]=>
389  int(-16777216)
390}
391array(1) {
392  [0]=>
393  int(2147483647)
394}
395array(1) {
396  [0]=>
397  int(-2147483648)
398}
399array(1) {
400  [0]=>
401  int(16)
402}
403array(1) {
404  [0]=>
405  int(17104896)
406}
407bool(false)
408
409-- iteration 6 --
410array(1) {
411  [0]=>
412  int(-2147483648)
413}
414array(1) {
415  [0]=>
416  int(2147483647)
417}
418array(1) {
419  [0]=>
420  int(-2147483648)
421}
422array(1) {
423  [0]=>
424  int(2147483647)
425}
426array(1) {
427  [0]=>
428  int(2147483647)
429}
430array(1) {
431  [0]=>
432  int(-2147483648)
433}
434array(1) {
435  [0]=>
436  int(0)
437}
438array(1) {
439  [0]=>
440  int(0)
441}
442array(1) {
443  [0]=>
444  int(1)
445}
446array(1) {
447  [0]=>
448  int(1048576)
449}
450array(1) {
451  [0]=>
452  int(-16777216)
453}
454array(1) {
455  [0]=>
456  int(2147483647)
457}
458array(1) {
459  [0]=>
460  int(-2147483648)
461}
462array(1) {
463  [0]=>
464  int(16)
465}
466array(1) {
467  [0]=>
468  int(17104896)
469}
470bool(false)
471
472-- iteration 7 --
473
474Warning: fscanf(): Bad scan conversion character " " in %s on line %d
475NULL
476
477Warning: fscanf(): Bad scan conversion character " " in %s on line %d
478NULL
479
480Warning: fscanf(): Bad scan conversion character " " in %s on line %d
481NULL
482
483Warning: fscanf(): Bad scan conversion character " " in %s on line %d
484NULL
485
486Warning: fscanf(): Bad scan conversion character " " in %s on line %d
487NULL
488
489Warning: fscanf(): Bad scan conversion character " " in %s on line %d
490NULL
491
492Warning: fscanf(): Bad scan conversion character " " in %s on line %d
493NULL
494
495Warning: fscanf(): Bad scan conversion character " " in %s on line %d
496NULL
497
498Warning: fscanf(): Bad scan conversion character " " in %s on line %d
499NULL
500
501Warning: fscanf(): Bad scan conversion character " " in %s on line %d
502NULL
503
504Warning: fscanf(): Bad scan conversion character " " in %s on line %d
505NULL
506
507Warning: fscanf(): Bad scan conversion character " " in %s on line %d
508NULL
509
510Warning: fscanf(): Bad scan conversion character " " in %s on line %d
511NULL
512
513Warning: fscanf(): Bad scan conversion character " " in %s on line %d
514NULL
515
516Warning: fscanf(): Bad scan conversion character " " in %s on line %d
517NULL
518bool(false)
519
520-- iteration 8 --
521array(1) {
522  [0]=>
523  int(-2147483648)
524}
525array(1) {
526  [0]=>
527  int(2147483647)
528}
529array(1) {
530  [0]=>
531  int(-2147483648)
532}
533array(1) {
534  [0]=>
535  int(2147483647)
536}
537array(1) {
538  [0]=>
539  int(2147483647)
540}
541array(1) {
542  [0]=>
543  int(-2147483648)
544}
545array(1) {
546  [0]=>
547  int(0)
548}
549array(1) {
550  [0]=>
551  int(0)
552}
553array(1) {
554  [0]=>
555  int(1)
556}
557array(1) {
558  [0]=>
559  int(1048576)
560}
561array(1) {
562  [0]=>
563  int(-16777216)
564}
565array(1) {
566  [0]=>
567  int(2147483647)
568}
569array(1) {
570  [0]=>
571  int(-2147483648)
572}
573array(1) {
574  [0]=>
575  int(16)
576}
577array(1) {
578  [0]=>
579  int(17104896)
580}
581bool(false)
582
583-- iteration 9 --
584array(1) {
585  [0]=>
586  int(-2147483648)
587}
588array(1) {
589  [0]=>
590  int(2147483647)
591}
592array(1) {
593  [0]=>
594  int(-2147483648)
595}
596array(1) {
597  [0]=>
598  int(2147483647)
599}
600array(1) {
601  [0]=>
602  int(2147483647)
603}
604array(1) {
605  [0]=>
606  int(-2147483648)
607}
608array(1) {
609  [0]=>
610  int(0)
611}
612array(1) {
613  [0]=>
614  int(0)
615}
616array(1) {
617  [0]=>
618  int(1)
619}
620array(1) {
621  [0]=>
622  int(1048576)
623}
624array(1) {
625  [0]=>
626  int(-16777216)
627}
628array(1) {
629  [0]=>
630  int(2147483647)
631}
632array(1) {
633  [0]=>
634  int(-2147483648)
635}
636array(1) {
637  [0]=>
638  int(16)
639}
640array(1) {
641  [0]=>
642  int(17104896)
643}
644bool(false)
645
646-- iteration 10 --
647array(1) {
648  [0]=>
649  int(-532)
650}
651array(1) {
652  [0]=>
653  int(8519)
654}
655array(1) {
656  [0]=>
657  int(-532)
658}
659array(1) {
660  [0]=>
661  int(13365)
662}
663array(1) {
664  [0]=>
665  int(8519)
666}
667array(1) {
668  [0]=>
669  int(-532)
670}
671array(1) {
672  [0]=>
673  int(0)
674}
675array(1) {
676  [0]=>
677  int(0)
678}
679array(1) {
680  [0]=>
681  int(1)
682}
683array(1) {
684  [0]=>
685  int(4096)
686}
687array(1) {
688  [0]=>
689  int(-256)
690}
691array(1) {
692  [0]=>
693  int(4096)
694}
695array(1) {
696  [0]=>
697  int(-256)
698}
699array(1) {
700  [0]=>
701  int(16)
702}
703array(1) {
704  [0]=>
705  int(4176)
706}
707bool(false)
708
709-- iteration 11 --
710array(1) {
711  [0]=>
712  int(-2147483648)
713}
714array(1) {
715  [0]=>
716  int(2147483647)
717}
718array(1) {
719  [0]=>
720  int(-2147483648)
721}
722array(1) {
723  [0]=>
724  int(2147483647)
725}
726array(1) {
727  [0]=>
728  int(2147483647)
729}
730array(1) {
731  [0]=>
732  int(-2147483648)
733}
734array(1) {
735  [0]=>
736  int(0)
737}
738array(1) {
739  [0]=>
740  int(0)
741}
742array(1) {
743  [0]=>
744  int(1)
745}
746array(1) {
747  [0]=>
748  int(1048576)
749}
750array(1) {
751  [0]=>
752  int(-16777216)
753}
754array(1) {
755  [0]=>
756  int(2147483647)
757}
758array(1) {
759  [0]=>
760  int(-2147483648)
761}
762array(1) {
763  [0]=>
764  int(16)
765}
766array(1) {
767  [0]=>
768  int(17104896)
769}
770bool(false)
771
772-- iteration 12 --
773array(1) {
774  [0]=>
775  NULL
776}
777array(1) {
778  [0]=>
779  string(10) "2147483648"
780}
781array(1) {
782  [0]=>
783  NULL
784}
785array(1) {
786  [0]=>
787  string(11) "34359738369"
788}
789array(1) {
790  [0]=>
791  string(10) "2147483649"
792}
793array(1) {
794  [0]=>
795  NULL
796}
797array(1) {
798  [0]=>
799  string(1) "0"
800}
801array(1) {
802  [0]=>
803  NULL
804}
805array(1) {
806  [0]=>
807  string(1) "1"
808}
809array(1) {
810  [0]=>
811  string(6) "100000"
812}
813array(1) {
814  [0]=>
815  NULL
816}
817array(1) {
818  [0]=>
819  string(9) "100000000"
820}
821array(1) {
822  [0]=>
823  NULL
824}
825array(1) {
826  [0]=>
827  string(2) "10"
828}
829array(1) {
830  [0]=>
831  string(7) "1050000"
832}
833bool(false)
834
835-- iteration 13 --
836array(0) {
837}
838array(0) {
839}
840array(0) {
841}
842array(0) {
843}
844array(0) {
845}
846array(0) {
847}
848array(0) {
849}
850array(0) {
851}
852array(0) {
853}
854array(0) {
855}
856array(0) {
857}
858array(0) {
859}
860array(0) {
861}
862array(0) {
863}
864array(0) {
865}
866bool(false)
867
868*** Done ***
869