diff --git a/tests/methods/ParseTest.php b/tests/methods/ParseTest.php index d48435f..9566499 100644 --- a/tests/methods/ParseTest.php +++ b/tests/methods/ParseTest.php @@ -178,10 +178,10 @@ class ParseTest extends TestCase } public function autoQuotesDataProvider() { - return [ - 'double-enclosure' => ['tests/methods/fixtures/auto-double-enclosure.csv', '"'], - 'single-enclosure' => ['tests/methods/fixtures/auto-single-enclosure.csv', "'"], - ]; + return array( + array('auto-double-enclosure.csv', '"'), + array('auto-single-enclosure.csv', "'"), + ); } /** @@ -194,7 +194,7 @@ class ParseTest extends TestCase */ public function testAutoQuotes($file, $enclosure) { $csv = new Csv(); - $csv->auto($file, true, null, null, $enclosure); + $csv->auto(__DIR__ . '/fixtures/' . $file, true, null, null, $enclosure); $this->assertArrayHasKey('column1', $csv->data[0], 'Data parsed incorrectly with enclosure ' . $enclosure); $this->assertEquals('value1', $csv->data[0]['column1'], 'Data parsed incorrectly with enclosure ' . $enclosure); } diff --git a/tests/properties/BaseClass.php b/tests/properties/BaseClass.php new file mode 100644 index 0000000..1131ac8 --- /dev/null +++ b/tests/properties/BaseClass.php @@ -0,0 +1,31 @@ +csv = new parseCSV(); + } + + protected function _compareWithExpected($expected) { + $this->csv->auto(__DIR__ . '/../../examples/_books.csv'); + $actual = array_map(function ($row) { + return $row['title']; + }, $this->csv->data); + $this->assertEquals($expected, array_values($actual)); + } +} diff --git a/tests/properties/ConditionsTest.php b/tests/properties/ConditionsTest.php new file mode 100644 index 0000000..7326209 --- /dev/null +++ b/tests/properties/ConditionsTest.php @@ -0,0 +1,47 @@ +csv->conditions = 'author does not contain dan brown'; + + $this->_compareWithExpected([ + 'The Killing Kind', + 'The Third Secret', + 'The Last Templar', + 'The Traveller', + 'Crisis Four', + 'Prey', + 'The Broker (Paperback)', + 'Without Blood (Paperback)', + 'State of Fear (Paperback)', + 'The Rule of Four (Paperback)', + ]); + } + + public function testRating() { + $this->csv->conditions = 'rating < 3'; + $this->_compareWithExpected([ + 'The Killing Kind', + 'The Third Secret', + ]); + + $this->csv->conditions = 'rating >= 5'; + $this->_compareWithExpected([ + 'The Traveller', + 'Prey', + 'State of Fear (Paperback)', + 'Digital Fortress : A Thriller (Mass Market Paperback)', + 'Angels & Demons (Mass Market Paperback)', + ]); + } + + public function testTitleContainsSecretOrCode() { + $this->csv->conditions = 'title contains code OR title contains SECRET'; + + $this->_compareWithExpected([ + 'The Third Secret', + 'The Da Vinci Code (Hardcover)', + ]); + } +} diff --git a/tests/properties/SortByTest.php b/tests/properties/SortByTest.php new file mode 100644 index 0000000..5c10d1e --- /dev/null +++ b/tests/properties/SortByTest.php @@ -0,0 +1,58 @@ +csv->sort_by = 'rating'; + $this->csv->conditions = 'title does not contain Blood'; + $this->_compareWithExpected([ + // Rating 0 + 'The Killing Kind', + 'The Third Secret', + + // Rating 3 + 'The Last Templar', + 'The Broker (Paperback)', + + // Rating 4 + 'Deception Point (Paperback)', + 'The Rule of Four (Paperback)', + 'The Da Vinci Code (Hardcover)', + + // Rating 5 + 'State of Fear (Paperback)', + 'Prey', + 'Digital Fortress : A Thriller (Mass Market Paperback)', + 'Angels & Demons (Mass Market Paperback)', + ]); + } + + public function testReverseSortByRating() { + $this->csv->sort_by = 'rating'; + $this->csv->conditions = + 'title does not contain Prey AND ' . + 'title does not contain Fortress AND ' . + 'title does not contain Blood AND ' . + 'title does not contain Fear'; + $this->csv->sort_reverse = true; + $this->_compareWithExpected([ + + // Rating 5 + 'Angels & Demons (Mass Market Paperback)', + 'The Traveller', + + // Rating 4 + 'The Da Vinci Code (Hardcover)', + 'The Rule of Four (Paperback)', + 'Deception Point (Paperback)', + + // Rating 3 + 'The Broker (Paperback)', + 'The Last Templar', + + // Rating 0 + 'The Third Secret', + 'The Killing Kind', + ]); + } +}