From 5d3a9160dcc83cdc89e5230dc5ae817946b819c2 Mon Sep 17 00:00:00 2001 From: zYne Date: Thu, 28 Dec 2006 00:07:32 +0000 Subject: [PATCH] added test case for Expression module base class --- tests/ExpressionTestCase.php | 138 +++++++++++++++++++++++++++++++++++ tests/UnitTestCase.php | 2 + 2 files changed, 140 insertions(+) diff --git a/tests/ExpressionTestCase.php b/tests/ExpressionTestCase.php index ee07f3878..7baa760f2 100644 --- a/tests/ExpressionTestCase.php +++ b/tests/ExpressionTestCase.php @@ -31,4 +31,142 @@ * @version $Revision$ */ class Doctrine_Expression_TestCase extends Doctrine_UnitTestCase { + + /** + * AGGREGATE FUNCTIONS + */ + public function testAvgReturnsValidSql() { + $this->expr = new Doctrine_Expression_Mock(); + + $this->assertEqual($this->expr->avg('id'), 'AVG(id)'); + } + public function testCountReturnsValidSql() { + $this->assertEqual($this->expr->count('id'), 'COUNT(id)'); + } + public function testMaxReturnsValidSql() { + $this->assertEqual($this->expr->max('id'), 'MAX(id)'); + } + public function testMinReturnsValidSql() { + $this->assertEqual($this->expr->min('id'), 'MIN(id)'); + } + public function testSumReturnsValidSql() { + $this->assertEqual($this->expr->sum('id'), 'SUM(id)'); + } + + public function testRegexpImplementedOnlyAtDriverLevel() { + try { + $this->expr->regexp('[abc]'); + $this->fail(); + } catch(Doctrine_Expression_Exception $e) { + $this->pass(); + } + } + public function testSoundexImplementedOnlyAtDriverLevel() { + try { + $this->expr->soundex('arnold'); + $this->fail(); + } catch(Doctrine_Expression_Exception $e) { + $this->pass(); + } + } + /** + * TIME FUNCTIONS + */ + public function testNowReturnsValidSql() { + $this->assertEqual($this->expr->now(), 'NOW()'); + } + + /** + * STRING FUNCTIONS + */ + public function testUpperReturnsValidSql() { + $this->assertEqual($this->expr->upper('id', 3), 'UPPER(id)'); + } + public function testLowerReturnsValidSql() { + $this->assertEqual($this->expr->lower('id'), 'LOWER(id)'); + } + public function testLengthReturnsValidSql() { + $this->assertEqual($this->expr->length('id'), 'LENGTH(id)'); + } + public function testLtrimReturnsValidSql() { + $this->assertEqual($this->expr->ltrim('id'), 'LTRIM(id)'); + } + public function testLocateReturnsValidSql() { + $this->assertEqual($this->expr->locate('id', 3), 'LOCATE(id, 3)'); + } + public function testConcatReturnsValidSql() { + $this->assertEqual($this->expr->concat(array('id', 'type')), 'CONCAT(id, type)'); + } + public function testSubstringReturnsValidSql() { + $this->assertEqual($this->expr->substring('id', 3), 'SUBSTRING(id FROM 3)'); + + $this->assertEqual($this->expr->substring('id', 3, 2), 'SUBSTRING(id FROM 3 FOR 2)'); + } + + /** + * MATH FUNCTIONS + */ + public function testRoundReturnsValidSql() { + $this->assertEqual($this->expr->round(2.3), 'ROUND(2.3, 0)'); + + $this->assertEqual($this->expr->round(2.3, 1), 'ROUND(2.3, 1)'); + } + public function testModReturnsValidSql() { + $this->assertEqual($this->expr->mod(2, 3), 'MOD(2, 3)'); + } + public function testSubReturnsValidSql() { + $this->assertEqual($this->expr->sub(array(2, 3)), '(2 - 3)'); + } + public function testMulReturnsValidSql() { + $this->assertEqual($this->expr->mul(array(2, 3)), '(2 * 3)'); + } + public function testAddReturnsValidSql() { + $this->assertEqual($this->expr->add(array(2, 3)), '(2 + 3)'); + } + public function testDivReturnsValidSql() { + $this->assertEqual($this->expr->div(array(2, 3)), '(2 / 3)'); + } + + /** + * ASSERT OPERATORS + */ + + public function testEqReturnsValidSql() { + $this->assertEqual($this->expr->eq(1, 1), '1 = 1'); + } + public function testNeqReturnsValidSql() { + $this->assertEqual($this->expr->neq(1, 2), '1 <> 2'); + } + public function testGtReturnsValidSql() { + $this->assertEqual($this->expr->gt(2, 1), '2 > 1'); + } + public function testGteReturnsValidSql() { + $this->assertEqual($this->expr->gte(1, 1), '1 >= 1'); + } + public function testLtReturnsValidSql() { + $this->assertEqual($this->expr->lt(1, 2), '1 < 2'); + } + public function testLteReturnsValidSql() { + $this->assertEqual($this->expr->lte(1, 1), '1 <= 1'); + } + + /** + * WHERE OPERATORS + */ + public function testNotReturnsValidSql() { + $this->assertEqual($this->expr->not('id'), 'NOT(id)'); + } + public function testInReturnsValidSql() { + $this->assertEqual($this->expr->in('id', array(1, 2)), 'id IN (1, 2)'); + } + public function testIsNullReturnsValidSql() { + $this->assertEqual($this->expr->isNull('type'), 'type IS NULL'); + } + public function testIsNotNullReturnsValidSql() { + $this->assertEqual($this->expr->isNotNull('type'), 'type IS NOT NULL'); + } + public function testBetweenReturnsValidSql() { + $this->assertEqual($this->expr->between('age', 12, 14), 'age BETWEEN 12 AND 14'); + } } +class Doctrine_Expression_Mock extends Doctrine_Expression { } diff --git a/tests/UnitTestCase.php b/tests/UnitTestCase.php index 30475f47a..0e4194e54 100644 --- a/tests/UnitTestCase.php +++ b/tests/UnitTestCase.php @@ -17,6 +17,7 @@ class Doctrine_UnitTestCase extends UnitTestCase { protected $conn; protected $adapter; protected $export; + protected $expr; protected $dataDict; protected $transaction; @@ -112,6 +113,7 @@ class Doctrine_UnitTestCase extends UnitTestCase { $this->export = $this->connection->export; $this->transaction = $this->connection->transaction; $this->dataDict = $this->connection->dataDict; + $this->expr = $this->connection->expression; } $this->unitOfWork = $this->connection->unitOfWork; $this->connection->setListener(new Doctrine_EventListener());