3 namespace Doctrine\Tests\DBAL\Query\Expression;
5 use Doctrine\DBAL\Query\Expression\CompositeExpression;
7 require_once __DIR__ . '/../../../TestInit.php';
12 class CompositeExpressionTest extends \Doctrine\Tests\DbalTestCase
14 public function testCount()
16 $expr = new CompositeExpression(CompositeExpression::TYPE_OR, array('u.group_id = 1'));
18 $this->assertEquals(1, count($expr));
20 $expr->add('u.group_id = 2');
22 $this->assertEquals(2, count($expr));
26 * @dataProvider provideDataForConvertToString
28 public function testCompositeUsageAndGeneration($type, $parts, $expects)
30 $expr = new CompositeExpression($type, $parts);
32 $this->assertEquals($expects, (string) $expr);
35 public function provideDataForConvertToString()
39 CompositeExpression::TYPE_AND,
44 CompositeExpression::TYPE_AND,
45 array('u.user = 1', 'u.group_id = 1'),
46 '(u.user = 1) AND (u.group_id = 1)'
49 CompositeExpression::TYPE_OR,
54 CompositeExpression::TYPE_OR,
55 array('u.group_id = 1', 'u.group_id = 2'),
56 '(u.group_id = 1) OR (u.group_id = 2)'
59 CompositeExpression::TYPE_AND,
62 new CompositeExpression(
63 CompositeExpression::TYPE_OR,
64 array('u.group_id = 1', 'u.group_id = 2')
67 '(u.user = 1) AND ((u.group_id = 1) OR (u.group_id = 2))'
70 CompositeExpression::TYPE_OR,
73 new CompositeExpression(
74 CompositeExpression::TYPE_AND,
75 array('u.user = 1', 'u.group_id = 2')
78 '(u.group_id = 1) OR ((u.user = 1) AND (u.group_id = 2))'