From 67c8a0167cfcebf5f5786dfe858c4aceb5f6f190 Mon Sep 17 00:00:00 2001 From: Fonata Date: Sat, 14 Sep 2019 04:11:33 +0200 Subject: [PATCH] Added test for 1 MB stream data --- tests/methods/ExampleStream.php | 101 ++++++++++++++++++++++++++++++++ tests/methods/StreamTest.php | 71 ++++++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 tests/methods/ExampleStream.php create mode 100644 tests/methods/StreamTest.php diff --git a/tests/methods/ExampleStream.php b/tests/methods/ExampleStream.php new file mode 100644 index 0000000..c36281c --- /dev/null +++ b/tests/methods/ExampleStream.php @@ -0,0 +1,101 @@ + strlen(self::$stream_content)]; + } + + + public function stream_tell() { + return self::$position; + } + + public function stream_eof() { + return self::$position >= strlen(self::$stream_content); + } + + public function url_stat() { + return ['size' => strlen(self::$stream_content)]; + } + + public function stream_seek($offset, $whence) { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen(self::$stream_content) && $offset >= 0) { + self::$position = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + self::$position += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen(self::$stream_content) + $offset >= 0) { + self::$position = strlen(self::$stream_content) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } + + public function stream_lock($operation) { + return true; + } + + public function stream_metadata() { + return false; + } +} + diff --git a/tests/methods/StreamTest.php b/tests/methods/StreamTest.php new file mode 100644 index 0000000..be9b594 --- /dev/null +++ b/tests/methods/StreamTest.php @@ -0,0 +1,71 @@ +auto(file_get_contents($filename))); + self::assertCount(4, $csv->data); + self::assertCount(6, reset($csv->data)); + } + + public function testWriteStream() { + $csv = new Csv(); + $csv->linefeed = "\n"; + $many_dots = str_repeat('.', 1000 * 1000); + $csv->data = [ + [ + 'Name' => 'Rudolf', + 'Question' => 'Which color is his nose?', + ], + [ + 'Name' => 'Sponge Bob', + 'Question' => 'Which shape are his pants?', + ], + [ + 'Name' => $many_dots, + 'Question' => 'Can you count one million dots?', + ], + ]; + + // Just export the first column, but with a new name + $csv->titles = ['Name' => 'Character']; + + // Write data to our stream: + $filename = 'example://data'; + copy(__DIR__ . '/fixtures/datatype.csv', $filename); + + self::assertSame(true, $csv->save($filename)); + $expected = "Character\nRudolf\nSponge Bob\n"; + $expected .= $many_dots . "\n"; + self::assertSame($expected, file_get_contents($filename)); + } +}