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