schemator-php
1765 строк · 51.9 Кб
1<?php
2
3declare(strict_types=1);
4
5namespace Smoren\Schemator\Tests\Unit\NestedAccessor;
6
7use Smoren\Schemator\Components\NestedAccessor;
8
9class NestedAccessorExistTest extends \Codeception\Test\Unit
10{
11/**
12* @dataProvider dataProviderForExistTrueStrict
13* @dataProvider dataProviderForEqualNull
14*/
15public function testExistTrueStrict($source, $path)
16{
17// Given
18$accessor = new NestedAccessor($source);
19
20// When
21$actual = isset($accessor[$path]);
22
23// Then
24$this->assertTrue($actual);
25}
26
27/**
28* @dataProvider dataProviderForExistTrueStrict
29*/
30public function testIssetTrueStrict($source, $path)
31{
32// Given
33$accessor = new NestedAccessor($source);
34
35// When
36$actual = $accessor->isset($path);
37
38// Then
39$this->assertTrue($actual);
40}
41
42/**
43* @dataProvider dataProviderForExistFalseStrict
44* @dataProvider dataProviderForExistTrueNonStrict
45* @dataProvider dataProviderForExistFalseNonStrict
46*/
47public function testExistFalseStrict($source, $path)
48{
49// Given
50$accessor = new NestedAccessor($source);
51
52// When
53$actual = isset($accessor[$path]);
54
55// Then
56$this->assertFalse($actual);
57}
58
59/**
60* @dataProvider dataProviderForExistFalseStrict
61* @dataProvider dataProviderForExistTrueNonStrict
62* @dataProvider dataProviderForExistFalseNonStrict
63* @dataProvider dataProviderForEqualNull
64*/
65public function testIssetFalseStrict($source, $path)
66{
67// Given
68$accessor = new NestedAccessor($source);
69
70// When
71$actual = $accessor->isset($path);
72
73// Then
74$this->assertFalse($actual);
75}
76
77/**
78* @dataProvider dataProviderForExistTrueNonStrict
79* @dataProvider dataProviderForExistTrueStrict
80* @dataProvider dataProviderForEqualNull
81*/
82public function testExistTrueNonStrict($source, $path)
83{
84// Given
85$accessor = new NestedAccessor($source);
86
87// When
88$actual = $accessor->exist($path, false);
89
90// Then
91$this->assertTrue($actual);
92}
93
94/**
95* @dataProvider dataProviderForExistTrueNonStrict
96* @dataProvider dataProviderForExistTrueStrict
97*/
98public function testIssetTrueNonStrict($source, $path)
99{
100// Given
101$accessor = new NestedAccessor($source);
102
103// When
104$actual = $accessor->isset($path, false);
105
106// Then
107$this->assertTrue($actual);
108}
109
110/**
111* @dataProvider dataProviderForExistFalseNonStrict
112*/
113public function testExistFalseNonStrict($source, $path)
114{
115// Given
116$accessor = new NestedAccessor($source);
117
118// When
119$actual = $accessor->exist($path, false);
120
121// Then
122$this->assertFalse($actual);
123}
124
125/**
126* @dataProvider dataProviderForExistFalseNonStrict
127* @dataProvider dataProviderForEqualNull
128*/
129public function testIssetFalseNonStrict($source, $path)
130{
131// Given
132$accessor = new NestedAccessor($source);
133
134// When
135$actual = $accessor->isset($path, false);
136
137// Then
138$this->assertFalse($actual);
139}
140
141public function dataProviderForExistTrueStrict(): array
142{
143return [
144[
145[],
146[],
147],
148[
149[],
150null,
151],
152[
153['a' => 1],
154[],
155],
156[
157[1, 2, 3],
158null,
159],
160[
161[1, 2, 3],
162'*',
163],
164[
165[1, 2, 3, 'a' => 4],
166'*',
167],
168[
169[1, 2, 3, 'a' => 4],
1700,
171],
172[
173[1, 2, 3, 'a' => 4],
174'0',
175],
176[
177[1, 2, 3, 'a' => 4],
178'2',
179],
180[
181[1, 2, 3, 'a' => 4],
1822,
183],
184[
185[1, 2, 3, 'a' => 4],
186'a',
187],
188[
189[1, 2, 3, 'a' => [1, 2, 'a' => 3]],
190'a',
191],
192[
193[1, 2, 3, 'a' => ['b' => [11, 12], 'c' => [22, 23]]],
194'a.*',
195],
196[
197[1, 2, 3, 'a' => ['b' => [11, 12], 'c' => [22, 23]]],
198'a.*.|.0',
199],
200[
201[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
202'a.*.*',
203],
204[
205[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
206'a.*',
207],
208[
209[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
210'a.*.*',
211],
212[
213[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
214'a.*.0',
215],
216[
217[1, 2, 3, 'a' => [[11, 22], [33, 44]]],
218'a.*',
219],
220[
221[1, 2, 3, 'a' => [[11, 22], [33, 44]]],
222'a.*.*',
223],
224[
225[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
226'a.*.0.0',
227],
228[
229[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
230'a.*.0.*',
231],
232[
233[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
234'a.*.0.1',
235],
236[
237[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
238'a.b',
239],
240[
241[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
242'a.b.*',
243],
244[
245[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
246'a.*.*',
247],
248[
249[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]],
250'a.*.*.*',
251],
252[
253[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]],
254'a.*.*.0',
255],
256[
257[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
258['a', '*', '*'],
259],
260[
261[
262'a' => [1, 2, 3],
263'b' => [11, 22, 33],
264'c' => [111, 222, 333],
265],
266'*.0',
267],
268[
269[
270'a' => [1, 2, 3],
271'b' => [11, 22, 33],
272'c' => [111, 222, 333],
273],
274['*', 0],
275],
276[
277[
278'a' => [1, 2, 3],
279'b' => [11, 22, 33],
280'c' => [111, 222, 333],
281],
282['*', '2'],
283],
284[
285[
286'a' => [1, 2, [3]],
287'b' => [11, 22, [33]],
288'c' => [111, 222, [333]],
289],
290['*', '2'],
291],
292[
293[
294'a' => [1, 2, [3]],
295'b' => [11, 22, [33]],
296'c' => [111, 222, [333]],
297],
298['*', '2', '*'],
299],
300[
301[
302'a' => [1, 2, 3],
303'b' => [11, 22, 33],
304'c' => [111, 222, 333],
305],
306'*.*',
307],
308[
309[
310[
311'a' => [1, 2, 3],
312'b' => [11, 22, 33],
313'c' => [111, 222, 333],
314],
315],
316'*.*.0',
317],
318[
319[
320[
321[
322'a' => [1, 2, 3],
323'b' => [11, 22, 33],
324'c' => [111, 222, 333],
325],
326],
327[
328[
329'a' => [4, 5],
330'b' => [44, 55],
331'c' => [444, 555],
332],
333],
334],
335'*.*.*.0',
336],
337[
338[
339[
340[
341'a' => [1, 2, 3],
342'b' => [11, 22, 33],
343'c' => [111, 222, 333],
344],
345],
346[
347[
348'a' => [4, 5],
349'b' => [44, 55],
350'c' => [444, 555],
351],
352],
353],
354'*.*.a',
355],
356[
357[
358[
359[
360'a' => [1, 2, 3],
361'b' => [11, 22, 33],
362'c' => [111, 222, 333],
363],
364],
365[
366[
367'a' => [4, 5],
368'b' => [44, 55],
369'c' => [444, 555],
370],
371],
372],
373'*.*.a.0',
374],
375[
376[
377[
378[
379'a' => [1, 2, 3],
380'b' => [11, 22, 33],
381'c' => [111, 222, 333],
382],
383],
384[
385[
386'a' => [4, 5],
387'b' => [44, 55],
388'c' => [444, 555],
389],
390],
391],
392'*.*.a.*',
393],
394[
395[
396[
397[
398'a' => [1, 2, 3],
399'b' => [11, 22, 33],
400'c' => [111, 222, 333],
401],
402],
403[
404[
405'a' => [4, 5],
406'b' => [44, 55],
407'c' => [444, 555],
408],
409],
410],
411'*.*.b.|.1',
412],
413[
414[
415'first' => [
416[
417'a' => [1, 2, 3],
418'b' => [11, 22, 33],
419'c' => [111, 222, 333],
420],
421],
422'second' => [
423[
424'a' => [4, 5],
425'b' => [44, 55],
426],
427],
428],
429'*.*.*.1',
430],
431[
432[
433'first' => [
434[
435[
436'a' => [],
437'b' => ['aaa'],
438'c' => ['bbb'],
439],
440],
441],
442'second' => [
443[
444[
445[1, 2, 3],
446[11, 22, 33],
447[111, 222, 333],
448],
449[
450[1111],
451[11111],
452],
453],
454[
455[
456[111111],
457[1111111],
458],
459],
460],
461],
462'second.*.*.*.0',
463],
464[
465[
466'first' => [
467[
468[
469'a' => [],
470'b' => ['aaa'],
471'c' => ['bbb'],
472],
473],
474],
475'second' => [
476[
477[
478[1, 2, 3],
479[11, 22, 33],
480[111, 222, 333],
481],
482[
483[1111],
484[11111],
485],
486],
487[
488[
489[111111],
490[1111111],
491],
492],
493],
494],
495'second.*.*.0.0',
496],
497[
498[
499'first' => [
500[
501[
502'a' => [],
503'b' => ['aaa'],
504'c' => ['bbb'],
505],
506],
507],
508'second' => [
509[
510[
511[1, 2, 3],
512[11, 22, 33],
513[111, 222, 333],
514],
515[
516[1111],
517[11111],
518],
519],
520[
521[
522[111111],
523[1111111],
524],
525],
526],
527],
528'second.*.*.0.*',
529],
530[
531[
532'first' => [
533[
534[
535'a' => [],
536'b' => ['aaa'],
537'c' => ['bbb'],
538],
539],
540],
541'second' => [
542[
543[
544[1, 2, 3],
545[11, 22, 33],
546[111, 222, 333],
547],
548[
549[1111],
550[2222],
551],
552],
553[
554[
555[11111],
556[222222],
557],
558],
559],
560],
561'second.0.0.0',
562],
563[
564[
565'a' => [
566[
567'b' => [
568[
569'c' => [
570[
571'd' => 1,
572'e' => [1, 2, 3],
573]
574],
575'f' => [
576[
577'd' => 2,
578'e' => [4, 5, 6],
579]
580],
581],
582],
583'i' => [
584[
585'j' => [
586[
587'd' => 3,
588'e' => [7, 8, 9],
589]
590]
591],
592],
593],
594],
595],
596'a.*****.d',
597],
598[
599[
600'a' => [
601[
602'b' => [
603[
604'c' => [
605[
606'd' => 1,
607'e' => [1, 2, 3],
608]
609],
610'f' => [
611[
612'd' => 2,
613'e' => [4, 5, 6],
614]
615],
616],
617],
618'i' => [
619[
620'j' => [
621[
622'd' => 3,
623'e' => [7, 8, 9],
624]
625]
626],
627],
628],
629],
630],
631'a.*****.e',
632],
633[
634[
635'a' => [
636[
637'b' => [
638[
639'c' => [
640[
641'd' => 1,
642'e' => [1, 2, 3],
643]
644],
645'f' => [
646[
647'd' => 2,
648'e' => [4, 5, 6],
649]
650],
651],
652],
653'i' => [
654[
655'j' => [
656[
657'd' => 3,
658'e' => [7, 8, 9],
659]
660]
661],
662],
663],
664],
665],
666'a.*****.|.1.e',
667],
668];
669}
670
671public function dataProviderForExistFalseStrict(): array
672{
673return [
674[
675[],
676'*',
677],
678[
679[],
680[''],
681],
682[
683[],
684'test',
685],
686[
687[],
688'foo.bar',
689],
690[
691[],
692'foo.bar.*',
693],
694[
695[],
696'foo.*.bar',
697],
698[
699[1, 2, 3, 'a' => 4],
7003,
701],
702[
703[1, 2, 3, 'a' => 4],
704'a.c',
705],
706[
707[1, 2, 3, 'a' => 4],
708'a.*',
709],
710[
711[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
712'a.*.1',
713],
714[
715[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
716'a.*.a',
717],
718[
719[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
720'a.*.test',
721],
722[
723[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
724'a.*.*.*',
725],
726[
727[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
728'a.*.1.0',
729],
730[
731[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
732'a.*.0.2',
733],
734[
735[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
736'a.*.0.*.a',
737],
738[
739[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
740'a.c',
741],
742[
743[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
744'a.c.*',
745],
746[
747[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
748'a.*.x.*',
749],
750[
751[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[], [22, 33]]]],
752'a.*.*.0',
753],
754[
755[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
756['a', '*', 'y'],
757],
758[
759[
760'a' => [1, 2, 3],
761'b' => [11],
762'c' => [111, 222, 333],
763],
764'*.1',
765],
766[
767[
768'a' => [1],
769'b' => [11, 22],
770'c' => [111, 222, 333],
771],
772['*', 2],
773],
774[
775[
776'a' => [1, 2, [3]],
777'b' => [11, 22, 33],
778'c' => [111, 222, [333]],
779],
780['*', '2', '*'],
781],
782[
783[
784'a' => [1, 2, 3],
785'b' => [11, 22, 33],
786'c' => '[111, 222, 333]',
787],
788'*.*',
789],
790[
791[
792[
793'a' => [1, 2, 3],
794'b' => '[11, 22, 33]',
795'c' => [111, 222, 333],
796],
797],
798'*.*.0',
799],
800[
801[
802[
803[
804'a' => [1, 2, 3],
805'b' => [11, 22, 33],
806'c' => [111, 222, 333],
807],
808],
809[
810[
811'a' => [],
812'b' => [44, 55],
813'c' => [444, 555],
814],
815],
816],
817'*.*.*.0',
818],
819[
820[
821[
822[
823'a' => [1, 2, 3],
824'b' => [11, 22, 33],
825'c' => [111, 222, 333],
826],
827],
828[
829[
830'b' => [44, 55],
831'c' => [444, 555],
832],
833],
834],
835'*.*.a',
836],
837[
838[
839[
840[
841'a' => [1, 2, 3],
842'b' => [11, 22, 33],
843'c' => [111, 222, 333],
844],
845],
846[
847[
848'a' => [4],
849'b' => [44, 55],
850'c' => [444, 555],
851],
852],
853],
854'*.*.a.2',
855],
856[
857[
858[
859[
860'a' => [1, 2, 3],
861'b' => [11, 22, 33],
862'c' => [111, 222, 333],
863],
864],
865[
866[
867'a' => [4],
868'b' => [44, 55],
869'c' => [444, 555],
870],
871],
872],
873'*.*.a.*.1',
874],
875[
876[
877[
878[
879'a' => [1, 2, 3],
880'b' => [11, 22, 33],
881'c' => [111, 222, 333],
882],
883],
884[
885[
886'a' => [4, 5],
887'b' => [44, 55],
888'c' => [444, 555],
889],
890],
891],
892'*.*.b.|.2',
893],
894[
895[
896[
897[
898'a' => [1, 2, 3],
899'b' => [11, 22, 33],
900'c' => [111, 222, 333],
901],
902],
903[
904[
905'a' => [4, 5],
906'c' => [444, 555],
907],
908],
909],
910'*.*.b.|.1',
911],
912[
913[
914'first' => [
915[
916'a' => [1, 2, 3],
917'b' => [11, 22, 33],
918'c' => [111, 222, 333],
919],
920],
921'second' => [
922[
923'a' => [4],
924'b' => [44, 55],
925],
926],
927],
928'*.*.*.1',
929],
930[
931[
932'first' => [
933[
934[
935'a' => [],
936'b' => ['aaa'],
937'c' => ['bbb'],
938],
939],
940],
941'second' => [
942[
943[
944[1, 2, 3],
945[11, 22, 33],
946[111, 222, 333],
947],
948[
949[1111],
950[11111],
951],
952],
953[
954[
955[111111],
956[],
957],
958],
959],
960],
961'second.*.*.*.0',
962],
963[
964[
965'first' => [
966[
967[
968'a' => [],
969'b' => ['aaa'],
970'c' => ['bbb'],
971],
972],
973],
974'second' => [
975[
976[
977[1, 2, 3],
978[11, 22, 33],
979[111, 222, 333],
980],
981[
982[],
983[11111],
984],
985],
986[
987[
988[111111],
989[1111111],
990],
991],
992],
993],
994'second.*.*.0.*.0',
995],
996[
997[
998'first' => [
999[
1000[
1001'a' => [],
1002'b' => ['aaa'],
1003'c' => ['bbb'],
1004],
1005],
1006],
1007'second' => [
1008[
1009[
1010[1, 2, 3],
1011[11, 22, 33],
1012[111, 222, 333],
1013],
1014[
1015[1111],
1016[11111],
1017],
1018],
1019[
1020[],
1021],
1022],
1023],
1024'second.*.*.0.*.*',
1025],
1026[
1027[
1028'first' => [
1029[
1030[
1031'a' => [],
1032'b' => ['aaa'],
1033'c' => ['bbb'],
1034],
1035],
1036],
1037'second' => [
1038[
1039[],
1040[
1041[1111],
1042[2222],
1043],
1044],
1045[
1046[
1047[11111],
1048[222222],
1049],
1050],
1051],
1052],
1053'second.0.0.0',
1054],
1055[
1056[
1057'a' => [
1058[
1059'b' => [
1060[
1061'c' => [
1062[
1063'd' => 1,
1064'e' => [1, 2, 3],
1065]
1066],
1067'f' => [
1068[
1069'e' => [4, 5, 6],
1070]
1071],
1072],
1073],
1074'i' => [
1075[
1076'j' => [
1077[
1078'd' => 3,
1079'e' => [7, 8, 9],
1080]
1081]
1082],
1083],
1084],
1085],
1086],
1087'a.*****.d',
1088],
1089[
1090[
1091'a' => [
1092[
1093'b' => [
1094[
1095'c' => [
1096[
1097'd' => 1,
1098]
1099],
1100'f' => [
1101[
1102'd' => 2,
1103]
1104],
1105],
1106],
1107'i' => [
1108[
1109'j' => [
1110[
1111'd' => 3,
1112]
1113]
1114],
1115],
1116],
1117],
1118],
1119'a.*****.e',
1120],
1121[
1122[
1123'a' => [
1124[
1125'b' => [
1126[
1127'c' => [
1128[
1129'd' => 1,
1130'e' => [1, 2, 3],
1131]
1132],
1133'f' => [
1134[
1135'd' => 2,
1136]
1137],
1138],
1139],
1140'i' => [
1141[
1142'j' => [
1143[
1144'd' => 3,
1145'e' => [7, 8, 9],
1146]
1147]
1148],
1149],
1150],
1151],
1152],
1153'a.*****.|.1.e',
1154],
1155[
1156[
1157'a' => [
1158[
1159'b' => [
1160[
1161'c' => [
1162[
1163'd' => 1,
1164'e' => [1, 2, 3],
1165]
1166],
1167],
1168],
1169'i' => [
1170[
1171'j' => [
1172]
1173],
1174],
1175],
1176],
1177],
1178'a.*****.|.1.e',
1179],
1180];
1181}
1182
1183public function dataProviderForExistTrueNonStrict(): array
1184{
1185return [
1186[
1187[1, 2, 3, 'a' => [
1188'b' => [['c'], ['d'], ['e']],
1189[[11], [22, 33]]],
1190],
1191'a.*.*.1',
1192[33],
1193],
1194[
1195[1, 2, 3, 'a' => [
1196'b' => [['c'], ['d'], ['e']],
1197[[11], [22, 33]]],
1198],
1199'a.**.1',
1200[33],
1201],
1202[
1203[
1204'a' => [1, 2],
1205'b' => [11, 22, 33],
1206'c' => [111, 222, 333],
1207],
1208['*', '2'],
1209[33, 333],
1210],
1211[
1212[
1213'a' => [1, 2],
1214'b' => [11, 22, [33]],
1215'c' => [111, 222, [333]],
1216],
1217['*', '2'],
1218[[33], [333]],
1219],
1220[
1221[
1222'a' => [1, 2, [3]],
1223'b' => [11, 22],
1224'c' => [111, 222, [333]],
1225],
1226['*', '2', '*'],
1227[3, 333],
1228],
1229[
1230[
1231[
1232[
1233'a' => [1, 2, 3],
1234'b' => [11, 22, 33],
1235'c' => [111, 222, 333],
1236],
1237],
1238[
1239[
1240'a' => [4, 5],
1241'b' => [44, 55],
1242'c' => [444, 555],
1243],
1244],
1245],
1246'*.*.a.2',
1247[3],
1248],
1249[
1250[
1251'first' => [
1252[
1253'a' => [1, 2, 3],
1254'b' => [11, 22, 33],
1255'c' => [111, 222, 333],
1256],
1257],
1258'second' => [
1259[
1260'a' => [4, 5],
1261'b' => [44, 55],
1262],
1263],
1264],
1265'*.*.*.2',
1266[3, 33, 333],
1267],
1268[
1269[
1270'first' => [
1271[
1272[
1273'a' => [],
1274'b' => ['aaa'],
1275'c' => ['bbb'],
1276],
1277],
1278],
1279'second' => [
1280[
1281[
1282[1, 2, 3],
1283[11, 22, 33],
1284[111, 222, 333],
1285],
1286[
1287[1111],
1288[11111],
1289],
1290],
1291[
1292[
1293[111111],
1294[1111111],
1295],
1296],
1297],
1298],
1299'second.*.*.*.2',
1300[3, 33, 333],
1301],
1302[
1303[
1304'first' => [
1305[
1306[
1307'a' => [],
1308'b' => ['aaa'],
1309'c' => ['bbb'],
1310],
1311],
1312],
1313'second' => [
1314[
1315[
1316[1, 2, 3],
1317[11, 22, 33],
1318[111, 222, 333],
1319],
1320[
1321[1111],
1322[11111],
1323],
1324],
1325[
1326[
1327[111111, 999],
1328[1111111],
1329],
1330],
1331],
1332],
1333'second.*.*.0.1',
1334[2, 999],
1335],
1336[
1337[
1338'first' => [
1339[
1340[
1341'a' => [],
1342'b' => ['aaa'],
1343'c' => ['bbb'],
1344],
1345],
1346],
1347'second' => [
1348[
1349[
1350[1, 2, 3],
1351[11, 22, 33],
1352[111, 222, 333],
1353],
1354[
1355[1111],
1356[11111],
1357],
1358],
1359[
1360[
1361[111111],
1362[1111111],
1363],
1364],
1365],
1366],
1367'second.*.*.2',
1368[[111, 222, 333]],
1369],
1370[
1371[
1372'first' => [
1373[
1374[
1375'a' => [],
1376'b' => ['aaa'],
1377'c' => ['bbb'],
1378],
1379],
1380],
1381'second' => [
1382[
1383[
1384[1, 2, 3],
1385[11, 22, 33],
1386[111, 222, 333],
1387],
1388[
1389[1111],
1390[11111],
1391],
1392],
1393[
1394[
1395[111111],
1396[1111111],
1397],
1398],
1399],
1400],
1401'second.*.*.2.*',
1402[111, 222, 333],
1403],
1404[
1405[
1406'a' => [
1407[
1408'b' => [
1409[
1410'c' => [
1411[
1412'd' => 1,
1413'e' => [1, 2, 3],
1414]
1415],
1416'f' => [
1417[
1418'e' => [4, 5, 6],
1419]
1420],
1421],
1422],
1423'i' => [
1424[
1425'j' => [
1426[
1427'd' => 3,
1428'e' => [7, 8, 9],
1429]
1430]
1431],
1432],
1433],
1434],
1435],
1436'a.*****.d',
1437[1, 3],
1438],
1439[
1440[
1441'a' => [
1442[
1443'b' => [
1444[
1445'c' => [
1446[
1447'd' => 1,
1448]
1449],
1450'f' => [
1451[
1452'd' => 2,
1453'e' => [4, 5, 6],
1454]
1455],
1456],
1457],
1458'i' => [
1459[
1460'j' => [
1461[
1462'd' => 3,
1463'e' => [7, 8, 9],
1464]
1465]
1466],
1467],
1468],
1469],
1470],
1471'a.*****.e',
1472[[4, 5, 6], [7, 8, 9]],
1473],
1474];
1475}
1476
1477public function dataProviderForExistFalseNonStrict(): array
1478{
1479return [
1480[
1481[1, 2, 3, 'a' => 4],
14823,
1483null,
1484],
1485[
1486[1, 2, 3, 'a' => 4],
1487'3',
1488null,
1489],
1490[
1491[1, 2, 3, 'a' => 4],
1492'b',
1493null,
1494],
1495[
1496[1, 2, 3, 'a' => [1, 2, 'a' => 3]],
1497'b.*',
1498null,
1499],
1500[
1501[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1502'b.*.0',
1503null,
1504],
1505[
1506[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1507'b.*.*',
1508null,
1509],
1510[
1511[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
1512'b.*.*',
1513null,
1514],
1515[
1516[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1517'b.*.0.0',
1518null,
1519],
1520[
1521[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1522'a.*.0.2',
1523[],
1524],
1525[
1526[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1527'a.*.1.0',
1528[],
1529],
1530[
1531[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1532'a.*.111.1',
1533[],
1534],
1535[
1536[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1537'a.*.0.*.111',
1538[],
1539],
1540[
1541[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
1542'a.c',
1543null,
1544],
1545[
1546[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
1547'a.c.*',
1548null,
1549],
1550[
1551[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
1552'a.*.e',
1553[],
1554],
1555[
1556[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]],
1557'a.*.e.*',
1558[],
1559],
1560[
1561[1, 2, 3, 'a' => [
1562'b' => [['c'], ['d'], ['e']],
1563[[11], [22, 33]]],
1564],
1565'a.**.2',
1566[],
1567],
1568[
1569[1, 2, 3, 'a' => [
1570'b' => [['c'], ['d'], ['e']],
1571[[11], [22, 33]]],
1572],
1573'a.**.test',
1574[],
1575],
1576[
1577[
1578'a' => [1, 2, 3],
1579'b' => [11, 22, 33],
1580'c' => [111, 222, 333],
1581],
1582'*.3',
1583[],
1584],
1585[
1586[
1587'a' => [1, 2, 3],
1588'b' => [11, 22, 33],
1589'c' => [111, 222, 333],
1590],
1591['*', 3],
1592[],
1593],
1594[
1595[
1596[
1597'a' => [1, 2, 3],
1598'b' => [11, 22, 33],
1599'c' => [111, 222, 333],
1600],
1601],
1602'*.*.5',
1603[],
1604],
1605[
1606[
1607[
1608[
1609'a' => [1, 2, 3],
1610'b' => [11, 22, 33],
1611'c' => [111, 222, 333],
1612],
1613],
1614[
1615[
1616'a' => [4, 5],
1617'b' => [44, 55],
1618'c' => [444, 555],
1619],
1620],
1621],
1622'*.*.*.3',
1623[],
1624],
1625[
1626[
1627[
1628[
1629'a' => [1, 2, 3],
1630'b' => [11, 22, 33],
1631'c' => [111, 222, 333],
1632],
1633],
1634[
1635[
1636'a' => [4, 5],
1637'b' => [44, 55],
1638'c' => [444, 555],
1639],
1640],
1641],
1642'*.*.z',
1643[],
1644],
1645[
1646[
1647[
1648[
1649'a' => [1, 2, 3],
1650'b' => [11, 22, 33],
1651'c' => [111, 222, 333],
1652],
1653],
1654[
1655[
1656'a' => [4, 5],
1657'b' => [44, 55],
1658'c' => [444, 555],
1659],
1660],
1661],
1662'*.*.z.0',
1663[],
1664],
1665[
1666[
1667[
1668[
1669'a' => [1, 2, 3],
1670'b' => [11, 22, 33],
1671'c' => [111, 222, 333],
1672],
1673],
1674[
1675[
1676'a' => [4, 5],
1677'b' => [44, 55],
1678'c' => [444, 555],
1679],
1680],
1681],
1682'*.*.z.1',
1683[],
1684],
1685[
1686[
1687[
1688[
1689'a' => [1, 2, 3],
1690'b' => [11, 22, 33],
1691'c' => [111, 222, 333],
1692],
1693],
1694[
1695[
1696'a' => [4, 5],
1697'b' => [44, 55],
1698'c' => [444, 555],
1699],
1700],
1701],
1702'*.*.b.|.z',
1703null,
1704],
1705[
1706[
1707'a' => [
1708[
1709'b' => [
1710[
1711'c' => [
1712[
1713'd' => 1,
1714'e' => [1, 2, 3],
1715]
1716],
1717'f' => [
1718[
1719'd' => 2,
1720'e' => [4, 5, 6],
1721]
1722],
1723],
1724],
1725'i' => [
1726[
1727'j' => [
1728[
1729'd' => 3,
1730'e' => [7, 8, 9],
1731]
1732]
1733],
1734],
1735],
1736],
1737],
1738'a.*****.|.1.f',
1739null,
1740],
1741];
1742}
1743
1744public function dataProviderForEqualNull(): array
1745{
1746return [
1747[
1748null,
1749[],
1750],
1751[
1752[null, 2, 3, 'a' => 4],
17530,
1754],
1755[
1756['a' => null, 'b' => 1],
1757'a',
1758],
1759[
1760[null, null],
1761'1',
1762],
1763];
1764}
1765}
1766