ArrayAccessorTest::testDcount()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 29
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 29
rs 8.8571
cc 1
eloc 19
nc 1
nop 0
1
<?php
2
3
namespace Pouzor\MongoDBBundle\Tests\Unit\Services;
4
5
use Pouzor\MongoDBBundle\Services\ArrayAccessor;
6
7
class ArrayAccessorTest extends \PHPUnit_Framework_TestCase
8
{
9
10
    public function testReplaceKey()
11
    {
12
        $arrayTest = ["foo" => "bar", "foo2" => "bar2", "foo3" => "bar3"];
13
14
        ArrayAccessor::replaceKey($arrayTest, "foo", "foo4");
15
16
        $this->assertArrayHasKey("foo4", $arrayTest);
17
        $this->assertArrayNotHasKey("foo", $arrayTest);
18
19
        ArrayAccessor::replaceKey($arrayTest, "foo", "foo5");
20
21
        $this->assertArrayHasKey("foo4", $arrayTest);
22
        $this->assertArrayNotHasKey("foo", $arrayTest);
23
        $this->assertArrayNotHasKey("foo5", $arrayTest);
24
25
    }
26
27
    public function testDget()
28
    {
29
        $arraytest = [
30
            'person' => [
31
                'name' => 'john',
32
                'lastname' => 'smith',
33
                'childs' => [
34
                    ['name' => 'victor'],
35
                    ['name' => 'david']
36
                ]
37
            ]
38
        ];
39
40
        $result = ArrayAccessor::dget($arraytest, "person.name", "nope");
41
        $this->assertEquals($result, 'john');
42
43
        $result = ArrayAccessor::dget($arraytest, "person.foo", "bar");
44
        $this->assertEquals($result, 'bar');
45
46
        $result = ArrayAccessor::dget($arraytest, "person.childs.0.name", "bar");
47
        $this->assertEquals($result, 'victor');
48
        $result = ArrayAccessor::dget($arraytest, "person.childs.1.name", "bar");
49
        $this->assertEquals($result, 'david');
50
    }
51
52
53
    public function testDset() {
54
        $arraytest = [
55
            'person' => [
56
                'name' => 'john',
57
                'lastname' => 'smith',
58
                'childs' => [
59
                    ['name' => 'victor'],
60
                    ['name' => 'david']
61
                ]
62
            ]
63
        ];
64
65
        ArrayAccessor::dset($arraytest, "person.name", "doe");
66
        $this->assertEquals($arraytest['person']['name'], 'doe');
67
68
        ArrayAccessor::dset($arraytest, "person.childs.0.name", "doom");
69
        $this->assertEquals($arraytest['person']['childs'][0]["name"], 'doom');
70
71
        ArrayAccessor::dset($arraytest, "person.childs.3.name", "birst");
72
        $this->assertEquals($arraytest['person']['childs'][3]["name"], 'birst');
73
74
    }
75
76
    public function testDcount() {
77
        $arraytest = [
78
            'person' => [
79
                'name' => 'john',
80
                'lastname' => 'smith',
81
                'childs' => [
82
                    ['name' => 'victor'],
83
                    ['name' => 'david']
84
                ]
85
            ],
86
            'work' => "none"
87
        ];
88
89
        $value = ArrayAccessor::dcount($arraytest, "person");
90
        $this->assertEquals(3, $value);
91
92
        $value = ArrayAccessor::dcount($arraytest, "person.childs");
93
        $this->assertEquals(2, $value);
94
95
        $value = ArrayAccessor::dcount($arraytest, "person.nope");
96
        $this->assertNull($value);
97
98
        $value = ArrayAccessor::dcount($arraytest, "person.childs.3");
99
        $this->assertNull($value);
100
101
        $value = ArrayAccessor::dcount($arraytest, "person.name.0");
102
        $this->assertNull($value);
103
104
    }
105
106
    public function testDdel() {
107
        $arraytest = [
108
            'person' => [
109
                'name' => 'john',
110
                'lastname' => 'smith',
111
                'childs' => [
112
                    ['name' => 'victor'],
113
                    ['name' => 'david']
114
                ]
115
            ],
116
            'work' => "none"
117
        ];
118
119
        ArrayAccessor::ddel($arraytest, "person.childs.2");
120
        $this->assertArrayNotHasKey(2, $arraytest['person']['childs']);
121
122
        ArrayAccessor::ddel($arraytest, "person.name.0");
123
        $this->assertFalse(is_array($arraytest['person']['name']));
124
    }
125
126
    public function testGetKeyExists() {
127
        $arraytest = [
128
            'person' => 'john'
129
        ];
130
131
        $this->assertEquals(ArrayAccessor::get_key_exist($arraytest, "person"), 'john');
132
        $this->assertEquals(ArrayAccessor::get_key_exist($arraytest, "work", 'nope'), 'nope');
133
        
134
    }
135
136
}