More tests, filtering iterator, cleanup
This commit is contained in:
@ -1,7 +0,0 @@
|
||||
{
|
||||
"datasets": {
|
||||
"baz": {
|
||||
"filename": "data/test.csv"
|
||||
}
|
||||
}
|
||||
}
|
@ -16,6 +16,6 @@ class DatasetManagerTest extends \PHPUnit\Framework\TestCase
|
||||
$dm = new DatasetManager();
|
||||
|
||||
$sets = $dm->getAvailableDatasets();
|
||||
$this->assertEquals(1, count($sets), "Expected 1 loaded set");
|
||||
$this->assertEquals(2, count($sets), "Expected 2 loaded set");
|
||||
}
|
||||
}
|
||||
|
72
tests/src/FilteringReaderIteratorTest.php
Normal file
72
tests/src/FilteringReaderIteratorTest.php
Normal file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\Dataset;
|
||||
|
||||
use ArrayIterator;
|
||||
use Iterator;
|
||||
|
||||
class FilteringReaderIteratorTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* @covers FilteringReaderIterator
|
||||
*/
|
||||
public function testSimpleFiltering()
|
||||
{
|
||||
$arr = iterator_to_array(
|
||||
new FilteringReaderIterator(
|
||||
$this->getTestIterator(), [
|
||||
"alpha" => 3
|
||||
]));
|
||||
|
||||
$this->assertEquals(1, count($arr));
|
||||
$this->assertEquals(3, $arr[2]['alpha']);
|
||||
$this->assertEquals('red', $arr[2]['beta']);
|
||||
$this->assertEquals(null, $arr[2]['gamma']);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FilteringReaderIterator
|
||||
*/
|
||||
public function testFilteringOnRange()
|
||||
{
|
||||
$arr = iterator_to_array(
|
||||
new FilteringReaderIterator(
|
||||
$this->getTestIterator(), [
|
||||
"alpha" => [ 'gt' => 2, 'lt' => 5 ]
|
||||
]));
|
||||
|
||||
$this->assertEquals(2, count($arr));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers FilteringReaderIterator
|
||||
*/
|
||||
public function testFilteringOnRangeInclusive()
|
||||
{
|
||||
$arr = iterator_to_array(
|
||||
new FilteringReaderIterator(
|
||||
$this->getTestIterator(), [
|
||||
"alpha" => [ 'gt' => 2, 'lte' => 5 ]
|
||||
]));
|
||||
|
||||
$this->assertEquals(3, count($arr));
|
||||
}
|
||||
|
||||
private function getTestData(): array
|
||||
{
|
||||
return [
|
||||
[ 'alpha' => 1, 'beta' => 'green', 'gamma' => true ],
|
||||
[ 'alpha' => 2, 'beta' => 'blue', 'gamma' => false ],
|
||||
[ 'alpha' => 3, 'beta' => 'red', 'gamma' => null ],
|
||||
[ 'alpha' => 4, 'beta' => 'yellow', 'gamma' => false ],
|
||||
[ 'alpha' => 5, 'beta' => 'pink', 'gamma' => true ],
|
||||
];
|
||||
}
|
||||
|
||||
private function getTestIterator(): Iterator
|
||||
{
|
||||
return new ArrayIterator($this->getTestData());
|
||||
}
|
||||
}
|
29
tests/src/Readers/CsvReaderTest.php
Normal file
29
tests/src/Readers/CsvReaderTest.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\Dataset\Readers;
|
||||
|
||||
|
||||
class CsvReaderTest extends \PHPUnit\Framework\TestCase
|
||||
{
|
||||
/**
|
||||
* @covers CsvReader
|
||||
*/
|
||||
public function testReadingSingleFile()
|
||||
{
|
||||
$reader = new CsvReader(__DIR__."/../../test/test/data/data.csv", []);
|
||||
$arr = iterator_to_array($reader);
|
||||
|
||||
$this->assertEquals(5, count($arr), "Expected 5 items");
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers CsvReader
|
||||
*/
|
||||
public function testReadingSplitFile()
|
||||
{
|
||||
$reader = new CsvReader(__DIR__."/../../test/test/data/*.csv", []);
|
||||
$arr = iterator_to_array($reader);
|
||||
|
||||
$this->assertEquals(5, count($arr), "Expected 5 items");
|
||||
}
|
||||
}
|
6
tests/test/test/data/data.csv
Normal file
6
tests/test/test/data/data.csv
Normal file
@ -0,0 +1,6 @@
|
||||
"a";"b"
|
||||
1;a
|
||||
2;b
|
||||
3;c
|
||||
4;d
|
||||
5;e
|
|
7
tests/test/test/data/data.json
Normal file
7
tests/test/test/data/data.json
Normal file
@ -0,0 +1,7 @@
|
||||
[
|
||||
{ "a": 1, "b": "a" },
|
||||
{ "a": 2, "b": "b" },
|
||||
{ "a": 3, "b": "c" },
|
||||
{ "a": 4, "b": "d" },
|
||||
{ "a": 5, "b": "e" }
|
||||
]
|
10
tests/test/test/dataset.json
Normal file
10
tests/test/test/dataset.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"datasets": {
|
||||
"csv": {
|
||||
"filename": "data/data.csv"
|
||||
},
|
||||
"json": {
|
||||
"filename": "data/data.json"
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user