"ProdA", "B" => "ProdB", "C" => "ProdC"); protected $SAMPLE3 = array("A" => array('code' => 1000, 'name' => "ProdA"), "B" => array('code' => 1001, 'name' => "ProdB"), "C" => array('code' => 1002, 'name' => "ProdC")); public function testInvalidConstructor() { $this->expectException(UnexpectedValueException::class); new ArrayDataset('aaa'); } public function testcreateArrayIteratorSample1() { $arrayDataset = new ArrayDataset($this->SAMPLE1); $arrayIterator = $arrayDataset->getIterator(); $this->assertTrue($arrayIterator instanceof IteratorInterface); //, "Resultant object must be an interator"); $this->assertTrue($arrayIterator->hasNext()); //, "hasNext() method must be true"); $this->assertEquals($arrayIterator->Count(), 3); //, "Count() method must return 3"); } public function testcreateArrayIteratorSample2() { $arrayDataset = new ArrayDataset($this->SAMPLE2); $arrayIterator = $arrayDataset->getIterator(); $this->assertTrue($arrayIterator instanceof IteratorInterface); // "Resultant object must be an interator"); $this->assertTrue($arrayIterator->hasNext()); // "hasNext() method must be true"); $this->assertEquals($arrayIterator->Count(), 3); //, "Count() method must return 3"); } public function testcreateArrayIteratorSample3() { $arrayDataset = new ArrayDataset($this->SAMPLE3); $arrayIterator = $arrayDataset->getIterator(); $this->assertTrue($arrayIterator instanceof IteratorInterface); // "Resultant object must be an interator"); $this->assertTrue($arrayIterator->hasNext()); // "hasNext() method must be true"); $this->assertEquals($arrayIterator->Count(), 3); //, "Count() method must return 3"); } public function testnavigateArrayIteratorSample1() { $arrayDataset = new ArrayDataset($this->SAMPLE1); $arrayIterator = $arrayDataset->getIterator(); $count = 0; if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 0); $this->assertField($sr, "__key", 0); $this->assertField($sr, "value", 'ProdA'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 1); $this->assertField($sr, "__key", 1); $this->assertField($sr, "value", 'ProdB'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 2); $this->assertField($sr, "__key", 2); $this->assertField($sr, "value", 'ProdC'); $count++; } $this->assertTrue(!$arrayIterator->hasNext()); //, 'I did not expected more records'); $this->assertEquals($count, 3); //, "Count records mismatch. Need to process 3 records."); } public function testnavigateArrayIteratorSample2() { $arrayDataset = new ArrayDataset($this->SAMPLE2); $arrayIterator = $arrayDataset->getIterator(); $count = 0; if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 0); $this->assertField($sr, "__key", 'A'); $this->assertField($sr, "value", 'ProdA'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 1); $this->assertField($sr, "__key", 'B'); $this->assertField($sr, "value", 'ProdB'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 2); $this->assertField($sr, "__key", 'C'); $this->assertField($sr, "value", 'ProdC'); $count++; } $this->assertTrue(!$arrayIterator->hasNext()); //, 'I did not expected more records'); $this->assertEquals($count, 3); //, "Count records mismatch. Need to process 3 records."); } public function testnavigateArrayIteratorSample3() { $arrayDataset = new ArrayDataset($this->SAMPLE3); $arrayIterator = $arrayDataset->getIterator(); $count = 0; if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 0); $this->assertField($sr, "__key", 'A'); $this->assertField($sr, "code", 1000); $this->assertField($sr, "name", 'ProdA'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 1); $this->assertField($sr, "__key", 'B'); $this->assertField($sr, "code", 1001); $this->assertField($sr, "name", 'ProdB'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 2); $this->assertField($sr, "__key", 'C'); $this->assertField($sr, "code", 1002); $this->assertField($sr, "name", 'ProdC'); $count++; } $this->assertTrue(!$arrayIterator->hasNext()); //, 'I did not expected more records'); $this->assertEquals($count, 3); //, "Count records mismatch. Need to process 3 records."); } public function testcreateFromModel1() { $model = array( new ModelPublic(1, 'ProdA'), new ModelPublic(2, 'ProdB'), new ModelPublic(3, 'ProdC') ); $arrayDataset = new ArrayDataset($model); $arrayIterator = $arrayDataset->getIterator(); $this->assertTrue($arrayIterator instanceof IteratorInterface); //, "Resultant object must be an interator"); $this->assertTrue($arrayIterator->hasNext()); //, "hasNext() method must be true"); $this->assertEquals($arrayIterator->Count(), 3); //, "Count() method must return 3"); } public function testnavigateFromModel1() { $model = array( new ModelPublic(1, 'ProdA'), new ModelPublic(2, 'ProdB'), new ModelPublic(3, 'ProdC') ); $arrayDataset = new ArrayDataset($model); $arrayIterator = $arrayDataset->getIterator(); $count = 0; if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 0); $this->assertField($sr, "__key", 0); $this->assertField($sr, "__class", "Tests\\AnyDataset\\Sample\\ModelPublic"); $this->assertField($sr, "id", 1); $this->assertField($sr, "name", 'ProdA'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 1); $this->assertField($sr, "__key", 1); $this->assertField($sr, "__class", "Tests\\AnyDataset\\Sample\\ModelPublic"); $this->assertField($sr, "id", 2); $this->assertField($sr, "name", 'ProdB'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 2); $this->assertField($sr, "__key", 2); $this->assertField($sr, "__class", "Tests\\AnyDataset\\Sample\\ModelPublic"); $this->assertField($sr, "id", 3); $this->assertField($sr, "name", 'ProdC'); $count++; } $this->assertTrue(!$arrayIterator->hasNext()); //, 'I did not expected more records'); $this->assertEquals($count, 3); //, "Count records mismatch. Need to process 3 records."); } public function testnavigateFilterFromModel1() { $model = array( new ModelPublic(1, 'ProdA'), new ModelPublic(2, 'ProdB'), new ModelPublic(3, 'ProdC') ); $arrayDataset = new ArrayDataset($model); $filter = new IteratorFilter(); $filter->addRelation("name", Relation::EQUAL, "ProdB"); $arrayIterator = $arrayDataset->getIterator($filter); $count = 0; if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 1); $this->assertField($sr, "__key", 1); $this->assertField($sr, "__class", "Tests\\AnyDataset\\Sample\\ModelPublic"); $this->assertField($sr, "id", 2); $this->assertField($sr, "name", 'ProdB'); $count++; } $this->assertFalse($arrayIterator->hasNext()); //, 'I did not expected more records'); $this->assertEquals($count, 1); //, "Count records mismatch. Need to process 3 records."); } public function testcreateFromModel2() { $model = array( new ModelGetter(1, 'ProdA'), new ModelGetter(2, 'ProdB'), new ModelGetter(3, 'ProdC') ); $arrayDataset = new ArrayDataset($model); $arrayIterator = $arrayDataset->getIterator(); $this->assertTrue($arrayIterator instanceof IteratorInterface); //, "Resultant object must be an interator"); $this->assertTrue($arrayIterator->hasNext()); //, "hasNext() method must be true"); $this->assertEquals($arrayIterator->Count(), 3); //, "Count() method must return 3"); } public function testnavigateFromModel2() { $model = array( "A" => new ModelGetter(1, 'ProdA'), "B" => new ModelGetter(2, 'ProdB'), "C" => new ModelGetter(3, 'ProdC') ); $arrayDataset = new ArrayDataset($model); $arrayIterator = $arrayDataset->getIterator(); $count = 0; if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 0); $this->assertField($sr, "__key", "A"); $this->assertField($sr, "__class", ModelGetter::class); $this->assertField($sr, "id", 1); $this->assertField($sr, "name", 'ProdA'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 1); $this->assertField($sr, "__key", "B"); $this->assertField($sr, "__class", ModelGetter::class); $this->assertField($sr, "id", 2); $this->assertField($sr, "name", 'ProdB'); $count++; } if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 2); $this->assertField($sr, "__key", "C"); $this->assertField($sr, "__class", ModelGetter::class); $this->assertField($sr, "id", 3); $this->assertField($sr, "name", 'ProdC'); $count++; } $this->assertTrue(!$arrayIterator->hasNext()); //, 'I did not expected more records'); $this->assertEquals($count, 3); //, "Count records mismatch. Need to process 3 records."); } public function testnavigateFilterFromModel2() { $model = array( "A" => new ModelGetter(1, 'ProdA'), "B" => new ModelGetter(2, 'ProdB'), "C" => new ModelGetter(3, 'ProdC') ); $arrayDataset = new ArrayDataset($model); $filter = new IteratorFilter(); $filter->addRelation("name", Relation::EQUAL, "ProdB"); $arrayIterator = $arrayDataset->getIterator($filter); $count = 0; if ($arrayIterator->hasNext()) { $sr = $arrayIterator->moveNext(); $this->assertField($sr, "__id", 1); $this->assertField($sr, "__key", "B"); $this->assertField($sr, "__class", ModelGetter::class); $this->assertField($sr, "id", 2); $this->assertField($sr, "name", 'ProdB'); $count++; } $this->assertFalse($arrayIterator->hasNext()); //, 'I did not expected more records'); $this->assertEquals($count, 1); //, "Count records mismatch. Need to process 3 records."); } /** * @param Row $row * @param $field * @param $value */ public function assertField($row, $field, $value) { $this->assertEquals($value, $row->get($field)); } public function testEmptyArray() { $dataset = new ArrayDataset([]); $iterator = $dataset->getIterator(); $this->assertEquals(0, $iterator->count()); } } __halt_compiler();----SIGNATURE:----ee0NczwQftP889VOqNEFiw/XGS8J1XSzpTqlwVvfN0GxXXhWAmUo/9iVuqV11gBBYu18AuHgPY7M0Y2SS04ls3J4s+fXFsauftAdUNAdZDPCAWYcjEeXO13f7dGbW1hVP5Y2oXsiVsJAMhTTykVDbfaaCHfl5aJTO+8axvuDaomh3UBBl/IO6eqEqOsnuZrQ0pivD5/NAkpViMyWozkYaFiw/d8PMpeyZi5wXfRjVL8o3aahdD+sBO4Ik9gN8jDjv6QDX8RJ3hCGUlVgFWiAgT2kRd0GiV2dBA8OsUBk5fp8zAJPLe7kruPEhLnT5CMuI1yO2FX1LlF/sYK0IBkfFb3vY4L5kZUtPEHmeQq5nX+UaPHglod10LKr65bWeEH1cnsSbUePuk2n8bT2TZIa8XjUAx26/goX6w7ZIu21laOCMfUeSS0PrAmR6KIZWUJP8Ho9dT//IEsYkRYZkJ+SsfTUAtdi90gJraCWJ57s1HomgHlgTRPgNEZ/UldaxMbzkGM0SiEed2+zZ490nLWC2JGUWgMvvt8fKlmokaSIBP0jSkCThPsDCywkV1wpwAYtk7/wb+Q9Rv/r/pnhJZ1oh/zrWJgTv66p6BbO81Mf3bc16JsKUNGp4RiQqFMLS/9v4LzwWVHxINyRkz93PTeJ9tJF+DFOc+ELdt98wItYJ7c=----ATTACHMENT:----Mzk5MTI4MDg2NjU3NjYwNyAxNjc1MzU0NTk2MDI4OTI3IDQxMzUzNDM1NzQ4MDU5ODI=