Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Hydration / SingleScalarHydratorTest.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Hydration/SingleScalarHydratorTest.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Hydration/SingleScalarHydratorTest.php
new file mode 100644 (file)
index 0000000..f6abe24
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+namespace Doctrine\Tests\ORM\Hydration;
+
+use Doctrine\Tests\Mocks\HydratorMockStatement;
+use Doctrine\ORM\Query\ResultSetMapping;
+
+require_once __DIR__ . '/../../TestInit.php';
+
+class SingleScalarHydratorTest extends HydrationTestCase
+{
+    /** Result set provider for the HYDRATE_SINGLE_SCALAR tests */
+    public static function singleScalarResultSetProvider() {
+        return array(
+          // valid
+          array('name' => 'result1',
+                'resultSet' => array(
+                  array(
+                      'u__name' => 'romanb'
+                  )
+               )),
+          // valid
+          array('name' => 'result2',
+                'resultSet' => array(
+                  array(
+                      'u__id' => '1'
+                  )
+             )),
+           // invalid
+           array('name' => 'result3',
+                'resultSet' => array(
+                  array(
+                      'u__id' => '1',
+                      'u__name' => 'romanb'
+                  )
+             )),
+           // invalid
+           array('name' => 'result4',
+                'resultSet' => array(
+                  array(
+                      'u__id' => '1'
+                  ),
+                  array(
+                      'u__id' => '2'
+                  )
+             )),
+        );
+    }
+
+    /**
+     * select u.name from CmsUser u where u.id = 1
+     *
+     * @dataProvider singleScalarResultSetProvider
+     */
+    public function testHydrateSingleScalar($name, $resultSet)
+    {
+        $rsm = new ResultSetMapping;
+        $rsm->addEntityResult('Doctrine\Tests\Models\CMS\CmsUser', 'u');
+        $rsm->addFieldResult('u', 'u__id', 'id');
+        $rsm->addFieldResult('u', 'u__name', 'name');
+
+        $stmt = new HydratorMockStatement($resultSet);
+        $hydrator = new \Doctrine\ORM\Internal\Hydration\SingleScalarHydrator($this->_em);
+
+        if ($name == 'result1') {
+            $result = $hydrator->hydrateAll($stmt, $rsm);
+            $this->assertEquals('romanb', $result);
+        } else if ($name == 'result2') {
+            $result = $hydrator->hydrateAll($stmt, $rsm);
+            $this->assertEquals(1, $result);
+        } else if ($name == 'result3' || $name == 'result4') {
+            try {
+                $result = $hydrator->hydrateAll($stmt, $rsm);
+                $this->fail();
+            } catch (\Doctrine\ORM\NonUniqueResultException $e) {}
+        }
+    }
+}
\ No newline at end of file