1--TEST--
2Test fflush() function: usage variations - files in different modes
3--SKIPIF--
4<?php
5if( substr(PHP_OS, 0, 3) != "WIN" )
6  die("skip.. only for Windows");
7?>
8--FILE--
9<?php
10
11/* test fflush() with handle to the files opened in different modes */
12
13$file_path = __DIR__;
14require $file_path.'/file.inc';
15
16echo "*** Testing fflush(): with various types of files ***\n";
17$file_types = array("empty", "numeric", "text", "text_with_new_line", "alphanumeric");
18$file_modes = array("w", "wb", "wt", "w+", "w+b", "w+t",
19                    "a", "ab", "at", "a+","a+b", "a+t",
20                    "x", "xb", "xt", "x+", "x+b", "x+t");
21
22$file_name = "$file_path/fflush_variation1.tmp";
23
24$count = 1;
25
26foreach( $file_types as $type ) {
27  echo "-- Iteration $count with file containing $type Data--\n";
28  foreach( $file_modes as $mode ) {
29    echo "-- File opened in $mode mode --\n";
30
31    // creating the file except for x mode
32    if( substr($mode, 0, 1) != "x" ) {
33      $file_handle = fopen($file_name, "w");
34      if($file_handle == false)
35        exit("Error:failed to open file $file_name");
36
37      // filling the file some data if mode is append mode
38      if( substr($mode, 0, 1) == "a")
39        fill_file($file_handle, $type, 10);
40      fclose($file_handle);
41    }
42
43    // opening the file in different modes
44    $file_handle = fopen($file_name, $mode);
45    if($file_handle == false)
46      exit("Error:failed to open file $file_name");
47
48    // writing data to the file
49    var_dump( fill_file($file_handle, $type, 50) );
50    var_dump( fflush($file_handle) );
51    fclose($file_handle);
52
53    // reading the contents of the file after flushing
54     var_dump( readfile($file_name) );
55     unlink($file_name);
56  }
57  $count++;
58}
59
60echo "\n*** Done ***";
61?>
62--EXPECT--
63*** Testing fflush(): with various types of files ***
64-- Iteration 1 with file containing empty Data--
65-- File opened in w mode --
66bool(true)
67bool(true)
68int(0)
69-- File opened in wb mode --
70bool(true)
71bool(true)
72int(0)
73-- File opened in wt mode --
74bool(true)
75bool(true)
76int(0)
77-- File opened in w+ mode --
78bool(true)
79bool(true)
80int(0)
81-- File opened in w+b mode --
82bool(true)
83bool(true)
84int(0)
85-- File opened in w+t mode --
86bool(true)
87bool(true)
88int(0)
89-- File opened in a mode --
90bool(true)
91bool(true)
92int(0)
93-- File opened in ab mode --
94bool(true)
95bool(true)
96int(0)
97-- File opened in at mode --
98bool(true)
99bool(true)
100int(0)
101-- File opened in a+ mode --
102bool(true)
103bool(true)
104int(0)
105-- File opened in a+b mode --
106bool(true)
107bool(true)
108int(0)
109-- File opened in a+t mode --
110bool(true)
111bool(true)
112int(0)
113-- File opened in x mode --
114bool(true)
115bool(true)
116int(0)
117-- File opened in xb mode --
118bool(true)
119bool(true)
120int(0)
121-- File opened in xt mode --
122bool(true)
123bool(true)
124int(0)
125-- File opened in x+ mode --
126bool(true)
127bool(true)
128int(0)
129-- File opened in x+b mode --
130bool(true)
131bool(true)
132int(0)
133-- File opened in x+t mode --
134bool(true)
135bool(true)
136int(0)
137-- Iteration 2 with file containing numeric Data--
138-- File opened in w mode --
139bool(true)
140bool(true)
14122222222222222222222222222222222222222222222222222int(50)
142-- File opened in wb mode --
143bool(true)
144bool(true)
14522222222222222222222222222222222222222222222222222int(50)
146-- File opened in wt mode --
147bool(true)
148bool(true)
14922222222222222222222222222222222222222222222222222int(50)
150-- File opened in w+ mode --
151bool(true)
152bool(true)
15322222222222222222222222222222222222222222222222222int(50)
154-- File opened in w+b mode --
155bool(true)
156bool(true)
15722222222222222222222222222222222222222222222222222int(50)
158-- File opened in w+t mode --
159bool(true)
160bool(true)
16122222222222222222222222222222222222222222222222222int(50)
162-- File opened in a mode --
163bool(true)
164bool(true)
165222222222222222222222222222222222222222222222222222222222222int(60)
166-- File opened in ab mode --
167bool(true)
168bool(true)
169222222222222222222222222222222222222222222222222222222222222int(60)
170-- File opened in at mode --
171bool(true)
172bool(true)
173222222222222222222222222222222222222222222222222222222222222int(60)
174-- File opened in a+ mode --
175bool(true)
176bool(true)
177222222222222222222222222222222222222222222222222222222222222int(60)
178-- File opened in a+b mode --
179bool(true)
180bool(true)
181222222222222222222222222222222222222222222222222222222222222int(60)
182-- File opened in a+t mode --
183bool(true)
184bool(true)
185222222222222222222222222222222222222222222222222222222222222int(60)
186-- File opened in x mode --
187bool(true)
188bool(true)
18922222222222222222222222222222222222222222222222222int(50)
190-- File opened in xb mode --
191bool(true)
192bool(true)
19322222222222222222222222222222222222222222222222222int(50)
194-- File opened in xt mode --
195bool(true)
196bool(true)
19722222222222222222222222222222222222222222222222222int(50)
198-- File opened in x+ mode --
199bool(true)
200bool(true)
20122222222222222222222222222222222222222222222222222int(50)
202-- File opened in x+b mode --
203bool(true)
204bool(true)
20522222222222222222222222222222222222222222222222222int(50)
206-- File opened in x+t mode --
207bool(true)
208bool(true)
20922222222222222222222222222222222222222222222222222int(50)
210-- Iteration 3 with file containing text Data--
211-- File opened in w mode --
212bool(true)
213bool(true)
214text text text text text text text text text text int(50)
215-- File opened in wb mode --
216bool(true)
217bool(true)
218text text text text text text text text text text int(50)
219-- File opened in wt mode --
220bool(true)
221bool(true)
222text text text text text text text text text text int(50)
223-- File opened in w+ mode --
224bool(true)
225bool(true)
226text text text text text text text text text text int(50)
227-- File opened in w+b mode --
228bool(true)
229bool(true)
230text text text text text text text text text text int(50)
231-- File opened in w+t mode --
232bool(true)
233bool(true)
234text text text text text text text text text text int(50)
235-- File opened in a mode --
236bool(true)
237bool(true)
238text text text text text text text text text text text text int(60)
239-- File opened in ab mode --
240bool(true)
241bool(true)
242text text text text text text text text text text text text int(60)
243-- File opened in at mode --
244bool(true)
245bool(true)
246text text text text text text text text text text text text int(60)
247-- File opened in a+ mode --
248bool(true)
249bool(true)
250text text text text text text text text text text text text int(60)
251-- File opened in a+b mode --
252bool(true)
253bool(true)
254text text text text text text text text text text text text int(60)
255-- File opened in a+t mode --
256bool(true)
257bool(true)
258text text text text text text text text text text text text int(60)
259-- File opened in x mode --
260bool(true)
261bool(true)
262text text text text text text text text text text int(50)
263-- File opened in xb mode --
264bool(true)
265bool(true)
266text text text text text text text text text text int(50)
267-- File opened in xt mode --
268bool(true)
269bool(true)
270text text text text text text text text text text int(50)
271-- File opened in x+ mode --
272bool(true)
273bool(true)
274text text text text text text text text text text int(50)
275-- File opened in x+b mode --
276bool(true)
277bool(true)
278text text text text text text text text text text int(50)
279-- File opened in x+t mode --
280bool(true)
281bool(true)
282text text text text text text text text text text int(50)
283-- Iteration 4 with file containing text_with_new_line Data--
284-- File opened in w mode --
285bool(true)
286bool(true)
287line
288line of text
289line
290line of text
291line
292line of tint(50)
293-- File opened in wb mode --
294bool(true)
295bool(true)
296line
297line of text
298line
299line of text
300line
301line of tint(50)
302-- File opened in wt mode --
303bool(true)
304bool(true)
305line
306line of text
307line
308line of text
309line
310line of tint(55)
311-- File opened in w+ mode --
312bool(true)
313bool(true)
314line
315line of text
316line
317line of text
318line
319line of tint(50)
320-- File opened in w+b mode --
321bool(true)
322bool(true)
323line
324line of text
325line
326line of text
327line
328line of tint(50)
329-- File opened in w+t mode --
330bool(true)
331bool(true)
332line
333line of text
334line
335line of text
336line
337line of tint(55)
338-- File opened in a mode --
339bool(true)
340bool(true)
341line
342line line
343line of text
344line
345line of text
346line
347line of tint(60)
348-- File opened in ab mode --
349bool(true)
350bool(true)
351line
352line line
353line of text
354line
355line of text
356line
357line of tint(60)
358-- File opened in at mode --
359bool(true)
360bool(true)
361line
362line line
363line of text
364line
365line of text
366line
367line of tint(65)
368-- File opened in a+ mode --
369bool(true)
370bool(true)
371line
372line line
373line of text
374line
375line of text
376line
377line of tint(60)
378-- File opened in a+b mode --
379bool(true)
380bool(true)
381line
382line line
383line of text
384line
385line of text
386line
387line of tint(60)
388-- File opened in a+t mode --
389bool(true)
390bool(true)
391line
392line line
393line of text
394line
395line of text
396line
397line of tint(65)
398-- File opened in x mode --
399bool(true)
400bool(true)
401line
402line of text
403line
404line of text
405line
406line of tint(50)
407-- File opened in xb mode --
408bool(true)
409bool(true)
410line
411line of text
412line
413line of text
414line
415line of tint(50)
416-- File opened in xt mode --
417bool(true)
418bool(true)
419line
420line of text
421line
422line of text
423line
424line of tint(55)
425-- File opened in x+ mode --
426bool(true)
427bool(true)
428line
429line of text
430line
431line of text
432line
433line of tint(50)
434-- File opened in x+b mode --
435bool(true)
436bool(true)
437line
438line of text
439line
440line of text
441line
442line of tint(50)
443-- File opened in x+t mode --
444bool(true)
445bool(true)
446line
447line of text
448line
449line of text
450line
451line of tint(55)
452-- Iteration 5 with file containing alphanumeric Data--
453-- File opened in w mode --
454bool(true)
455bool(true)
456ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
457-- File opened in wb mode --
458bool(true)
459bool(true)
460ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
461-- File opened in wt mode --
462bool(true)
463bool(true)
464ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
465-- File opened in w+ mode --
466bool(true)
467bool(true)
468ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
469-- File opened in w+b mode --
470bool(true)
471bool(true)
472ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
473-- File opened in w+t mode --
474bool(true)
475bool(true)
476ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
477-- File opened in a mode --
478bool(true)
479bool(true)
480ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(60)
481-- File opened in ab mode --
482bool(true)
483bool(true)
484ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(60)
485-- File opened in at mode --
486bool(true)
487bool(true)
488ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(60)
489-- File opened in a+ mode --
490bool(true)
491bool(true)
492ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(60)
493-- File opened in a+b mode --
494bool(true)
495bool(true)
496ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(60)
497-- File opened in a+t mode --
498bool(true)
499bool(true)
500ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(60)
501-- File opened in x mode --
502bool(true)
503bool(true)
504ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
505-- File opened in xb mode --
506bool(true)
507bool(true)
508ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
509-- File opened in xt mode --
510bool(true)
511bool(true)
512ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
513-- File opened in x+ mode --
514bool(true)
515bool(true)
516ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
517-- File opened in x+b mode --
518bool(true)
519bool(true)
520ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
521-- File opened in x+t mode --
522bool(true)
523bool(true)
524ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 int(50)
525
526*** Done ***
527