Completed
Push — master ( 118d7f...436179 )
by Marco
13:51 queued 08:57
created

CompositeExpressionTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 4
lcom 0
cbo 2
dl 0
loc 94
rs 10
c 1
b 0
f 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testCount() 0 10 1
A testCompositeUsageAndGeneration() 0 6 1
A provideDataForConvertToString() 0 47 1
A testAdd() 0 22 1
1
<?php
2
3
namespace Doctrine\Tests\DBAL\Query\Expression;
4
5
use Doctrine\DBAL\Query\Expression\CompositeExpression;
6
7
/**
8
 * @group DBAL-12
9
 */
10
class CompositeExpressionTest extends \Doctrine\Tests\DbalTestCase
11
{
12
    public function testCount()
13
    {
14
        $expr = new CompositeExpression(CompositeExpression::TYPE_OR, array('u.group_id = 1'));
15
16
        $this->assertEquals(1, count($expr));
17
18
        $expr->add('u.group_id = 2');
19
20
        $this->assertEquals(2, count($expr));
21
    }
22
23
    public function testAdd()
24
    {
25
        $expr = new CompositeExpression(CompositeExpression::TYPE_OR, array('u.group_id = 1'));
26
27
        $this->assertCount(1, $expr);
28
29
        $expr->add(new CompositeExpression(CompositeExpression::TYPE_AND, array()));
30
31
        $this->assertCount(1, $expr);
32
33
        $expr->add(new CompositeExpression(CompositeExpression::TYPE_OR, array('u.user_id = 1')));
34
35
        $this->assertCount(2, $expr);
36
37
        $expr->add(null);
38
39
        $this->assertCount(2, $expr);
40
41
        $expr->add('u.user_id = 1');
42
43
        $this->assertCount(3, $expr);
44
    }
45
46
    /**
47
     * @dataProvider provideDataForConvertToString
48
     */
49
    public function testCompositeUsageAndGeneration($type, $parts, $expects)
50
    {
51
        $expr = new CompositeExpression($type, $parts);
52
53
        $this->assertEquals($expects, (string) $expr);
54
    }
55
56
    public function provideDataForConvertToString()
57
    {
58
        return array(
59
            array(
60
                CompositeExpression::TYPE_AND,
61
                array('u.user = 1'),
62
                'u.user = 1'
63
            ),
64
            array(
65
                CompositeExpression::TYPE_AND,
66
                array('u.user = 1', 'u.group_id = 1'),
67
                '(u.user = 1) AND (u.group_id = 1)'
68
            ),
69
            array(
70
                CompositeExpression::TYPE_OR,
71
                array('u.user = 1'),
72
                'u.user = 1'
73
            ),
74
            array(
75
                CompositeExpression::TYPE_OR,
76
                array('u.group_id = 1', 'u.group_id = 2'),
77
                '(u.group_id = 1) OR (u.group_id = 2)'
78
            ),
79
            array(
80
                CompositeExpression::TYPE_AND,
81
                array(
82
                    'u.user = 1',
83
                    new CompositeExpression(
84
                        CompositeExpression::TYPE_OR,
85
                        array('u.group_id = 1', 'u.group_id = 2')
86
                    )
87
                ),
88
                '(u.user = 1) AND ((u.group_id = 1) OR (u.group_id = 2))'
89
            ),
90
            array(
91
                CompositeExpression::TYPE_OR,
92
                array(
93
                    'u.group_id = 1',
94
                    new CompositeExpression(
95
                        CompositeExpression::TYPE_AND,
96
                        array('u.user = 1', 'u.group_id = 2')
97
                    )
98
                ),
99
                '(u.group_id = 1) OR ((u.user = 1) AND (u.group_id = 2))'
100
            ),
101
        );
102
    }
103
}