OptimizerTest   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 0
Metric Value
wmc 1
lcom 0
cbo 5
dl 0
loc 70
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A testOptimizedOhm() 0 68 1
1
<?php
2
3
namespace Vlaswinkel\UnitConverter\Tests\Parser;
4
5
use PHPUnit\Framework\TestCase;
6
use Vlaswinkel\UnitConverter\Parser\AST\BinaryOperatorASTNode;
7
use Vlaswinkel\UnitConverter\Parser\AST\DigitASTNode;
8
use Vlaswinkel\UnitConverter\Parser\AST\UnitASTNode;
9
use Vlaswinkel\UnitConverter\Parser\Optimizer;
10
11
class OptimizerTest extends TestCase {
12
    public function testOptimizedOhm() {
13
        $node = new BinaryOperatorASTNode(
14
            '*',
15
            new BinaryOperatorASTNode(
16
                '*',
17
                new BinaryOperatorASTNode(
18
                    '*',
19
                    new UnitASTNode('kg'),
20
                    new BinaryOperatorASTNode(
21
                        '^',
22
                        new UnitASTNode('m'),
23
                        new DigitASTNode('2')
24
                    )
25
                ),
26
                new BinaryOperatorASTNode(
27
                    '^',
28
                    new UnitASTNode('s'),
29
                    new DigitASTNode('-3')
30
                )
31
            ),
32
            new BinaryOperatorASTNode(
33
                '^',
34
                new UnitASTNode('A'),
35
                new DigitASTNode('-2')
36
            )
37
        );
38
39
        $optimizer = new Optimizer();
40
41
        $optimized = $optimizer->optimize($node);
42
43
        $this->assertEquals(
44
            new BinaryOperatorASTNode(
45
                '*',
46
                new BinaryOperatorASTNode(
47
                    '*',
48
                    new BinaryOperatorASTNode(
49
                        '*',
50
                        new UnitASTNode('kg'),
51
                        new BinaryOperatorASTNode(
52
                            '^',
53
                            new UnitASTNode('m'),
54
                            new DigitASTNode(2)
55
                        )
56
                    ),
57
                    new BinaryOperatorASTNode(
58
                        '/',
59
                        new DigitASTNode(1),
60
                        new BinaryOperatorASTNode(
61
                            '^',
62
                            new UnitASTNode('s'),
63
                            new DigitASTNode(3)
64
                        )
65
                    )
66
                ),
67
                new BinaryOperatorASTNode(
68
                    '/',
69
                    new DigitASTNode(1),
70
                    new BinaryOperatorASTNode(
71
                        '^',
72
                        new UnitASTNode('A'),
73
                        new DigitASTNode(2)
74
                    )
75
                )
76
            ),
77
            $optimized
78
        );
79
    }
80
}