Skip to content

Commit

Permalink
Merge pull request #542 from FabioBatSilva/DDC-2205
Browse files Browse the repository at this point in the history
[DDC-2205] Fix DDC-2205
  • Loading branch information
guilhermeblanco committed Dec 21, 2012
2 parents 4bbfe0c + 2104ae9 commit 8b5e4a9
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/Doctrine/ORM/Query/Parser.php
Expand Up @@ -1792,6 +1792,9 @@ public function ScalarExpression()
switch (true) {
case ($lookahead === Lexer::T_INTEGER):
case ($lookahead === Lexer::T_FLOAT):
// SimpleArithmeticExpression : (- u.value ) or ( + u.value ) or ( - 1 ) or ( + 1 )
case ($lookahead === Lexer::T_MINUS):
case ($lookahead === Lexer::T_PLUS):
return $this->SimpleArithmeticExpression();

case ($lookahead === Lexer::T_STRING):
Expand Down
31 changes: 31 additions & 0 deletions tests/Doctrine/Tests/ORM/Query/SelectSqlGenerationTest.php
Expand Up @@ -1230,6 +1230,37 @@ public function testSimpleCaseWithStringPrimary()
);
}

/**
* @group DDC-2205
*/
public function testCaseNegativeValuesInThenExpression()
{
$this->assertSqlGeneration(
"SELECT CASE g.name WHEN 'admin' THEN - 1 ELSE - 2 END FROM Doctrine\Tests\Models\CMS\CmsGroup g",
"SELECT CASE c0_.name WHEN 'admin' THEN -1 ELSE -2 END AS sclr0 FROM cms_groups c0_"
);

$this->assertSqlGeneration(
"SELECT CASE g.name WHEN 'admin' THEN - 2 WHEN 'guest' THEN - 1 ELSE 0 END FROM Doctrine\Tests\Models\CMS\CmsGroup g",
"SELECT CASE c0_.name WHEN 'admin' THEN -2 WHEN 'guest' THEN -1 ELSE 0 END AS sclr0 FROM cms_groups c0_"
);

$this->assertSqlGeneration(
"SELECT CASE g.name WHEN 'admin' THEN (- 1) ELSE (- 2) END FROM Doctrine\Tests\Models\CMS\CmsGroup g",
"SELECT CASE c0_.name WHEN 'admin' THEN -1 ELSE -2 END AS sclr0 FROM cms_groups c0_"
);

$this->assertSqlGeneration(
"SELECT CASE g.name WHEN 'admin' THEN ( - :value) ELSE ( + :value) END FROM Doctrine\Tests\Models\CMS\CmsGroup g",
"SELECT CASE c0_.name WHEN 'admin' THEN -? ELSE +? END AS sclr0 FROM cms_groups c0_"
);

$this->assertSqlGeneration(
"SELECT CASE g.name WHEN 'admin' THEN ( - g.id) ELSE ( + g.id) END FROM Doctrine\Tests\Models\CMS\CmsGroup g",
"SELECT CASE c0_.name WHEN 'admin' THEN -c0_.id ELSE +c0_.id END AS sclr0 FROM cms_groups c0_"
);
}

/**
* @group DDC-1339
*/
Expand Down

0 comments on commit 8b5e4a9

Please sign in to comment.