_em = $this->_getTestEntityManager(); } public function testGetParameters() { $query = $this->_em->createQuery("select u from Doctrine\Tests\Models\CMS\CmsUser u where u.username = ?1"); $this->assertEquals(array(), $query->getParameters()); } public function testGetParameters_HasSomeAlready() { $query = $this->_em->createQuery("select u from Doctrine\Tests\Models\CMS\CmsUser u where u.username = ?1"); $query->setParameter(2, 84); $this->assertEquals(array(2 => 84), $query->getParameters()); } public function testSetParameters() { $query = $this->_em->createQuery("select u from Doctrine\Tests\Models\CMS\CmsUser u where u.username = ?1"); $query->setParameters(array(1 => 'foo', 2 => 'bar')); $this->assertEquals(array(1 => 'foo', 2 => 'bar'), $query->getParameters()); } public function testFree() { $query = $this->_em->createQuery("select u from Doctrine\Tests\Models\CMS\CmsUser u where u.username = ?1"); $query->setParameter(2, 84, \PDO::PARAM_INT); $query->free(); $this->assertEquals(array(), $query->getParameters()); } public function testClone() { $dql = "select u from Doctrine\Tests\Models\CMS\CmsUser u where u.username = ?1"; $query = $this->_em->createQuery($dql); $query->setParameter(2, 84, \PDO::PARAM_INT); $query->setHint('foo', 'bar'); $cloned = clone $query; $this->assertEquals($dql, $cloned->getDql()); $this->assertEquals(array(), $cloned->getParameters()); $this->assertFalse($cloned->getHint('foo')); } public function testFluentQueryInterface() { $q = $this->_em->createQuery("select a from Doctrine\Tests\Models\CMS\CmsArticle a"); $q2 = $q->expireQueryCache(true) ->setQueryCacheLifetime(3600) ->setQueryCacheDriver(null) ->expireResultCache(true) ->setHint('foo', 'bar') ->setHint('bar', 'baz') ->setParameter(1, 'bar') ->setParameters(array(2 => 'baz')) ->setResultCacheDriver(null) ->setResultCacheId('foo') ->setDql('foo') ->setFirstResult(10) ->setMaxResults(10); $this->assertSame($q2, $q); } /** * @group DDC-968 */ public function testHints() { $q = $this->_em->createQuery("select a from Doctrine\Tests\Models\CMS\CmsArticle a"); $q->setHint('foo', 'bar')->setHint('bar', 'baz'); $this->assertEquals('bar', $q->getHint('foo')); $this->assertEquals('baz', $q->getHint('bar')); $this->assertEquals(array('foo' => 'bar', 'bar' => 'baz'), $q->getHints()); } /** * @group DDC-1588 */ public function testQueryDefaultResultCache() { $this->_em->getConfiguration()->setResultCacheImpl(new ArrayCache()); $q = $this->_em->createQuery("select a from Doctrine\Tests\Models\CMS\CmsArticle a"); $q->useResultCache(true); $this->assertSame($this->_em->getConfiguration()->getResultCacheImpl(), $q->getQueryCacheProfile()->getResultCacheDriver()); } /** * @expectedException Doctrine\ORM\Query\QueryException **/ public function testIterateWithNoDistinctAndWrongSelectClause() { $q = $this->_em->createQuery("select u, a from Doctrine\Tests\Models\CMS\CmsUser u LEFT JOIN u.articles a"); $q->iterate(); } /** * @expectedException Doctrine\ORM\Query\QueryException **/ public function testIterateWithNoDistinctAndWithValidSelectClause() { $q = $this->_em->createQuery("select u from Doctrine\Tests\Models\CMS\CmsUser u LEFT JOIN u.articles a"); $q->iterate(); } public function testIterateWithDistinct() { $q = $this->_em->createQuery("SELECT DISTINCT u from Doctrine\Tests\Models\CMS\CmsUser u LEFT JOIN u.articles a"); $q->iterate(); } /** * @group DDC-1697 */ public function testKeyValueParameters() { $cities = array( 0 => "Paris", 3 => "Canne", 9 => "St Julien" ); $query = $this->_em ->createQuery("SELECT a FROM Doctrine\Tests\Models\CMS\CmsAddress a WHERE a.city IN (:cities)") ->setParameter('cities', $cities); $parameters = $query->getParameters(); $this->assertArrayHasKey('cities', $parameters); $this->assertEquals($cities, $parameters['cities']); } }