Commit bace8878 authored by Fabio B. Silva's avatar Fabio B. Silva

functional tests

parent 5244b8f8
...@@ -797,7 +797,7 @@ abstract class AbstractPlatform ...@@ -797,7 +797,7 @@ abstract class AbstractPlatform
{ {
return '(' . $value1 . ' & ' . $value2 . ')'; return '(' . $value1 . ' & ' . $value2 . ')';
} }
/** /**
* Gets SQL bit OR comparison expression * Gets SQL bit OR comparison expression
* *
......
...@@ -147,7 +147,7 @@ class OraclePlatform extends AbstractPlatform ...@@ -147,7 +147,7 @@ class OraclePlatform extends AbstractPlatform
{ {
return "ADD_MONTHS(" . $date . ", -" . $months . ")"; return "ADD_MONTHS(" . $date . ", -" . $months . ")";
} }
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
......
...@@ -318,6 +318,57 @@ class DataAccessTest extends \Doctrine\Tests\DbalFunctionalTestCase ...@@ -318,6 +318,57 @@ class DataAccessTest extends \Doctrine\Tests\DbalFunctionalTestCase
$this->assertEquals(0, count($rows), "no result should be returned, otherwise SQL injection is possible"); $this->assertEquals(0, count($rows), "no result should be returned, otherwise SQL injection is possible");
} }
/**
* @group DDC-1213
*/
public function testBitComparisonExpressionSupport()
{
$this->_conn->executeQuery('DELETE FROM fetch_table')->execute();
$platform = $this->_conn->getDatabasePlatform();;
$bitmap = array();
for ($i = 2; $i < 9; $i = $i + 2) {
$bitmap[$i] = array(
'bit_or' => ($i | 2),
'bit_and' => ($i & 2)
);
$this->_conn->insert('fetch_table', array(
'test_int' => $i,
'test_string' => json_encode($bitmap[$i]),
'test_datetime' => '2010-01-01 10:10:10'
));
}
$sql[] = 'SELECT ';
$sql[] = 'test_int, ';
$sql[] = 'test_string, ';
$sql[] = $platform->getBitOrComparisonExpression('test_int', 2) . ' AS bit_or, ';
$sql[] = $platform->getBitAndComparisonExpression('test_int', 2) . ' AS bit_and ';
$sql[] = 'FROM fetch_table';
$stmt = $this->_conn->executeQuery(implode(PHP_EOL, $sql));
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
$this->assertEquals(4, count($data));
$this->assertEquals(count($bitmap), count($data));
foreach ($data as $row) {
$this->assertArrayHasKey('test_int', $row);
$id = $row['test_int'];
$this->assertArrayHasKey($id, $bitmap);
$this->assertArrayHasKey($id, $bitmap);
$this->assertArrayHasKey('bit_or', $row);
$this->assertArrayHasKey('bit_and', $row);
$this->assertEquals($row['bit_or'], $bitmap[$id]['bit_or']);
$this->assertEquals($row['bit_and'], $bitmap[$id]['bit_and']);
}
}
public function testSetDefaultFetchMode() public function testSetDefaultFetchMode()
{ {
......
...@@ -130,7 +130,7 @@ abstract class AbstractPlatformTestCase extends \Doctrine\Tests\DbalTestCase ...@@ -130,7 +130,7 @@ abstract class AbstractPlatformTestCase extends \Doctrine\Tests\DbalTestCase
$sql = $this->_platform->getCreateConstraintSQL($fk, 'test'); $sql = $this->_platform->getCreateConstraintSQL($fk, 'test');
$this->assertEquals($this->getGenerateConstraintForeignKeySql(), $sql); $this->assertEquals($this->getGenerateConstraintForeignKeySql(), $sql);
} }
protected function getBitAndComparisonExpressionSql($value1, $value2) protected function getBitAndComparisonExpressionSql($value1, $value2)
{ {
return '(' . $value1 . ' & ' . $value2 . ')'; return '(' . $value1 . ' & ' . $value2 . ')';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment