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