SqlQueryResultTest::testOffsetUnsetIsForbidden()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 6
rs 10
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * This file is part of the tarantool/client package.
5
 *
6
 * (c) Eugene Leonovich <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Tarantool\Client\Tests\Unit;
15
16
use PHPUnit\Framework\TestCase;
17
use Tarantool\Client\SqlQueryResult;
18
19
final class SqlQueryResultTest extends TestCase
20
{
21
    private const DATA = [
22
        [1, 'foo'],
23
        [2, 'bar'],
24
    ];
25
26
    private const METADATA = [
27
        ['column1', 'integer'],
28
        ['column2', 'string'],
29
    ];
30
31
    public function testGetData() : void
32
    {
33
        $result = new SqlQueryResult(self::DATA, self::METADATA);
34
35
        self::assertSame(self::DATA, $result->getData());
36
        self::assertSame(self::METADATA, $result->getMetadata());
37
    }
38
39
    public function testGetMetadata() : void
40
    {
41
        $result = new SqlQueryResult(self::DATA, self::METADATA);
42
43
        self::assertSame(self::METADATA, $result->getMetadata());
44
    }
45
46
    public function testIsEmptyReturnsTrue() : void
47
    {
48
        $result = new SqlQueryResult([], []);
49
50
        self::assertTrue($result->isEmpty());
51
    }
52
53
    public function testIsEmptyReturnsFalse() : void
54
    {
55
        $result = new SqlQueryResult(self::DATA, self::METADATA);
56
57
        self::assertFalse($result->isEmpty());
58
    }
59
60
    public function testGetFirst() : void
61
    {
62
        $result = new SqlQueryResult(self::DATA, self::METADATA);
63
64
        self::assertSame([
65
            self::METADATA[0][0] => self::DATA[0][0],
66
            self::METADATA[1][0] => self::DATA[0][1],
67
        ], $result->getFirst());
68
    }
69
70
    public function testGetFirstReturnsNull() : void
71
    {
72
        $result = new SqlQueryResult([], []);
73
74
        self::assertNull($result->getFirst());
75
    }
76
77
    public function testGetLast() : void
78
    {
79
        $result = new SqlQueryResult(self::DATA, self::METADATA);
80
81
        self::assertSame([
82
            self::METADATA[0][0] => self::DATA[1][0],
83
            self::METADATA[1][0] => self::DATA[1][1],
84
        ], $result->getLast());
85
    }
86
87
    public function testGetLastReturnsNull() : void
88
    {
89
        $result = new SqlQueryResult([], []);
90
91
        self::assertNull($result->getLast());
92
    }
93
94
    public function testIterable() : void
95
    {
96
        $result = new SqlQueryResult(self::DATA, self::METADATA);
97
98
        self::assertIsIterable($result);
99
100
        $count = 0;
101
        foreach ($result as $item) {
102
            self::assertSame([
103
                self::METADATA[0][0] => self::DATA[$count][0],
104
                self::METADATA[1][0] => self::DATA[$count][1],
105
            ], $item);
106
            ++$count;
107
        }
108
109
        self::assertSame(2, $count);
110
    }
111
112
    public function testCountable() : void
113
    {
114
        $result = new SqlQueryResult(self::DATA, self::METADATA);
115
116
        self::assertCount(2, $result);
117
    }
118
119
    public function testOffsetGetReturnsFirstItem() : void
120
    {
121
        $result = new SqlQueryResult(self::DATA, self::METADATA);
122
123
        self::assertSame($result->getFirst(), $result[0]);
124
    }
125
126
    public function testOffsetGetReturnsSecondItem() : void
127
    {
128
        $result = new SqlQueryResult(self::DATA, self::METADATA);
129
130
        self::assertSame($result->getLast(), $result[1]);
131
    }
132
133
    public function testOffsetGetFailsOnInvalidOffset() : void
134
    {
135
        $result = new SqlQueryResult(self::DATA, self::METADATA);
136
137
        $this->expectException(\OutOfBoundsException::class);
138
        $this->expectExceptionMessage('The offset "2" does not exist');
139
        $result[2];
140
    }
141
142
    public function testOffsetIssetReturnsTrue() : void
143
    {
144
        $result = new SqlQueryResult(self::DATA, self::METADATA);
145
146
        self::assertTrue(isset($result[0]));
147
    }
148
149
    public function testOffsetIssetReturnsFalse() : void
150
    {
151
        $result = new SqlQueryResult(self::DATA, self::METADATA);
152
153
        self::assertFalse(isset($result[2]));
154
    }
155
156
    public function testOffsetSetIsForbidden() : void
157
    {
158
        $result = new SqlQueryResult(self::DATA, self::METADATA);
159
160
        $this->expectException(\BadMethodCallException::class);
161
        $result[2] = [
162
            self::METADATA[0][0] => self::DATA[0][0],
163
            self::METADATA[1][0] => self::DATA[0][1],
164
        ];
165
    }
166
167
    public function testOffsetUnsetIsForbidden() : void
168
    {
169
        $result = new SqlQueryResult(self::DATA, self::METADATA);
170
171
        $this->expectException(\BadMethodCallException::class);
172
        unset($result[0]);
173
    }
174
}
175