1--TEST--
2Test fscanf() function: usage variations - unsigned int formats with integer 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 different integer values using different unsigned int format types */
18
19$file_path = dirname(__FILE__);
20
21echo "*** Test fscanf(): different unsigned int format types with different integer values ***\n";
22
23// create a file
24$filename = "$file_path/fscanf_variation39.tmp";
25$file_handle = fopen($filename, "w");
26if($file_handle == false)
27  exit("Error:failed to open file $filename");
28
29// different valid  integer values
30$valid_ints = array(
31  0,
32  1,
33  -1,
34  -2147483648, // max negative integer value
35  -2147483647,
36  2147483647,  // max positive integer value
37  2147483640,
38  0x123B,      // integer as hexadecimal
39  0x12ab,
40  0Xfff,
41  0XFA,
42  -0x80000000, // max negative integer as hexadecimal
43  0x7fffffff,  // max postive integer as hexadecimal
44  0x7FFFFFFF,  // max postive integer as hexadecimal
45  0123,        // integer as octal
46  01912,       // should be quivalent to octal 1
47  -020000000000, // max negative integer as octal
48  017777777777  // max positive integer as octal
49);
50// various unsigned int formats
51$unsigned_formats = array( "%u", "%hu", "%lu", "%Lu", " %u", "%u ", "% u", "\t%u", "\n%u", "%4u", "%30u", "%[0-9]", "%*u");
52
53$counter = 1;
54
55// writing to the file
56foreach($valid_ints as $int_value) {
57  @fprintf($file_handle, $int_value);
58  @fprintf($file_handle, "\n");
59}
60// closing the file
61fclose($file_handle);
62
63// opening the file for reading
64$file_handle = fopen($filename, "r");
65if($file_handle == false) {
66  exit("Error:failed to open file $filename");
67}
68
69$counter = 1;
70// reading the values from file using different unsigned int formats
71foreach($unsigned_formats as $unsigned_format) {
72  // rewind the file so that for every foreach iteration the file pointer starts from bof
73  rewind($file_handle);
74  echo "\n-- iteration $counter --\n";
75  while( !feof($file_handle) ) {
76    var_dump( fscanf($file_handle,$unsigned_format) );
77  }
78  $counter++;
79}
80
81echo "\n*** Done ***";
82?>
83--CLEAN--
84<?php
85$file_path = dirname(__FILE__);
86$filename = "$file_path/fscanf_variation39.tmp";
87unlink($filename);
88?>
89--EXPECTF--
90*** Test fscanf(): different unsigned int format types with different integer values ***
91
92-- iteration 1 --
93array(1) {
94  [0]=>
95  int(0)
96}
97array(1) {
98  [0]=>
99  int(1)
100}
101array(1) {
102  [0]=>
103  string(10) "4294967295"
104}
105array(1) {
106  [0]=>
107  string(10) "2147483648"
108}
109array(1) {
110  [0]=>
111  string(10) "2147483649"
112}
113array(1) {
114  [0]=>
115  int(2147483647)
116}
117array(1) {
118  [0]=>
119  int(2147483640)
120}
121array(1) {
122  [0]=>
123  int(4667)
124}
125array(1) {
126  [0]=>
127  int(4779)
128}
129array(1) {
130  [0]=>
131  int(4095)
132}
133array(1) {
134  [0]=>
135  int(250)
136}
137array(1) {
138  [0]=>
139  string(10) "2147483648"
140}
141array(1) {
142  [0]=>
143  int(2147483647)
144}
145array(1) {
146  [0]=>
147  int(2147483647)
148}
149array(1) {
150  [0]=>
151  int(83)
152}
153array(1) {
154  [0]=>
155  int(1)
156}
157array(1) {
158  [0]=>
159  string(10) "2147483648"
160}
161array(1) {
162  [0]=>
163  int(2147483647)
164}
165bool(false)
166
167-- iteration 2 --
168array(1) {
169  [0]=>
170  int(0)
171}
172array(1) {
173  [0]=>
174  int(1)
175}
176array(1) {
177  [0]=>
178  string(10) "4294967295"
179}
180array(1) {
181  [0]=>
182  string(10) "2147483648"
183}
184array(1) {
185  [0]=>
186  string(10) "2147483649"
187}
188array(1) {
189  [0]=>
190  int(2147483647)
191}
192array(1) {
193  [0]=>
194  int(2147483640)
195}
196array(1) {
197  [0]=>
198  int(4667)
199}
200array(1) {
201  [0]=>
202  int(4779)
203}
204array(1) {
205  [0]=>
206  int(4095)
207}
208array(1) {
209  [0]=>
210  int(250)
211}
212array(1) {
213  [0]=>
214  string(10) "2147483648"
215}
216array(1) {
217  [0]=>
218  int(2147483647)
219}
220array(1) {
221  [0]=>
222  int(2147483647)
223}
224array(1) {
225  [0]=>
226  int(83)
227}
228array(1) {
229  [0]=>
230  int(1)
231}
232array(1) {
233  [0]=>
234  string(10) "2147483648"
235}
236array(1) {
237  [0]=>
238  int(2147483647)
239}
240bool(false)
241
242-- iteration 3 --
243array(1) {
244  [0]=>
245  int(0)
246}
247array(1) {
248  [0]=>
249  int(1)
250}
251array(1) {
252  [0]=>
253  string(10) "4294967295"
254}
255array(1) {
256  [0]=>
257  string(10) "2147483648"
258}
259array(1) {
260  [0]=>
261  string(10) "2147483649"
262}
263array(1) {
264  [0]=>
265  int(2147483647)
266}
267array(1) {
268  [0]=>
269  int(2147483640)
270}
271array(1) {
272  [0]=>
273  int(4667)
274}
275array(1) {
276  [0]=>
277  int(4779)
278}
279array(1) {
280  [0]=>
281  int(4095)
282}
283array(1) {
284  [0]=>
285  int(250)
286}
287array(1) {
288  [0]=>
289  string(10) "2147483648"
290}
291array(1) {
292  [0]=>
293  int(2147483647)
294}
295array(1) {
296  [0]=>
297  int(2147483647)
298}
299array(1) {
300  [0]=>
301  int(83)
302}
303array(1) {
304  [0]=>
305  int(1)
306}
307array(1) {
308  [0]=>
309  string(10) "2147483648"
310}
311array(1) {
312  [0]=>
313  int(2147483647)
314}
315bool(false)
316
317-- iteration 4 --
318array(1) {
319  [0]=>
320  int(0)
321}
322array(1) {
323  [0]=>
324  int(1)
325}
326array(1) {
327  [0]=>
328  string(10) "4294967295"
329}
330array(1) {
331  [0]=>
332  string(10) "2147483648"
333}
334array(1) {
335  [0]=>
336  string(10) "2147483649"
337}
338array(1) {
339  [0]=>
340  int(2147483647)
341}
342array(1) {
343  [0]=>
344  int(2147483640)
345}
346array(1) {
347  [0]=>
348  int(4667)
349}
350array(1) {
351  [0]=>
352  int(4779)
353}
354array(1) {
355  [0]=>
356  int(4095)
357}
358array(1) {
359  [0]=>
360  int(250)
361}
362array(1) {
363  [0]=>
364  string(10) "2147483648"
365}
366array(1) {
367  [0]=>
368  int(2147483647)
369}
370array(1) {
371  [0]=>
372  int(2147483647)
373}
374array(1) {
375  [0]=>
376  int(83)
377}
378array(1) {
379  [0]=>
380  int(1)
381}
382array(1) {
383  [0]=>
384  string(10) "2147483648"
385}
386array(1) {
387  [0]=>
388  int(2147483647)
389}
390bool(false)
391
392-- iteration 5 --
393array(1) {
394  [0]=>
395  int(0)
396}
397array(1) {
398  [0]=>
399  int(1)
400}
401array(1) {
402  [0]=>
403  string(10) "4294967295"
404}
405array(1) {
406  [0]=>
407  string(10) "2147483648"
408}
409array(1) {
410  [0]=>
411  string(10) "2147483649"
412}
413array(1) {
414  [0]=>
415  int(2147483647)
416}
417array(1) {
418  [0]=>
419  int(2147483640)
420}
421array(1) {
422  [0]=>
423  int(4667)
424}
425array(1) {
426  [0]=>
427  int(4779)
428}
429array(1) {
430  [0]=>
431  int(4095)
432}
433array(1) {
434  [0]=>
435  int(250)
436}
437array(1) {
438  [0]=>
439  string(10) "2147483648"
440}
441array(1) {
442  [0]=>
443  int(2147483647)
444}
445array(1) {
446  [0]=>
447  int(2147483647)
448}
449array(1) {
450  [0]=>
451  int(83)
452}
453array(1) {
454  [0]=>
455  int(1)
456}
457array(1) {
458  [0]=>
459  string(10) "2147483648"
460}
461array(1) {
462  [0]=>
463  int(2147483647)
464}
465bool(false)
466
467-- iteration 6 --
468array(1) {
469  [0]=>
470  int(0)
471}
472array(1) {
473  [0]=>
474  int(1)
475}
476array(1) {
477  [0]=>
478  string(10) "4294967295"
479}
480array(1) {
481  [0]=>
482  string(10) "2147483648"
483}
484array(1) {
485  [0]=>
486  string(10) "2147483649"
487}
488array(1) {
489  [0]=>
490  int(2147483647)
491}
492array(1) {
493  [0]=>
494  int(2147483640)
495}
496array(1) {
497  [0]=>
498  int(4667)
499}
500array(1) {
501  [0]=>
502  int(4779)
503}
504array(1) {
505  [0]=>
506  int(4095)
507}
508array(1) {
509  [0]=>
510  int(250)
511}
512array(1) {
513  [0]=>
514  string(10) "2147483648"
515}
516array(1) {
517  [0]=>
518  int(2147483647)
519}
520array(1) {
521  [0]=>
522  int(2147483647)
523}
524array(1) {
525  [0]=>
526  int(83)
527}
528array(1) {
529  [0]=>
530  int(1)
531}
532array(1) {
533  [0]=>
534  string(10) "2147483648"
535}
536array(1) {
537  [0]=>
538  int(2147483647)
539}
540bool(false)
541
542-- iteration 7 --
543
544Warning: fscanf(): Bad scan conversion character " " in %s on line %d
545NULL
546
547Warning: fscanf(): Bad scan conversion character " " in %s on line %d
548NULL
549
550Warning: fscanf(): Bad scan conversion character " " in %s on line %d
551NULL
552
553Warning: fscanf(): Bad scan conversion character " " in %s on line %d
554NULL
555
556Warning: fscanf(): Bad scan conversion character " " in %s on line %d
557NULL
558
559Warning: fscanf(): Bad scan conversion character " " in %s on line %d
560NULL
561
562Warning: fscanf(): Bad scan conversion character " " in %s on line %d
563NULL
564
565Warning: fscanf(): Bad scan conversion character " " in %s on line %d
566NULL
567
568Warning: fscanf(): Bad scan conversion character " " in %s on line %d
569NULL
570
571Warning: fscanf(): Bad scan conversion character " " in %s on line %d
572NULL
573
574Warning: fscanf(): Bad scan conversion character " " in %s on line %d
575NULL
576
577Warning: fscanf(): Bad scan conversion character " " in %s on line %d
578NULL
579
580Warning: fscanf(): Bad scan conversion character " " in %s on line %d
581NULL
582
583Warning: fscanf(): Bad scan conversion character " " in %s on line %d
584NULL
585
586Warning: fscanf(): Bad scan conversion character " " in %s on line %d
587NULL
588
589Warning: fscanf(): Bad scan conversion character " " in %s on line %d
590NULL
591
592Warning: fscanf(): Bad scan conversion character " " in %s on line %d
593NULL
594
595Warning: fscanf(): Bad scan conversion character " " in %s on line %d
596NULL
597bool(false)
598
599-- iteration 8 --
600array(1) {
601  [0]=>
602  int(0)
603}
604array(1) {
605  [0]=>
606  int(1)
607}
608array(1) {
609  [0]=>
610  string(10) "4294967295"
611}
612array(1) {
613  [0]=>
614  string(10) "2147483648"
615}
616array(1) {
617  [0]=>
618  string(10) "2147483649"
619}
620array(1) {
621  [0]=>
622  int(2147483647)
623}
624array(1) {
625  [0]=>
626  int(2147483640)
627}
628array(1) {
629  [0]=>
630  int(4667)
631}
632array(1) {
633  [0]=>
634  int(4779)
635}
636array(1) {
637  [0]=>
638  int(4095)
639}
640array(1) {
641  [0]=>
642  int(250)
643}
644array(1) {
645  [0]=>
646  string(10) "2147483648"
647}
648array(1) {
649  [0]=>
650  int(2147483647)
651}
652array(1) {
653  [0]=>
654  int(2147483647)
655}
656array(1) {
657  [0]=>
658  int(83)
659}
660array(1) {
661  [0]=>
662  int(1)
663}
664array(1) {
665  [0]=>
666  string(10) "2147483648"
667}
668array(1) {
669  [0]=>
670  int(2147483647)
671}
672bool(false)
673
674-- iteration 9 --
675array(1) {
676  [0]=>
677  int(0)
678}
679array(1) {
680  [0]=>
681  int(1)
682}
683array(1) {
684  [0]=>
685  string(10) "4294967295"
686}
687array(1) {
688  [0]=>
689  string(10) "2147483648"
690}
691array(1) {
692  [0]=>
693  string(10) "2147483649"
694}
695array(1) {
696  [0]=>
697  int(2147483647)
698}
699array(1) {
700  [0]=>
701  int(2147483640)
702}
703array(1) {
704  [0]=>
705  int(4667)
706}
707array(1) {
708  [0]=>
709  int(4779)
710}
711array(1) {
712  [0]=>
713  int(4095)
714}
715array(1) {
716  [0]=>
717  int(250)
718}
719array(1) {
720  [0]=>
721  string(10) "2147483648"
722}
723array(1) {
724  [0]=>
725  int(2147483647)
726}
727array(1) {
728  [0]=>
729  int(2147483647)
730}
731array(1) {
732  [0]=>
733  int(83)
734}
735array(1) {
736  [0]=>
737  int(1)
738}
739array(1) {
740  [0]=>
741  string(10) "2147483648"
742}
743array(1) {
744  [0]=>
745  int(2147483647)
746}
747bool(false)
748
749-- iteration 10 --
750array(1) {
751  [0]=>
752  int(0)
753}
754array(1) {
755  [0]=>
756  int(1)
757}
758array(1) {
759  [0]=>
760  string(10) "4294967295"
761}
762array(1) {
763  [0]=>
764  string(10) "4294967082"
765}
766array(1) {
767  [0]=>
768  string(10) "4294967082"
769}
770array(1) {
771  [0]=>
772  int(2147)
773}
774array(1) {
775  [0]=>
776  int(2147)
777}
778array(1) {
779  [0]=>
780  int(4667)
781}
782array(1) {
783  [0]=>
784  int(4779)
785}
786array(1) {
787  [0]=>
788  int(4095)
789}
790array(1) {
791  [0]=>
792  int(250)
793}
794array(1) {
795  [0]=>
796  string(10) "4294967082"
797}
798array(1) {
799  [0]=>
800  int(2147)
801}
802array(1) {
803  [0]=>
804  int(2147)
805}
806array(1) {
807  [0]=>
808  int(83)
809}
810array(1) {
811  [0]=>
812  int(1)
813}
814array(1) {
815  [0]=>
816  string(10) "4294967082"
817}
818array(1) {
819  [0]=>
820  int(2147)
821}
822bool(false)
823
824-- iteration 11 --
825array(1) {
826  [0]=>
827  int(0)
828}
829array(1) {
830  [0]=>
831  int(1)
832}
833array(1) {
834  [0]=>
835  string(10) "4294967295"
836}
837array(1) {
838  [0]=>
839  string(10) "2147483648"
840}
841array(1) {
842  [0]=>
843  string(10) "2147483649"
844}
845array(1) {
846  [0]=>
847  int(2147483647)
848}
849array(1) {
850  [0]=>
851  int(2147483640)
852}
853array(1) {
854  [0]=>
855  int(4667)
856}
857array(1) {
858  [0]=>
859  int(4779)
860}
861array(1) {
862  [0]=>
863  int(4095)
864}
865array(1) {
866  [0]=>
867  int(250)
868}
869array(1) {
870  [0]=>
871  string(10) "2147483648"
872}
873array(1) {
874  [0]=>
875  int(2147483647)
876}
877array(1) {
878  [0]=>
879  int(2147483647)
880}
881array(1) {
882  [0]=>
883  int(83)
884}
885array(1) {
886  [0]=>
887  int(1)
888}
889array(1) {
890  [0]=>
891  string(10) "2147483648"
892}
893array(1) {
894  [0]=>
895  int(2147483647)
896}
897bool(false)
898
899-- iteration 12 --
900array(1) {
901  [0]=>
902  string(1) "0"
903}
904array(1) {
905  [0]=>
906  string(1) "1"
907}
908array(1) {
909  [0]=>
910  NULL
911}
912array(1) {
913  [0]=>
914  NULL
915}
916array(1) {
917  [0]=>
918  NULL
919}
920array(1) {
921  [0]=>
922  string(10) "2147483647"
923}
924array(1) {
925  [0]=>
926  string(10) "2147483640"
927}
928array(1) {
929  [0]=>
930  string(4) "4667"
931}
932array(1) {
933  [0]=>
934  string(4) "4779"
935}
936array(1) {
937  [0]=>
938  string(4) "4095"
939}
940array(1) {
941  [0]=>
942  string(3) "250"
943}
944array(1) {
945  [0]=>
946  NULL
947}
948array(1) {
949  [0]=>
950  string(10) "2147483647"
951}
952array(1) {
953  [0]=>
954  string(10) "2147483647"
955}
956array(1) {
957  [0]=>
958  string(2) "83"
959}
960array(1) {
961  [0]=>
962  string(1) "1"
963}
964array(1) {
965  [0]=>
966  NULL
967}
968array(1) {
969  [0]=>
970  string(10) "2147483647"
971}
972bool(false)
973
974-- iteration 13 --
975array(0) {
976}
977array(0) {
978}
979array(0) {
980}
981array(0) {
982}
983array(0) {
984}
985array(0) {
986}
987array(0) {
988}
989array(0) {
990}
991array(0) {
992}
993array(0) {
994}
995array(0) {
996}
997array(0) {
998}
999array(0) {
1000}
1001array(0) {
1002}
1003array(0) {
1004}
1005array(0) {
1006}
1007array(0) {
1008}
1009array(0) {
1010}
1011bool(false)
1012
1013*** Done ***
1014
1015