3 namespace Doctrine\Tests\ORM\Hydration;
5 use Doctrine\Tests\Mocks\HydratorMockStatement;
6 use Doctrine\ORM\Query\ResultSetMapping;
8 require_once __DIR__ . '/../../TestInit.php';
10 class SingleScalarHydratorTest extends HydrationTestCase
12 /** Result set provider for the HYDRATE_SINGLE_SCALAR tests */
13 public static function singleScalarResultSetProvider() {
16 array('name' => 'result1',
23 array('name' => 'result2',
30 array('name' => 'result3',
38 array('name' => 'result4',
51 * select u.name from CmsUser u where u.id = 1
53 * @dataProvider singleScalarResultSetProvider
55 public function testHydrateSingleScalar($name, $resultSet)
57 $rsm = new ResultSetMapping;
58 $rsm->addEntityResult('Doctrine\Tests\Models\CMS\CmsUser', 'u');
59 $rsm->addFieldResult('u', 'u__id', 'id');
60 $rsm->addFieldResult('u', 'u__name', 'name');
62 $stmt = new HydratorMockStatement($resultSet);
63 $hydrator = new \Doctrine\ORM\Internal\Hydration\SingleScalarHydrator($this->_em);
65 if ($name == 'result1') {
66 $result = $hydrator->hydrateAll($stmt, $rsm);
67 $this->assertEquals('romanb', $result);
68 } else if ($name == 'result2') {
69 $result = $hydrator->hydrateAll($stmt, $rsm);
70 $this->assertEquals(1, $result);
71 } else if ($name == 'result3' || $name == 'result4') {
73 $result = $hydrator->hydrateAll($stmt, $rsm);
75 } catch (\Doctrine\ORM\NonUniqueResultException $e) {}