/** * Test hydration of result types using public property setters * * @dataProvider provideResultTypes * * @param string $resultType */ public function testResultHydration($resultType) { $resultFixture = $this->getResultFixture(); $resultTypeFQN = AbstractResult::ns() . "\\{$resultType}"; $resultTypeReflection = new ReflectionClass($resultTypeFQN); if ($resultTypeReflection->isAbstract()) { return; } $result = new $resultTypeFQN(); $this->assertInstanceOf($resultTypeFQN, $result); if (!isset($resultFixture[$resultType])) { $this->markTestSkipped('No fixture to test with.'); } $hydrator = $result->getHydrator(); $fixture = $resultFixture[$resultType]; foreach ($fixture["data"] as $property => $value) { $result->{$property} = $value; } $dataResult = $hydrator->extract($result); $this->assertEquals($fixture["result"], $dataResult); }