Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / TypeTest.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/TypeTest.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/TypeTest.php
new file mode 100644 (file)
index 0000000..9ed8cf0
--- /dev/null
@@ -0,0 +1,182 @@
+<?php
+
+namespace Doctrine\Tests\ORM\Functional;
+
+use Doctrine\Tests\Models\Generic\BooleanModel;
+use Doctrine\Tests\Models\Generic\DateTimeModel;
+use Doctrine\Tests\Models\Generic\DecimalModel;
+use Doctrine\Tests\Models\Generic\SerializationModel;
+
+use Doctrine\ORM\Mapping\AssociationMapping;
+use Doctrine\DBAL\Types\Type as DBALType;
+
+require_once __DIR__ . '/../../TestInit.php';
+
+class TypeTest extends \Doctrine\Tests\OrmFunctionalTestCase
+{
+    protected function setUp()
+    {
+        $this->useModelSet('generic');
+        parent::setUp();
+    }
+
+    public function testDecimal()
+    {
+        $decimal = new DecimalModel();
+        $decimal->decimal = 0.15;
+        $decimal->highScale = 0.1515;
+
+        $this->_em->persist($decimal);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dql = "SELECT d FROM Doctrine\Tests\Models\Generic\DecimalModel d";
+        $decimal = $this->_em->createQuery($dql)->getSingleResult();
+
+        $this->assertEquals(0.15, $decimal->decimal);
+        $this->assertEquals(0.1515, $decimal->highScale);
+    }
+
+    /**
+     * @group DDC-1394
+     * @return void
+     */
+    public function testBoolean()
+    {
+        $bool = new BooleanModel();
+        $bool->booleanField = true;
+
+        $this->_em->persist($bool);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dql = "SELECT b FROM Doctrine\Tests\Models\Generic\BooleanModel b WHERE b.booleanField = true";
+        $bool = $this->_em->createQuery($dql)->getSingleResult();
+
+        $this->assertTrue($bool->booleanField);
+
+        $bool->booleanField = false;
+
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dql = "SELECT b FROM Doctrine\Tests\Models\Generic\BooleanModel b WHERE b.booleanField = false";
+        $bool = $this->_em->createQuery($dql)->getSingleResult();
+
+        $this->assertFalse($bool->booleanField);
+    }
+
+    public function testArray()
+    {
+        $serialize = new SerializationModel();
+        $serialize->array["foo"] = "bar";
+        $serialize->array["bar"] = "baz";
+
+        $this->_em->persist($serialize);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dql = "SELECT s FROM Doctrine\Tests\Models\Generic\SerializationModel s";
+        $serialize = $this->_em->createQuery($dql)->getSingleResult();
+
+        $this->assertEquals(array("foo" => "bar", "bar" => "baz"), $serialize->array);
+    }
+
+    public function testObject()
+    {
+        $serialize = new SerializationModel();
+        $serialize->object = new \stdClass();
+
+        $this->_em->persist($serialize);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dql = "SELECT s FROM Doctrine\Tests\Models\Generic\SerializationModel s";
+        $serialize = $this->_em->createQuery($dql)->getSingleResult();
+
+        $this->assertInstanceOf('stdClass', $serialize->object);
+    }
+
+    public function testDate()
+    {
+        $dateTime = new DateTimeModel();
+        $dateTime->date = new \DateTime('2009-10-01', new \DateTimeZone('Europe/Berlin'));
+
+        $this->_em->persist($dateTime);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dateTimeDb = $this->_em->find('Doctrine\Tests\Models\Generic\DateTimeModel', $dateTime->id);
+
+        $this->assertInstanceOf('DateTime', $dateTimeDb->date);
+        $this->assertEquals('2009-10-01', $dateTimeDb->date->format('Y-m-d'));
+    }
+
+    public function testDateTime()
+    {
+        $dateTime = new DateTimeModel();
+        $dateTime->datetime = new \DateTime('2009-10-02 20:10:52', new \DateTimeZone('Europe/Berlin'));
+
+        $this->_em->persist($dateTime);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dateTimeDb = $this->_em->find('Doctrine\Tests\Models\Generic\DateTimeModel', $dateTime->id);
+
+        $this->assertInstanceOf('DateTime', $dateTimeDb->datetime);
+        $this->assertEquals('2009-10-02 20:10:52', $dateTimeDb->datetime->format('Y-m-d H:i:s'));
+
+        $articles = $this->_em->getRepository( 'Doctrine\Tests\Models\Generic\DateTimeModel' )->findBy( array( 'datetime' => new \DateTime( "now" ) ) );
+        $this->assertEquals( 0, count( $articles ) );
+    }
+
+    public function testDqlQueryBindDateTimeInstance()
+    {
+        $date = new \DateTime('2009-10-02 20:10:52', new \DateTimeZone('Europe/Berlin'));
+
+        $dateTime = new DateTimeModel();
+        $dateTime->datetime = $date;
+
+        $this->_em->persist($dateTime);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dateTimeDb = $this->_em->createQuery('SELECT d FROM Doctrine\Tests\Models\Generic\DateTimeModel d WHERE d.datetime = ?1')
+                                ->setParameter(1, $date, DBALType::DATETIME)
+                                ->getSingleResult();
+    }
+
+    public function testDqlQueryBuilderBindDateTimeInstance()
+    {
+        $date = new \DateTime('2009-10-02 20:10:52', new \DateTimeZone('Europe/Berlin'));
+
+        $dateTime = new DateTimeModel();
+        $dateTime->datetime = $date;
+
+        $this->_em->persist($dateTime);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dateTimeDb = $this->_em->createQueryBuilder()
+                                 ->select('d')
+                                 ->from('Doctrine\Tests\Models\Generic\DateTimeModel', 'd')
+                                 ->where('d.datetime = ?1')
+                                 ->setParameter(1, $date, DBALType::DATETIME)
+                                 ->getQuery()->getSingleResult();
+    }
+
+    public function testTime()
+    {
+        $dateTime = new DateTimeModel();
+        $dateTime->time = new \DateTime('2010-01-01 19:27:20');
+
+        $this->_em->persist($dateTime);
+        $this->_em->flush();
+        $this->_em->clear();
+
+        $dateTimeDb = $this->_em->find('Doctrine\Tests\Models\Generic\DateTimeModel', $dateTime->id);
+
+        $this->assertInstanceOf('DateTime', $dateTime->time);
+        $this->assertEquals('19:27:20', $dateTime->time->format('H:i:s'));
+    }
+}