1--TEST--
2Test fgets() function : usage variations - read with/without length
3--FILE--
4<?php
5/*
6 Prototype: string fgets ( resource $handle [, int $length] );
7 Description: Gets a line from file pointer
8*/
9
10// include the file.inc for common test funcitons
11include ("file.inc");
12
13$file_modes = array("w+", "w+b", "w+t",
14                    "a+", "a+b", "a+t",
15                    "x+", "x+b", "x+t");
16
17$file_content_types = array("numeric", "text", "text_with_new_line", "alphanumeric");
18
19echo "*** Testing fgets() : usage variations ***\n";
20
21$filename = __DIR__."/fgets_variation3.tmp";
22
23foreach($file_modes as $file_mode) {
24  echo "\n-- Testing fgets() with file opened using mode $file_mode --\n";
25
26  foreach($file_content_types as $file_content_type) {
27    echo "-- File content type : $file_content_type --\n";
28
29    /* create files with $file_content_type */
30    $file_handle = fopen($filename, $file_mode);
31    $data = fill_file($file_handle, $file_content_type, 50);
32
33    if ( !$file_handle ) {
34      echo "Error: failed to open file $filename!";
35      exit();
36    }
37
38    echo "-- fgets() with default length, file pointer at 0 --\n";
39    // get the file pointer to beginning of the file
40    rewind($file_handle);
41
42    var_dump( ftell($file_handle) );
43    var_dump( fgets($file_handle) ); // with default length
44    var_dump( ftell($file_handle) ); // ensure the file pointer position
45    var_dump( feof($file_handle) );  // enusre if eof set
46
47    echo "-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --\n";
48    // get the file pointer to beginning of the file
49    rewind($file_handle);
50
51    var_dump( ftell($file_handle) );
52    var_dump( fgets($file_handle, 23) ); // expected: 22 chars
53    var_dump( ftell($file_handle) ); // ensure the file pointer position
54    var_dump( feof($file_handle) );  // enusre if eof set
55
56    //close file
57    fclose($file_handle);
58
59    // delete file
60    delete_file($filename);
61  } // file_content_type loop
62} // file_mode loop
63
64echo "Done\n";
65?>
66--EXPECT--
67*** Testing fgets() : usage variations ***
68
69-- Testing fgets() with file opened using mode w+ --
70-- File content type : numeric --
71-- fgets() with default length, file pointer at 0 --
72int(0)
73string(50) "22222222222222222222222222222222222222222222222222"
74int(50)
75bool(true)
76-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
77int(0)
78string(22) "2222222222222222222222"
79int(22)
80bool(false)
81-- File content type : text --
82-- fgets() with default length, file pointer at 0 --
83int(0)
84string(50) "text text text text text text text text text text "
85int(50)
86bool(true)
87-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
88int(0)
89string(22) "text text text text te"
90int(22)
91bool(false)
92-- File content type : text_with_new_line --
93-- fgets() with default length, file pointer at 0 --
94int(0)
95string(5) "line
96"
97int(5)
98bool(false)
99-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
100int(0)
101string(5) "line
102"
103int(5)
104bool(false)
105-- File content type : alphanumeric --
106-- fgets() with default length, file pointer at 0 --
107int(0)
108string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
109int(50)
110bool(true)
111-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
112int(0)
113string(22) "ab12 ab12 ab12 ab12 ab"
114int(22)
115bool(false)
116
117-- Testing fgets() with file opened using mode w+b --
118-- File content type : numeric --
119-- fgets() with default length, file pointer at 0 --
120int(0)
121string(50) "22222222222222222222222222222222222222222222222222"
122int(50)
123bool(true)
124-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
125int(0)
126string(22) "2222222222222222222222"
127int(22)
128bool(false)
129-- File content type : text --
130-- fgets() with default length, file pointer at 0 --
131int(0)
132string(50) "text text text text text text text text text text "
133int(50)
134bool(true)
135-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
136int(0)
137string(22) "text text text text te"
138int(22)
139bool(false)
140-- File content type : text_with_new_line --
141-- fgets() with default length, file pointer at 0 --
142int(0)
143string(5) "line
144"
145int(5)
146bool(false)
147-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
148int(0)
149string(5) "line
150"
151int(5)
152bool(false)
153-- File content type : alphanumeric --
154-- fgets() with default length, file pointer at 0 --
155int(0)
156string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
157int(50)
158bool(true)
159-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
160int(0)
161string(22) "ab12 ab12 ab12 ab12 ab"
162int(22)
163bool(false)
164
165-- Testing fgets() with file opened using mode w+t --
166-- File content type : numeric --
167-- fgets() with default length, file pointer at 0 --
168int(0)
169string(50) "22222222222222222222222222222222222222222222222222"
170int(50)
171bool(true)
172-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
173int(0)
174string(22) "2222222222222222222222"
175int(22)
176bool(false)
177-- File content type : text --
178-- fgets() with default length, file pointer at 0 --
179int(0)
180string(50) "text text text text text text text text text text "
181int(50)
182bool(true)
183-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
184int(0)
185string(22) "text text text text te"
186int(22)
187bool(false)
188-- File content type : text_with_new_line --
189-- fgets() with default length, file pointer at 0 --
190int(0)
191string(5) "line
192"
193int(5)
194bool(false)
195-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
196int(0)
197string(5) "line
198"
199int(5)
200bool(false)
201-- File content type : alphanumeric --
202-- fgets() with default length, file pointer at 0 --
203int(0)
204string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
205int(50)
206bool(true)
207-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
208int(0)
209string(22) "ab12 ab12 ab12 ab12 ab"
210int(22)
211bool(false)
212
213-- Testing fgets() with file opened using mode a+ --
214-- File content type : numeric --
215-- fgets() with default length, file pointer at 0 --
216int(0)
217string(50) "22222222222222222222222222222222222222222222222222"
218int(50)
219bool(true)
220-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
221int(0)
222string(22) "2222222222222222222222"
223int(22)
224bool(false)
225-- File content type : text --
226-- fgets() with default length, file pointer at 0 --
227int(0)
228string(50) "text text text text text text text text text text "
229int(50)
230bool(true)
231-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
232int(0)
233string(22) "text text text text te"
234int(22)
235bool(false)
236-- File content type : text_with_new_line --
237-- fgets() with default length, file pointer at 0 --
238int(0)
239string(5) "line
240"
241int(5)
242bool(false)
243-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
244int(0)
245string(5) "line
246"
247int(5)
248bool(false)
249-- File content type : alphanumeric --
250-- fgets() with default length, file pointer at 0 --
251int(0)
252string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
253int(50)
254bool(true)
255-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
256int(0)
257string(22) "ab12 ab12 ab12 ab12 ab"
258int(22)
259bool(false)
260
261-- Testing fgets() with file opened using mode a+b --
262-- File content type : numeric --
263-- fgets() with default length, file pointer at 0 --
264int(0)
265string(50) "22222222222222222222222222222222222222222222222222"
266int(50)
267bool(true)
268-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
269int(0)
270string(22) "2222222222222222222222"
271int(22)
272bool(false)
273-- File content type : text --
274-- fgets() with default length, file pointer at 0 --
275int(0)
276string(50) "text text text text text text text text text text "
277int(50)
278bool(true)
279-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
280int(0)
281string(22) "text text text text te"
282int(22)
283bool(false)
284-- File content type : text_with_new_line --
285-- fgets() with default length, file pointer at 0 --
286int(0)
287string(5) "line
288"
289int(5)
290bool(false)
291-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
292int(0)
293string(5) "line
294"
295int(5)
296bool(false)
297-- File content type : alphanumeric --
298-- fgets() with default length, file pointer at 0 --
299int(0)
300string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
301int(50)
302bool(true)
303-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
304int(0)
305string(22) "ab12 ab12 ab12 ab12 ab"
306int(22)
307bool(false)
308
309-- Testing fgets() with file opened using mode a+t --
310-- File content type : numeric --
311-- fgets() with default length, file pointer at 0 --
312int(0)
313string(50) "22222222222222222222222222222222222222222222222222"
314int(50)
315bool(true)
316-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
317int(0)
318string(22) "2222222222222222222222"
319int(22)
320bool(false)
321-- File content type : text --
322-- fgets() with default length, file pointer at 0 --
323int(0)
324string(50) "text text text text text text text text text text "
325int(50)
326bool(true)
327-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
328int(0)
329string(22) "text text text text te"
330int(22)
331bool(false)
332-- File content type : text_with_new_line --
333-- fgets() with default length, file pointer at 0 --
334int(0)
335string(5) "line
336"
337int(5)
338bool(false)
339-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
340int(0)
341string(5) "line
342"
343int(5)
344bool(false)
345-- File content type : alphanumeric --
346-- fgets() with default length, file pointer at 0 --
347int(0)
348string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
349int(50)
350bool(true)
351-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
352int(0)
353string(22) "ab12 ab12 ab12 ab12 ab"
354int(22)
355bool(false)
356
357-- Testing fgets() with file opened using mode x+ --
358-- File content type : numeric --
359-- fgets() with default length, file pointer at 0 --
360int(0)
361string(50) "22222222222222222222222222222222222222222222222222"
362int(50)
363bool(true)
364-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
365int(0)
366string(22) "2222222222222222222222"
367int(22)
368bool(false)
369-- File content type : text --
370-- fgets() with default length, file pointer at 0 --
371int(0)
372string(50) "text text text text text text text text text text "
373int(50)
374bool(true)
375-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
376int(0)
377string(22) "text text text text te"
378int(22)
379bool(false)
380-- File content type : text_with_new_line --
381-- fgets() with default length, file pointer at 0 --
382int(0)
383string(5) "line
384"
385int(5)
386bool(false)
387-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
388int(0)
389string(5) "line
390"
391int(5)
392bool(false)
393-- File content type : alphanumeric --
394-- fgets() with default length, file pointer at 0 --
395int(0)
396string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
397int(50)
398bool(true)
399-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
400int(0)
401string(22) "ab12 ab12 ab12 ab12 ab"
402int(22)
403bool(false)
404
405-- Testing fgets() with file opened using mode x+b --
406-- File content type : numeric --
407-- fgets() with default length, file pointer at 0 --
408int(0)
409string(50) "22222222222222222222222222222222222222222222222222"
410int(50)
411bool(true)
412-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
413int(0)
414string(22) "2222222222222222222222"
415int(22)
416bool(false)
417-- File content type : text --
418-- fgets() with default length, file pointer at 0 --
419int(0)
420string(50) "text text text text text text text text text text "
421int(50)
422bool(true)
423-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
424int(0)
425string(22) "text text text text te"
426int(22)
427bool(false)
428-- File content type : text_with_new_line --
429-- fgets() with default length, file pointer at 0 --
430int(0)
431string(5) "line
432"
433int(5)
434bool(false)
435-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
436int(0)
437string(5) "line
438"
439int(5)
440bool(false)
441-- File content type : alphanumeric --
442-- fgets() with default length, file pointer at 0 --
443int(0)
444string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
445int(50)
446bool(true)
447-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
448int(0)
449string(22) "ab12 ab12 ab12 ab12 ab"
450int(22)
451bool(false)
452
453-- Testing fgets() with file opened using mode x+t --
454-- File content type : numeric --
455-- fgets() with default length, file pointer at 0 --
456int(0)
457string(50) "22222222222222222222222222222222222222222222222222"
458int(50)
459bool(true)
460-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
461int(0)
462string(22) "2222222222222222222222"
463int(22)
464bool(false)
465-- File content type : text --
466-- fgets() with default length, file pointer at 0 --
467int(0)
468string(50) "text text text text text text text text text text "
469int(50)
470bool(true)
471-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
472int(0)
473string(22) "text text text text te"
474int(22)
475bool(false)
476-- File content type : text_with_new_line --
477-- fgets() with default length, file pointer at 0 --
478int(0)
479string(5) "line
480"
481int(5)
482bool(false)
483-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
484int(0)
485string(5) "line
486"
487int(5)
488bool(false)
489-- File content type : alphanumeric --
490-- fgets() with default length, file pointer at 0 --
491int(0)
492string(50) "ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 ab12 "
493int(50)
494bool(true)
495-- fgets() with length = 23, Expected: 22 chars, file pointer at 0 --
496int(0)
497string(22) "ab12 ab12 ab12 ab12 ab"
498int(22)
499bool(false)
500Done
501