ContainerTest::testContainerSet()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 30
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
eloc 19
c 3
b 0
f 0
nc 1
nop 0
dl 0
loc 30
rs 9.6333
1
<?php
2
class ContainerTest extends \PHPUnit\Framework\TestCase
3
{
4
    public function testContainerExists()
5
    {
6
        $testContainer = new \Suricate\Container([
7
            'a' => 1,
8
            'b' => 3,
9
            5 => 'z'
10
        ]);
11
12
        $this->assertTrue($testContainer->offsetExists('a'));
13
        $this->assertTrue($testContainer->offsetExists(5));
14
        $this->assertFalse($testContainer->offsetExists('c'));
15
        $this->assertFalse($testContainer->offsetExists(6));
16
17
        $this->assertTrue(isset($testContainer['a']));
18
        $this->assertTrue(isset($testContainer[5]));
19
        $this->assertFalse(isset($testContainer[99]));
20
    }
21
22
    public function testContainerGet()
23
    {
24
        $testContainer = new \Suricate\Container([
25
            'a' => 1,
26
            'b' => 3,
27
            5 => 'z'
28
        ]);
29
30
        $this->assertEquals($testContainer['a'], 1);
31
        $this->assertEquals($testContainer[5], 'z');
32
33
        $this->expectException(\InvalidArgumentException::class);
34
        $testContainer['zz'];
35
    }
36
37
    public function testContainerSet()
38
    {
39
        $payload = [
40
            'a' => 1,
41
            'b' => 3,
42
            5 => 'z'
43
        ];
44
45
        $warehouse = ['zz' => 'my_value'];
46
47
        $testContainer = new \Suricate\Container($payload);
48
49
        $reflector = new ReflectionClass(get_class($testContainer));
50
        $property = $reflector->getProperty('warehouse');
51
        $property->setAccessible(true);
52
53
        $this->assertEquals([], $property->getValue($testContainer));
54
55
        $property = $reflector->getProperty('content');
56
        $property->setAccessible(true);
57
        $this->assertEquals($payload, $property->getValue($testContainer));
58
59
        $testContainer['new_index'] = 'ttt';
60
        $this->assertEquals($payload, $property->getValue($testContainer));
61
62
        $testContainer->setWarehouse($warehouse);
63
        $property = $reflector->getProperty('warehouse');
64
        $property->setAccessible(true);
65
66
        $this->assertEquals($warehouse, $property->getValue($testContainer));
67
    }
68
69
    public function testContainerUnset()
70
    {
71
        $payload = [
72
            'a' => 1,
73
            'b' => 3,
74
            5 => 'z'
75
        ];
76
77
        $testContainer = new \Suricate\Container($payload);
78
        $this->assertSame(1, $testContainer['a']);
79
        $this->assertSame(3, $testContainer['b']);
80
        $this->assertSame('z', $testContainer['5']);
81
        unset($testContainer['b']);
82
        $this->assertFalse($testContainer->offsetExists('b'));
83
    }
84
85
    public function testContainerWarehouse()
86
    {
87
        $warehouse = ['test' => 'stdClass'];
88
89
        $testContainer = new \Suricate\Container([]);
90
        $testContainer->setWarehouse($warehouse);
91
        $this->assertEquals($testContainer['test'], new \stdClass());
92
    }
93
}
94