Passed
Push — master ( 9ccabb...39bdf1 )
by Petr
07:56
created

BasicTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 32
c 1
b 0
f 0
dl 0
loc 68
rs 10
wmc 3
1
<?php
2
3
namespace ArraysTests;
4
5
6
use CommonTestClass;
7
use kalanis\kw_connect\arrays;
8
use kalanis\kw_connect\core\ConnectException;
9
use kalanis\kw_connect\core\Interfaces;
10
11
12
class BasicTest extends CommonTestClass
13
{
14
    /**
15
     * @param array $data
16
     * @param string|int $unknown
17
     * @param string|int $exists
18
     * @param mixed $expect
19
     * @param int $count
20
     * @dataProvider rowProvider
21
     * @throws ConnectException
22
     */
23
    public function testRow(array $data, $unknown, $exists, $expect, $count)
24
    {
25
        $data = new arrays\Row($data);
26
        $this->assertInstanceOf(Interfaces\IRow::class, $data);
27
28
        $this->assertFalse($data->__isset($unknown));
29
        $this->assertFalse(isset($data->$unknown));
30
31
        $this->assertTrue($data->__isset($exists));
32
        $this->assertTrue(isset($data->$exists));
33
34
        $this->assertEquals($expect, $data->getValue($exists));
35
    }
36
37
    /**
38
     * @param array $data
39
     * @param string|int $unknown
40
     * @param string|int $exists
41
     * @param mixed $expect
42
     * @param int $count
43
     * @dataProvider rowProvider
44
     */
45
    public function testFiltering(array $data, $unknown, $exists, $expect, $count)
46
    {
47
        $xData = [] + $data;
48
        $filter = new arrays\FilteringArrays($xData);
49
        $this->assertInstanceOf(\ArrayAccess::class, $filter);
50
        $this->assertInstanceOf(\Countable::class, $filter);
51
        $this->assertEquals($data, $filter->getArray());
52
53
        $this->assertFalse($filter->offsetExists($unknown));
54
        $this->assertFalse(isset($filter[$unknown]));
55
        $this->assertNull($filter->offsetGet($unknown));
56
57
        $this->assertTrue($filter->offsetExists($exists));
58
        $this->assertTrue(isset($filter[$exists]));
59
        $this->assertEquals($expect, $filter->offsetGet($exists));
60
61
        $this->assertEquals($count, $filter->count());
62
        $filter->offsetUnset($unknown);
63
        $filter->offsetUnset($exists);
64
        $this->assertEquals($count - 1, $filter->count());
65
66
        $filter->resetArray();
67
        $this->assertEmpty($filter->getArray());
68
        $filter->setArray($data);
69
        $this->assertEquals($count, $filter->count());
70
71
        $filter->offsetSet('dummy', 'wee');
72
    }
73
74
    public function rowProvider(): array
75
    {
76
        return [
77
            [['abc' => 'def', 'ghi' => 'jkl', 'mno' => 'pqr'], 'fff', 'ghi', 'jkl', 3],
78
            [['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr'], 40, 3, 'jkl', 6],
79
            [[123, 456, 789, 012, 345, 678], 'hehe', 4, 345, 6],
80
        ];
81
    }
82
}
83