More tests, filtering iterator, cleanup

This commit is contained in:
2022-10-31 02:58:34 +01:00
parent d0956f851c
commit fd2767b642
14 changed files with 340 additions and 21 deletions

View File

@ -1,7 +0,0 @@
{
"datasets": {
"baz": {
"filename": "data/test.csv"
}
}
}

View File

@ -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");
}
}

View 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());
}
}

View 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");
}
}

View File

@ -0,0 +1,6 @@
"a";"b"
1;a
2;b
3;c
4;d
5;e
1 a b
2 1 a
3 2 b
4 3 c
5 4 d
6 5 e

View 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" }
]

View File

@ -0,0 +1,10 @@
{
"datasets": {
"csv": {
"filename": "data/data.csv"
},
"json": {
"filename": "data/data.json"
}
}
}