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