Skip to content

Commit 4209881

Browse files
committed
PipeSelector tests completed.
1 parent 35ef1d9 commit 4209881

File tree

2 files changed

+138
-1
lines changed

2 files changed

+138
-1
lines changed

tests/unit/ArrayView/IssetTest.php

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
namespace Smoren\ArrayView\Tests\Unit\ArrayView;
44

5-
use Smoren\ArrayView\Selectors\SliceSelector;
5+
use Smoren\ArrayView\Selectors\IndexListSelector;
6+
use Smoren\ArrayView\Selectors\MaskSelector;
7+
use Smoren\ArrayView\Selectors\PipeSelector;
68
use Smoren\ArrayView\Views\ArrayView;
79

810
class IssetTest extends \Codeception\Test\Unit
@@ -16,6 +18,24 @@ public function testIssetSelectorFalse(array $source, $slice)
1618
$this->assertFalse(isset($view[$slice]));
1719
}
1820

21+
/**
22+
* @dataProvider dataProviderForIssetPipeSelectorTrue
23+
*/
24+
public function testIssetPipeSelectorTrue(array $source, array $selectors)
25+
{
26+
$view = ArrayView::toView($source);
27+
$this->assertTrue(isset($view[new PipeSelector($selectors)]));
28+
}
29+
30+
/**
31+
* @dataProvider dataProviderForIssetPipeSelectorFalse
32+
*/
33+
public function testIssetPipeSelectorFalse(array $source, array $selectors)
34+
{
35+
$view = ArrayView::toView($source);
36+
$this->assertFalse(isset($view[new PipeSelector($selectors)]));
37+
}
38+
1939
public function dataProviderForIssetSelectorFalse(): array
2040
{
2141
return [
@@ -31,4 +51,94 @@ public function dataProviderForIssetSelectorFalse(): array
3151
[[1, 2, 3, 4, 5, 6, 7, 8, 9], new \ArrayObject(['a' => 1])],
3252
];
3353
}
54+
55+
public function dataProviderForIssetPipeSelectorTrue(): array
56+
{
57+
return [
58+
[
59+
[1, 2, 3, 4, 5],
60+
[
61+
new MaskSelector([true, false, true, false, true]),
62+
],
63+
],
64+
[
65+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
66+
[
67+
new IndexListSelector([0, 1, 2]),
68+
new MaskSelector([true, false, true]),
69+
],
70+
],
71+
[
72+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
73+
[
74+
new IndexListSelector([0, 1, 2]),
75+
new MaskSelector([true, false, true]),
76+
new IndexListSelector([0, 1]),
77+
],
78+
],
79+
[
80+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
81+
[
82+
new IndexListSelector([0, 1, 2]),
83+
new MaskSelector([true, false, true]),
84+
new IndexListSelector([-2]),
85+
],
86+
],
87+
[
88+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
89+
[
90+
new IndexListSelector([0, 1, 2]),
91+
new PipeSelector([
92+
new MaskSelector([true, false, true]),
93+
new IndexListSelector([-2]),
94+
]),
95+
],
96+
],
97+
];
98+
}
99+
100+
public function dataProviderForIssetPipeSelectorFalse(): array
101+
{
102+
return [
103+
[
104+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
105+
[
106+
new MaskSelector([]),
107+
],
108+
],
109+
[
110+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
111+
[
112+
new IndexListSelector([0, 1, 2]),
113+
new MaskSelector([true, false]),
114+
],
115+
],
116+
[
117+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
118+
[
119+
new IndexListSelector([0, 1, 2]),
120+
new MaskSelector([true, false, true]),
121+
new IndexListSelector([0, 2]),
122+
],
123+
],
124+
[
125+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
126+
[
127+
new IndexListSelector([0, 1, 2]),
128+
new MaskSelector([true, false, true]),
129+
new IndexListSelector([-3]),
130+
],
131+
],
132+
[
133+
[1, 2, 3, 4, 5, 6, 7, 8, 9],
134+
[
135+
new IndexListSelector([0, 1, 2]),
136+
new PipeSelector([
137+
new MaskSelector([true, false, true]),
138+
new IndexListSelector([-3]),
139+
]),
140+
],
141+
],
142+
];
143+
}
34144
}

tests/unit/ArrayView/ReadTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public function testReadPipe(array $source, array $selectors, array $expected)
5656

5757
$this->assertSame($subview->toArray(), $expected);
5858
$this->assertSame($subArray, $expected);
59+
$this->assertSame($selector->getValue(), $selectors);
5960
}
6061

6162
/**
@@ -348,6 +349,32 @@ public function dataProviderForReadPipe(): array
348349
],
349350
[9],
350351
],
352+
[
353+
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
354+
[
355+
new SliceSelector('::2'),
356+
new PipeSelector([
357+
new SliceSelector('::2'),
358+
new SliceSelector('::2'),
359+
]),
360+
new SliceSelector('1:'),
361+
],
362+
[9],
363+
],
364+
[
365+
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
366+
[
367+
new SliceSelector('::2'),
368+
new PipeSelector([
369+
new PipeSelector([
370+
new SliceSelector('::2'),
371+
new SliceSelector('::2'),
372+
]),
373+
]),
374+
new SliceSelector('1:'),
375+
],
376+
[9],
377+
],
351378
];
352379
}
353380

0 commit comments

Comments
 (0)