Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / dbal / tests / Doctrine / Tests / DBAL / Query / Expression / CompositeExpressionTest.php
1 <?php
2
3 namespace Doctrine\Tests\DBAL\Query\Expression;
4
5 use Doctrine\DBAL\Query\Expression\CompositeExpression;
6
7 require_once __DIR__ . '/../../../TestInit.php';
8
9 /**
10  * @group DBAL-12
11  */
12 class CompositeExpressionTest extends \Doctrine\Tests\DbalTestCase
13 {
14     public function testCount()
15     {
16         $expr = new CompositeExpression(CompositeExpression::TYPE_OR, array('u.group_id = 1'));
17
18         $this->assertEquals(1, count($expr));
19
20         $expr->add('u.group_id = 2');
21
22         $this->assertEquals(2, count($expr));
23     }
24
25     /**
26      * @dataProvider provideDataForConvertToString
27      */
28     public function testCompositeUsageAndGeneration($type, $parts, $expects)
29     {
30         $expr = new CompositeExpression($type, $parts);
31
32         $this->assertEquals($expects, (string) $expr);
33     }
34
35     public function provideDataForConvertToString()
36     {
37         return array(
38             array(
39                 CompositeExpression::TYPE_AND,
40                 array('u.user = 1'),
41                 'u.user = 1'
42             ),
43             array(
44                 CompositeExpression::TYPE_AND,
45                 array('u.user = 1', 'u.group_id = 1'),
46                 '(u.user = 1) AND (u.group_id = 1)'
47             ),
48             array(
49                 CompositeExpression::TYPE_OR,
50                 array('u.user = 1'),
51                 'u.user = 1'
52             ),
53             array(
54                 CompositeExpression::TYPE_OR,
55                 array('u.group_id = 1', 'u.group_id = 2'),
56                 '(u.group_id = 1) OR (u.group_id = 2)'
57             ),
58             array(
59                 CompositeExpression::TYPE_AND,
60                 array(
61                     'u.user = 1',
62                     new CompositeExpression(
63                         CompositeExpression::TYPE_OR,
64                         array('u.group_id = 1', 'u.group_id = 2')
65                     )
66                 ),
67                 '(u.user = 1) AND ((u.group_id = 1) OR (u.group_id = 2))'
68             ),
69             array(
70                 CompositeExpression::TYPE_OR,
71                 array(
72                     'u.group_id = 1',
73                     new CompositeExpression(
74                         CompositeExpression::TYPE_AND,
75                         array('u.user = 1', 'u.group_id = 2')
76                     )
77                 ),
78                 '(u.group_id = 1) OR ((u.user = 1) AND (u.group_id = 2))'
79             ),
80         );
81     }
82 }