1--TEST--
2Test fgetcsv() : usage variations - with only file handle as argument, file pointer pointing at end of file
3--FILE--
4<?php
5/*
6 Prototype: array fgetcsv ( resource $handle [, int $length [, string $delimiter [, string $enclosure]]] );
7 Description: Gets line from file pointer and parse for CSV fields
8*/
9
10/*
11   Testing fgetcsv() to read a file whose file pointer is pointing to end of file
12   and fgetcsv() provided with only file handle in its argument
13*/
14
15echo "*** Testing fgetcsv() : with file handle as only argument and file pointer pointing at end of file ***\n";
16
17/* the array is with two elements in it. Each element should be read as
18   1st element is delimiter & 2nd element is csv fields
19*/
20$csv_lists = array (
21  array(',', 'water,fruit'),
22  array(' ', 'water fruit'),
23  array(' ', '"water" "fruit"'),
24  array('\\', 'water\\"fruit"\\"air"'),
25  array('\\', '"water"\\"fruit"\\"""'),
26);
27
28$filename = dirname(__FILE__) . '/fgetcsv_variation29.tmp';
29@unlink($filename);
30
31$file_modes = array ("r","rb", "rt", "r+", "r+b", "r+t",
32                     "a+", "a+b", "a+t",
33                     "w+", "w+b", "w+t",
34                     "x+", "x+b", "x+t");
35
36$loop_counter = 1;
37foreach ($csv_lists as $csv_list) {
38  for($mode_counter = 0; $mode_counter < count($file_modes); $mode_counter++) {
39    // create the file and add the content with has csv fields
40    if ( strstr($file_modes[$mode_counter], "r") ) {
41      $file_handle = fopen($filename, "w");
42    } else {
43      $file_handle = fopen($filename, $file_modes[$mode_counter] );
44    }
45    if ( !$file_handle ) {
46      echo "Error: failed to create file $filename!\n";
47      exit();
48    }
49    $delimiter = $csv_list[0];
50    $csv_field = $csv_list[1];
51
52    fwrite($file_handle, $csv_field . "\n");
53    // write another line of text and a blank line
54    // this will be used to test, if the fgetcsv() read more than a line and its
55    // working when only a blan line is read
56    fwrite($file_handle, "This is line of text without csv fields\n");
57    fwrite($file_handle, "\n"); // blank line
58
59    // close the file if the mode to be used is read mode  and re-open using read mode
60    // else rewind the file pointer to begining of the file
61    if ( strstr($file_modes[$mode_counter], "r" ) ) {
62      fclose($file_handle);
63      $file_handle = fopen($filename, $file_modes[$mode_counter]);
64    }
65
66    echo "\n-- Testing fgetcsv() with file opened using $file_modes[$mode_counter] mode --\n";
67
68    // set the file pointer to EOF
69    var_dump( fseek($file_handle, 0, SEEK_END) );
70
71    // call fgetcsv() to parse csv fields
72
73    // now file pointer should point to end of the file, try reading again
74    var_dump( feof($file_handle) );
75    var_dump( fgetcsv($file_handle) );
76    // check the file pointer position and if eof
77    var_dump( ftell($file_handle) );
78    var_dump( feof($file_handle) );
79    // close the file
80    fclose($file_handle);
81    //delete file
82    unlink($filename);
83  } //end of mode loop
84} // end of foreach
85
86echo "Done\n";
87?>
88--EXPECTF--
89*** Testing fgetcsv() : with file handle as only argument and file pointer pointing at end of file ***
90
91-- Testing fgetcsv() with file opened using r mode --
92int(0)
93bool(false)
94bool(false)
95int(53)
96bool(true)
97
98-- Testing fgetcsv() with file opened using rb mode --
99int(0)
100bool(false)
101bool(false)
102int(53)
103bool(true)
104
105-- Testing fgetcsv() with file opened using rt mode --
106int(0)
107bool(false)
108bool(false)
109int(%d)
110bool(true)
111
112-- Testing fgetcsv() with file opened using r+ mode --
113int(0)
114bool(false)
115bool(false)
116int(53)
117bool(true)
118
119-- Testing fgetcsv() with file opened using r+b mode --
120int(0)
121bool(false)
122bool(false)
123int(53)
124bool(true)
125
126-- Testing fgetcsv() with file opened using r+t mode --
127int(0)
128bool(false)
129bool(false)
130int(%d)
131bool(true)
132
133-- Testing fgetcsv() with file opened using a+ mode --
134int(0)
135bool(false)
136bool(false)
137int(53)
138bool(true)
139
140-- Testing fgetcsv() with file opened using a+b mode --
141int(0)
142bool(false)
143bool(false)
144int(53)
145bool(true)
146
147-- Testing fgetcsv() with file opened using a+t mode --
148int(0)
149bool(false)
150bool(false)
151int(%d)
152bool(true)
153
154-- Testing fgetcsv() with file opened using w+ mode --
155int(0)
156bool(false)
157bool(false)
158int(53)
159bool(true)
160
161-- Testing fgetcsv() with file opened using w+b mode --
162int(0)
163bool(false)
164bool(false)
165int(53)
166bool(true)
167
168-- Testing fgetcsv() with file opened using w+t mode --
169int(0)
170bool(false)
171bool(false)
172int(%d)
173bool(true)
174
175-- Testing fgetcsv() with file opened using x+ mode --
176int(0)
177bool(false)
178bool(false)
179int(53)
180bool(true)
181
182-- Testing fgetcsv() with file opened using x+b mode --
183int(0)
184bool(false)
185bool(false)
186int(53)
187bool(true)
188
189-- Testing fgetcsv() with file opened using x+t mode --
190int(0)
191bool(false)
192bool(false)
193int(%d)
194bool(true)
195
196-- Testing fgetcsv() with file opened using r mode --
197int(0)
198bool(false)
199bool(false)
200int(53)
201bool(true)
202
203-- Testing fgetcsv() with file opened using rb mode --
204int(0)
205bool(false)
206bool(false)
207int(53)
208bool(true)
209
210-- Testing fgetcsv() with file opened using rt mode --
211int(0)
212bool(false)
213bool(false)
214int(%d)
215bool(true)
216
217-- Testing fgetcsv() with file opened using r+ mode --
218int(0)
219bool(false)
220bool(false)
221int(53)
222bool(true)
223
224-- Testing fgetcsv() with file opened using r+b mode --
225int(0)
226bool(false)
227bool(false)
228int(53)
229bool(true)
230
231-- Testing fgetcsv() with file opened using r+t mode --
232int(0)
233bool(false)
234bool(false)
235int(%d)
236bool(true)
237
238-- Testing fgetcsv() with file opened using a+ mode --
239int(0)
240bool(false)
241bool(false)
242int(53)
243bool(true)
244
245-- Testing fgetcsv() with file opened using a+b mode --
246int(0)
247bool(false)
248bool(false)
249int(53)
250bool(true)
251
252-- Testing fgetcsv() with file opened using a+t mode --
253int(0)
254bool(false)
255bool(false)
256int(%d)
257bool(true)
258
259-- Testing fgetcsv() with file opened using w+ mode --
260int(0)
261bool(false)
262bool(false)
263int(53)
264bool(true)
265
266-- Testing fgetcsv() with file opened using w+b mode --
267int(0)
268bool(false)
269bool(false)
270int(53)
271bool(true)
272
273-- Testing fgetcsv() with file opened using w+t mode --
274int(0)
275bool(false)
276bool(false)
277int(%d)
278bool(true)
279
280-- Testing fgetcsv() with file opened using x+ mode --
281int(0)
282bool(false)
283bool(false)
284int(53)
285bool(true)
286
287-- Testing fgetcsv() with file opened using x+b mode --
288int(0)
289bool(false)
290bool(false)
291int(53)
292bool(true)
293
294-- Testing fgetcsv() with file opened using x+t mode --
295int(0)
296bool(false)
297bool(false)
298int(%d)
299bool(true)
300
301-- Testing fgetcsv() with file opened using r mode --
302int(0)
303bool(false)
304bool(false)
305int(57)
306bool(true)
307
308-- Testing fgetcsv() with file opened using rb mode --
309int(0)
310bool(false)
311bool(false)
312int(57)
313bool(true)
314
315-- Testing fgetcsv() with file opened using rt mode --
316int(0)
317bool(false)
318bool(false)
319int(%d)
320bool(true)
321
322-- Testing fgetcsv() with file opened using r+ mode --
323int(0)
324bool(false)
325bool(false)
326int(57)
327bool(true)
328
329-- Testing fgetcsv() with file opened using r+b mode --
330int(0)
331bool(false)
332bool(false)
333int(57)
334bool(true)
335
336-- Testing fgetcsv() with file opened using r+t mode --
337int(0)
338bool(false)
339bool(false)
340int(%d)
341bool(true)
342
343-- Testing fgetcsv() with file opened using a+ mode --
344int(0)
345bool(false)
346bool(false)
347int(57)
348bool(true)
349
350-- Testing fgetcsv() with file opened using a+b mode --
351int(0)
352bool(false)
353bool(false)
354int(57)
355bool(true)
356
357-- Testing fgetcsv() with file opened using a+t mode --
358int(0)
359bool(false)
360bool(false)
361int(%d)
362bool(true)
363
364-- Testing fgetcsv() with file opened using w+ mode --
365int(0)
366bool(false)
367bool(false)
368int(57)
369bool(true)
370
371-- Testing fgetcsv() with file opened using w+b mode --
372int(0)
373bool(false)
374bool(false)
375int(57)
376bool(true)
377
378-- Testing fgetcsv() with file opened using w+t mode --
379int(0)
380bool(false)
381bool(false)
382int(%d)
383bool(true)
384
385-- Testing fgetcsv() with file opened using x+ mode --
386int(0)
387bool(false)
388bool(false)
389int(57)
390bool(true)
391
392-- Testing fgetcsv() with file opened using x+b mode --
393int(0)
394bool(false)
395bool(false)
396int(57)
397bool(true)
398
399-- Testing fgetcsv() with file opened using x+t mode --
400int(0)
401bool(false)
402bool(false)
403int(%d)
404bool(true)
405
406-- Testing fgetcsv() with file opened using r mode --
407int(0)
408bool(false)
409bool(false)
410int(61)
411bool(true)
412
413-- Testing fgetcsv() with file opened using rb mode --
414int(0)
415bool(false)
416bool(false)
417int(61)
418bool(true)
419
420-- Testing fgetcsv() with file opened using rt mode --
421int(0)
422bool(false)
423bool(false)
424int(%d)
425bool(true)
426
427-- Testing fgetcsv() with file opened using r+ mode --
428int(0)
429bool(false)
430bool(false)
431int(61)
432bool(true)
433
434-- Testing fgetcsv() with file opened using r+b mode --
435int(0)
436bool(false)
437bool(false)
438int(61)
439bool(true)
440
441-- Testing fgetcsv() with file opened using r+t mode --
442int(0)
443bool(false)
444bool(false)
445int(%d)
446bool(true)
447
448-- Testing fgetcsv() with file opened using a+ mode --
449int(0)
450bool(false)
451bool(false)
452int(61)
453bool(true)
454
455-- Testing fgetcsv() with file opened using a+b mode --
456int(0)
457bool(false)
458bool(false)
459int(61)
460bool(true)
461
462-- Testing fgetcsv() with file opened using a+t mode --
463int(0)
464bool(false)
465bool(false)
466int(%d)
467bool(true)
468
469-- Testing fgetcsv() with file opened using w+ mode --
470int(0)
471bool(false)
472bool(false)
473int(61)
474bool(true)
475
476-- Testing fgetcsv() with file opened using w+b mode --
477int(0)
478bool(false)
479bool(false)
480int(61)
481bool(true)
482
483-- Testing fgetcsv() with file opened using w+t mode --
484int(0)
485bool(false)
486bool(false)
487int(%d)
488bool(true)
489
490-- Testing fgetcsv() with file opened using x+ mode --
491int(0)
492bool(false)
493bool(false)
494int(61)
495bool(true)
496
497-- Testing fgetcsv() with file opened using x+b mode --
498int(0)
499bool(false)
500bool(false)
501int(61)
502bool(true)
503
504-- Testing fgetcsv() with file opened using x+t mode --
505int(0)
506bool(false)
507bool(false)
508int(%d)
509bool(true)
510
511-- Testing fgetcsv() with file opened using r mode --
512int(0)
513bool(false)
514bool(false)
515int(61)
516bool(true)
517
518-- Testing fgetcsv() with file opened using rb mode --
519int(0)
520bool(false)
521bool(false)
522int(61)
523bool(true)
524
525-- Testing fgetcsv() with file opened using rt mode --
526int(0)
527bool(false)
528bool(false)
529int(%d)
530bool(true)
531
532-- Testing fgetcsv() with file opened using r+ mode --
533int(0)
534bool(false)
535bool(false)
536int(61)
537bool(true)
538
539-- Testing fgetcsv() with file opened using r+b mode --
540int(0)
541bool(false)
542bool(false)
543int(61)
544bool(true)
545
546-- Testing fgetcsv() with file opened using r+t mode --
547int(0)
548bool(false)
549bool(false)
550int(%d)
551bool(true)
552
553-- Testing fgetcsv() with file opened using a+ mode --
554int(0)
555bool(false)
556bool(false)
557int(61)
558bool(true)
559
560-- Testing fgetcsv() with file opened using a+b mode --
561int(0)
562bool(false)
563bool(false)
564int(61)
565bool(true)
566
567-- Testing fgetcsv() with file opened using a+t mode --
568int(0)
569bool(false)
570bool(false)
571int(%d)
572bool(true)
573
574-- Testing fgetcsv() with file opened using w+ mode --
575int(0)
576bool(false)
577bool(false)
578int(61)
579bool(true)
580
581-- Testing fgetcsv() with file opened using w+b mode --
582int(0)
583bool(false)
584bool(false)
585int(61)
586bool(true)
587
588-- Testing fgetcsv() with file opened using w+t mode --
589int(0)
590bool(false)
591bool(false)
592int(%d)
593bool(true)
594
595-- Testing fgetcsv() with file opened using x+ mode --
596int(0)
597bool(false)
598bool(false)
599int(61)
600bool(true)
601
602-- Testing fgetcsv() with file opened using x+b mode --
603int(0)
604bool(false)
605bool(false)
606int(61)
607bool(true)
608
609-- Testing fgetcsv() with file opened using x+t mode --
610int(0)
611bool(false)
612bool(false)
613int(%d)
614bool(true)
615Done
616