|
| 1 | +@ok |
| 2 | +<?php |
| 3 | +function init() { |
| 4 | + $stream = fopen(__DIR__.'/fgets.txt', 'w'); |
| 5 | + fwrite ($stream, "123\n"); |
| 6 | + fwrite ($stream, "gucci\n"); |
| 7 | + fwrite ($stream, "\n"); |
| 8 | + fwrite ($stream, "php < kphp\n"); |
| 9 | + fwrite ($stream, "bang"); |
| 10 | + fclose ($stream); |
| 11 | +} |
| 12 | + |
| 13 | +function test_fgets() { |
| 14 | + $stream = fopen(__DIR__ . '/fgets.txt', 'r'); |
| 15 | + |
| 16 | + var_dump (fgets ($stream)); // line = "123\n" |
| 17 | + |
| 18 | + var_dump (fgets ($stream, 100)); // `length` greater than length of the line. line = "gucci\n" |
| 19 | + |
| 20 | + var_dump (fgets ($stream)); // line = "\n" |
| 21 | + |
| 22 | + var_dump (fgets ($stream, 4)); // `length` less than length of the line. line = "php < kphp\n" |
| 23 | + var_dump (fgets ($stream, 1)); // always false |
| 24 | + var_dump (fgets ($stream)); // rest of the line |
| 25 | + |
| 26 | + var_dump (fgets ($stream)); // last line. line = "bang" |
| 27 | + |
| 28 | + var_dump (fgets ($stream)); // eof |
| 29 | + var_dump (fgets ($stream)); // eof |
| 30 | + |
| 31 | + fclose($stream); |
| 32 | +} |
| 33 | + |
| 34 | +function test_fgets_edge_cases() { |
| 35 | + $stream = fopen(__DIR__ . '/fgets.txt', 'r'); |
| 36 | + |
| 37 | + var_dump (fgets ($stream, 4)); // `length` = line.len() (without '\n'). line = "123\n" |
| 38 | + var_dump (fgets ($stream)); // rest of the line |
| 39 | + |
| 40 | + var_dump (fgets ($stream, 7)); // `length` = line.len() + 1 (with '\n'). line = "gucci\n" |
| 41 | + |
| 42 | + // skip all lines except the last one |
| 43 | + var_dump (fgets ($stream)); |
| 44 | + var_dump (fgets ($stream)); |
| 45 | + |
| 46 | + var_dump (fgets ($stream, 4)); // last line with `length` = line.len(). line = "bang" |
| 47 | + |
| 48 | + fclose($stream); |
| 49 | +} |
| 50 | + |
| 51 | +function test_fgets_edge_case2() { |
| 52 | + $stream = fopen(__DIR__ . '/fgets.txt', 'r'); |
| 53 | + |
| 54 | + // skip all lines except the last one |
| 55 | + var_dump (fgets ($stream)); |
| 56 | + var_dump (fgets ($stream)); |
| 57 | + var_dump (fgets ($stream)); |
| 58 | + var_dump (fgets ($stream)); |
| 59 | + |
| 60 | + var_dump (fgets ($stream, 5)); // last line with `length` = line.len() + 1. line = "bang" |
| 61 | + |
| 62 | + fclose($stream); |
| 63 | +} |
| 64 | + |
| 65 | +function test_fgets_mixed() { |
| 66 | + $stream = fopen(__DIR__ . '/fgets.txt', 'r+'); |
| 67 | + |
| 68 | + var_dump (fgets ($stream)); // 123\n |
| 69 | + var_dump (fread ($stream, 3)); // guc |
| 70 | + var_dump (fgets ($stream)); // ci\n |
| 71 | + var_dump (fwrite ($stream, "new string")); // \nphp < kphp\n -> new stringp\n |
| 72 | + var_dump (fgets ($stream)); // p\n |
| 73 | + var_dump (fread ($stream, 2)); // ba |
| 74 | + var_dump (fwrite ($stream, "new string 2")); // ng -> new string 2 |
| 75 | + var_dump (fgets ($stream)); // eof |
| 76 | + |
| 77 | + fclose($stream); |
| 78 | +} |
| 79 | + |
| 80 | +init(); |
| 81 | +test_fgets(); |
| 82 | +test_fgets_edge_cases(); |
| 83 | +test_fgets_edge_case2(); |
| 84 | +test_fgets_mixed(); |
0 commit comments