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