diff --git a/.gitignore b/.gitignore index f8600d9..2760edd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /tests/resources/generated +/tests/coverage /vendor composer.lock /.idea diff --git a/phpunit.xml b/phpunit.xml index 975acc6..5de1e0f 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -14,4 +14,14 @@ + + + + + + + src/ + + + diff --git a/src/Spout/Common/Escaper/CSV.php b/src/Spout/Common/Escaper/CSV.php index efaebd6..4bc2d1a 100644 --- a/src/Spout/Common/Escaper/CSV.php +++ b/src/Spout/Common/Escaper/CSV.php @@ -13,6 +13,8 @@ class CSV implements EscaperInterface /** * Escapes the given string to make it compatible with CSV * + * @codeCoverageIgnore + * * @param string $string The string to escape * @return string The escaped string */ @@ -24,6 +26,8 @@ class CSV implements EscaperInterface /** * Unescapes the given string to make it compatible with CSV * + * @codeCoverageIgnore + * * @param string $string The string to unescape * @return string The unescaped string */ diff --git a/src/Spout/Common/Helper/GlobalFunctionsHelper.php b/src/Spout/Common/Helper/GlobalFunctionsHelper.php index 8ce7ab5..5f22ed6 100644 --- a/src/Spout/Common/Helper/GlobalFunctionsHelper.php +++ b/src/Spout/Common/Helper/GlobalFunctionsHelper.php @@ -6,6 +6,8 @@ namespace Box\Spout\Common\Helper; * Class GlobalFunctionsHelper * This class wraps global functions to facilitate testing * + * @codeCoverageIgnore + * * @package Box\Spout\Common\Helper */ class GlobalFunctionsHelper diff --git a/src/Spout/Reader/Helper/XLSX/CellHelper.php b/src/Spout/Reader/Helper/XLSX/CellHelper.php index 5802bff..7125ded 100644 --- a/src/Spout/Reader/Helper/XLSX/CellHelper.php +++ b/src/Spout/Reader/Helper/XLSX/CellHelper.php @@ -25,7 +25,7 @@ class CellHelper { $existingIndexes = array_keys($dataArray); - $newIndexes = array_fill_keys(range(min($existingIndexes), max($existingIndexes)), $fillValue); + $newIndexes = array_fill_keys(range(0, max($existingIndexes)), $fillValue); $dataArray += $newIndexes; ksort($dataArray); diff --git a/src/Spout/Writer/AbstractWriter.php b/src/Spout/Writer/AbstractWriter.php index 64f7440..68d452f 100644 --- a/src/Spout/Writer/AbstractWriter.php +++ b/src/Spout/Writer/AbstractWriter.php @@ -89,6 +89,8 @@ abstract class AbstractWriter implements WriterInterface * Inits the writer and opens it to accept data. * By using this method, the data will be outputted directly to the browser. * + * @codeCoverageIgnore + * * @param string $outputFileName Name of the output file that will contain the data. If a path is passed in, only the file name will be kept * @return \Box\Spout\Writer\AbstractWriter * @throws \Box\Spout\Common\Exception\IOException If the writer cannot be opened diff --git a/tests/Spout/Reader/Helper/XLSX/CellHelperTest.php b/tests/Spout/Reader/Helper/XLSX/CellHelperTest.php new file mode 100644 index 0000000..8851b33 --- /dev/null +++ b/tests/Spout/Reader/Helper/XLSX/CellHelperTest.php @@ -0,0 +1,60 @@ + 1, 3 => 3]; + $filledArray = CellHelper::fillMissingArrayIndexes($arrayToFill, 'FILL'); + + $expectedFilledArray = ['FILL', 1, 'FILL', 3]; + $this->assertEquals($expectedFilledArray, $filledArray); + } + + /** + * @return array + */ + public function dataProviderForTestGetColumnIndexFromCellIndex() + { + return [ + ['A1', 0], + ['Z3', 25], + ['AA5', 26], + ['AB24', 27], + ['BC5', 54], + ['BCZ99', 1455], + ]; + } + + /** + * @dataProvider dataProviderForTestGetColumnIndexFromCellIndex + * + * @param string $cellIndex + * @param int $expectedColumnIndex + * @return void + */ + public function testGetColumnIndexFromCellIndex($cellIndex, $expectedColumnIndex) + { + $this->assertEquals($expectedColumnIndex, CellHelper::getColumnIndexFromCellIndex($cellIndex)); + } + + /** + * @expectedException \Box\Spout\Common\Exception\InvalidArgumentException + * + * @return void + */ + public function testGetColumnIndexFromCellIndexShouldThrowIfInvalidCellIndex() + { + CellHelper::getColumnIndexFromCellIndex('InvalidCellIndex'); + } +} diff --git a/tests/Spout/Reader/ReaderFactoryTest.php b/tests/Spout/Reader/ReaderFactoryTest.php new file mode 100644 index 0000000..57a0b55 --- /dev/null +++ b/tests/Spout/Reader/ReaderFactoryTest.php @@ -0,0 +1,21 @@ +assertEquals($expectedRows, $allRows); } + /** + * @return void + */ + public function testReadShouldPreserveSpaceIfSpecified() + { + $allRows = $this->getAllRowsForFile('sheet_with_preserve_space_shared_strings.xlsx'); + + $expectedRows = [ + [' s1--A1', 's1--B1 ', ' s1--C1 '], + ]; + $this->assertEquals($expectedRows, $allRows); + } + /** * @return void */ @@ -171,7 +184,7 @@ class XLSXTest extends \PHPUnit_Framework_TestCase { $allRows = $this->getAllRowsForFile('billion_laughs_test_file.xlsx'); - $expectedMaxMemoryUsage = 10 * 1024 * 1024; // 10MB + $expectedMaxMemoryUsage = 20 * 1024 * 1024; // 20MB $this->assertLessThan($expectedMaxMemoryUsage, memory_get_peak_usage(true), 'Entities should not be expanded and therefore consume all the memory.'); $expectedFirstRow = ['s1--A1', 's1--B1', 's1--C1', 's1--D1', 's1--E1']; diff --git a/tests/Spout/Writer/CSVTest.php b/tests/Spout/Writer/CSVTest.php index 2d1b207..ef71b87 100644 --- a/tests/Spout/Writer/CSVTest.php +++ b/tests/Spout/Writer/CSVTest.php @@ -49,6 +49,16 @@ class CSVTest extends \PHPUnit_Framework_TestCase $writer->close(); } + /** + * @expectedException \Box\Spout\Common\Exception\InvalidArgumentException + */ + public function testAddRowsShouldThrowExceptionIfRowsAreNotArrayOfArrays() + { + $writer = WriterFactory::create(Type::CSV); + $writer->addRows(['csv--11', 'csv--12']); + $writer->close(); + } + /** * @return void */ diff --git a/tests/Spout/Writer/WriterFactoryTest.php b/tests/Spout/Writer/WriterFactoryTest.php new file mode 100644 index 0000000..528eff3 --- /dev/null +++ b/tests/Spout/Writer/WriterFactoryTest.php @@ -0,0 +1,21 @@ +