22
33namespace 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 ;
68use Smoren \ArrayView \Views \ArrayView ;
79
810class 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}
0 commit comments