1--TEST--
2Test fscanf() function: usage variations - octal formats with boolean
3--FILE--
4<?php
5
6/*
7  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
8  Description: Parses input from a file according to a format
9*/
10
11/* Test fscanf() to scan boolean data using different octal format types */
12
13$file_path = __DIR__;
14
15echo "*** Test fscanf(): different octal format types with boolean data ***\n";
16
17// create a file
18$filename = "$file_path/fscanf_variation32.tmp";
19$file_handle = fopen($filename, "w");
20if($file_handle == false)
21  exit("Error:failed to open file $filename");
22
23// array of boolean types
24$bool_types = array (
25  true,
26  false,
27  TRUE,
28  FALSE,
29);
30
31$octal_formats = array(  "%o",
32			 "%ho", "%lo", "%Lo",
33			 " %o", "%o ", "% o",
34			 "\t%o", "\n%o", "%4o",
35			 "%30o", "%[0-7]", "%*o"
36 		 );
37
38$counter = 1;
39
40// writing to the file
41foreach($bool_types as $value) {
42  @fprintf($file_handle, $value);
43  @fprintf($file_handle, "\n");
44}
45// closing the file
46fclose($file_handle);
47
48// opening the file for reading
49$file_handle = fopen($filename, "r");
50if($file_handle == false) {
51  exit("Error:failed to open file $filename");
52}
53
54$counter = 1;
55// reading the values from file using different octal formats
56foreach($octal_formats as $octal_format) {
57  // rewind the file so that for every foreach iteration the file pointer starts from bof
58  rewind($file_handle);
59  echo "\n-- iteration $counter --\n";
60  while( !feof($file_handle) ) {
61    var_dump( fscanf($file_handle,$octal_format) );
62  }
63  $counter++;
64}
65
66echo "\n*** Done ***";
67?>
68--CLEAN--
69<?php
70$file_path = __DIR__;
71$filename = "$file_path/fscanf_variation32.tmp";
72unlink($filename);
73?>
74--EXPECTF--
75*** Test fscanf(): different octal format types with boolean data ***
76
77-- iteration 1 --
78array(1) {
79  [0]=>
80  int(1)
81}
82NULL
83array(1) {
84  [0]=>
85  int(1)
86}
87NULL
88bool(false)
89
90-- iteration 2 --
91array(1) {
92  [0]=>
93  int(1)
94}
95NULL
96array(1) {
97  [0]=>
98  int(1)
99}
100NULL
101bool(false)
102
103-- iteration 3 --
104array(1) {
105  [0]=>
106  int(1)
107}
108NULL
109array(1) {
110  [0]=>
111  int(1)
112}
113NULL
114bool(false)
115
116-- iteration 4 --
117array(1) {
118  [0]=>
119  int(1)
120}
121NULL
122array(1) {
123  [0]=>
124  int(1)
125}
126NULL
127bool(false)
128
129-- iteration 5 --
130array(1) {
131  [0]=>
132  int(1)
133}
134NULL
135array(1) {
136  [0]=>
137  int(1)
138}
139NULL
140bool(false)
141
142-- iteration 6 --
143array(1) {
144  [0]=>
145  int(1)
146}
147NULL
148array(1) {
149  [0]=>
150  int(1)
151}
152NULL
153bool(false)
154
155-- iteration 7 --
156
157Warning: fscanf(): Bad scan conversion character " " in %s on line %d
158NULL
159
160Warning: fscanf(): Bad scan conversion character " " in %s on line %d
161NULL
162
163Warning: fscanf(): Bad scan conversion character " " in %s on line %d
164NULL
165
166Warning: fscanf(): Bad scan conversion character " " in %s on line %d
167NULL
168bool(false)
169
170-- iteration 8 --
171array(1) {
172  [0]=>
173  int(1)
174}
175NULL
176array(1) {
177  [0]=>
178  int(1)
179}
180NULL
181bool(false)
182
183-- iteration 9 --
184array(1) {
185  [0]=>
186  int(1)
187}
188NULL
189array(1) {
190  [0]=>
191  int(1)
192}
193NULL
194bool(false)
195
196-- iteration 10 --
197array(1) {
198  [0]=>
199  int(1)
200}
201NULL
202array(1) {
203  [0]=>
204  int(1)
205}
206NULL
207bool(false)
208
209-- iteration 11 --
210array(1) {
211  [0]=>
212  int(1)
213}
214NULL
215array(1) {
216  [0]=>
217  int(1)
218}
219NULL
220bool(false)
221
222-- iteration 12 --
223array(1) {
224  [0]=>
225  string(1) "1"
226}
227array(1) {
228  [0]=>
229  NULL
230}
231array(1) {
232  [0]=>
233  string(1) "1"
234}
235array(1) {
236  [0]=>
237  NULL
238}
239bool(false)
240
241-- iteration 13 --
242array(0) {
243}
244NULL
245array(0) {
246}
247NULL
248bool(false)
249
250*** Done ***
251