Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Hydration / SingleScalarHydratorTest.php
1 <?php
2
3 namespace Doctrine\Tests\ORM\Hydration;
4
5 use Doctrine\Tests\Mocks\HydratorMockStatement;
6 use Doctrine\ORM\Query\ResultSetMapping;
7
8 require_once __DIR__ . '/../../TestInit.php';
9
10 class SingleScalarHydratorTest extends HydrationTestCase
11 {
12     /** Result set provider for the HYDRATE_SINGLE_SCALAR tests */
13     public static function singleScalarResultSetProvider() {
14         return array(
15           // valid
16           array('name' => 'result1',
17                 'resultSet' => array(
18                   array(
19                       'u__name' => 'romanb'
20                   )
21                )),
22           // valid
23           array('name' => 'result2',
24                 'resultSet' => array(
25                   array(
26                       'u__id' => '1'
27                   )
28              )),
29            // invalid
30            array('name' => 'result3',
31                 'resultSet' => array(
32                   array(
33                       'u__id' => '1',
34                       'u__name' => 'romanb'
35                   )
36              )),
37            // invalid
38            array('name' => 'result4',
39                 'resultSet' => array(
40                   array(
41                       'u__id' => '1'
42                   ),
43                   array(
44                       'u__id' => '2'
45                   )
46              )),
47         );
48     }
49
50     /**
51      * select u.name from CmsUser u where u.id = 1
52      *
53      * @dataProvider singleScalarResultSetProvider
54      */
55     public function testHydrateSingleScalar($name, $resultSet)
56     {
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');
61
62         $stmt = new HydratorMockStatement($resultSet);
63         $hydrator = new \Doctrine\ORM\Internal\Hydration\SingleScalarHydrator($this->_em);
64
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') {
72             try {
73                 $result = $hydrator->hydrateAll($stmt, $rsm);
74                 $this->fail();
75             } catch (\Doctrine\ORM\NonUniqueResultException $e) {}
76         }
77     }
78 }