php-dataset/tests/src/FilteringReaderIteratorTest...

73 lines
1.8 KiB
PHP

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