schemator-php
2582 строки · 78.8 Кб
1<?php
2
3declare(strict_types=1);
4
5namespace Smoren\Schemator\Tests\Unit\NestedAccessor;
6
7use Smoren\Schemator\Components\NestedAccessor;
8use Smoren\Schemator\Exceptions\PathNotExistException;
9
10class NestedAccessorGetTest extends \Codeception\Test\Unit
11{
12/**
13* @dataProvider dataProviderForStrictSuccessArray
14* @dataProvider dataProviderForStrictSuccessArrayObject
15* @dataProvider dataProviderForStrictSuccessStdClass
16*/
17public function testStrictSuccess($source, $path, $expected)
18{
19// Given
20$accessor = new NestedAccessor($source);
21
22// When
23$actual = $accessor[$path];
24
25// Then
26$this->assertEquals($expected, $actual);
27}
28
29/**
30* @dataProvider dataProviderForStrictErrorArray
31*/
32public function testStrictError($source, $path, $expected)
33{
34// Given
35$accessor = new NestedAccessor($source);
36
37try {
38// When
39$accessor[$path];
40$this->fail();
41} catch (PathNotExistException $e) {
42// Then
43$this->assertSame("Key '{$expected[0]}' is not found in path '{$expected[1]}'", $e->getMessage());
44$this->assertSame($expected, [$e->getKey(), $e->getPathString()]);
45}
46}
47
48/**
49* @dataProvider dataProviderForStrictSuccessArray
50* @dataProvider dataProviderForStrictSuccessArrayObject
51* @dataProvider dataProviderForStrictSuccessStdClass
52* @dataProvider dataProviderForNonStrictArray
53* @dataProvider dataProviderForNonStrictArrayObject
54* @dataProvider dataProviderForNonStrictStdClass
55*/
56public function testNonStrict($source, $path, $expected)
57{
58// Given
59$accessor = new NestedAccessor($source);
60
61// When
62$actual = $accessor->get($path, false);
63
64// Then
65$this->assertEquals($expected, $actual);
66}
67
68public function testBadPathError()
69{
70// Given
71$accessor = new NestedAccessor($source);
72
73$source = ['a' => 1];
74$path = (object)['a', 'b', 'c'];
75
76try {
77// When
78$accessor->get($path);
79$this->fail();
80} catch (\InvalidArgumentException $e) {
81// Then
82$this->assertSame('Path must be numeric, string or array, object given', $e->getMessage());
83}
84}
85
86public function dataProviderForStrictSuccessArray(): array
87{
88return [
89[
90[],
91[],
92[],
93],
94[
95[],
96null,
97[],
98],
99[
100[],
101'*',
102[],
103],
104[
105['a' => 1],
106[],
107['a' => 1],
108],
109[
110[1, 2, 3],
111null,
112[1, 2, 3],
113],
114[
115[1, 2, 3],
116'*',
117[1, 2, 3],
118],
119[
120[1, 2, 3, 'a' => 4],
121'*',
122[1, 2, 3, 4],
123],
124[
125[1, 2, 3, 'a' => 4],
1260,
1271,
128],
129[
130[1, 2, 3, 'a' => 4],
131'0',
1321,
133],
134[
135[1, 2, 3, 'a' => 4],
136'2',
1373,
138],
139[
140[1, 2, 3, 'a' => 4],
1412,
1423,
143],
144[
145[1, 2, 3, 'a' => 4],
146'a',
1474,
148],
149[
150[1, 2, 3, 'a' => [1, 2, 'a' => 3]],
151'a',
152[1, 2, 'a' => 3],
153],
154[
155[1, 2, 3, 'a' => ['b' => [11, 12], 'c' => [22, 23]]],
156'a.*',
157[[11, 12], [22, 23]],
158],
159[
160[1, 2, 3, 'a' => ['b' => [11, 12], 'c' => [22, 23]]],
161'a.*.|.0',
162[11, 12],
163],
164[
165[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
166'a.*.*',
167[11, 22],
168],
169[
170[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
171'a.*',
172[[11, 22], [33, 44]],
173],
174[
175[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
176'a.*.*',
177[11, 22, 33, 44],
178],
179[
180[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
181'a.*.0',
182[11, 33],
183],
184[
185[1, 2, 3, 'a' => [[11, 22], [33, 44]]],
186'a.*',
187[[11, 22], [33, 44]],
188],
189[
190[1, 2, 3, 'a' => [[11, 22], [33, 44]]],
191'a.*.*',
192[11, 22, 33, 44],
193],
194[
195[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
196'a.*.0.0',
197[11, 33],
198],
199[
200[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
201'a.*.0.*',
202[11, 22, 33, 44],
203],
204[
205[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
206'a.*.0.1',
207[22, 44],
208],
209[
210[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
211'a.b',
212['c', 'd', 'e'],
213],
214[
215[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
216'a.b.*',
217['c', 'd', 'e'],
218],
219[
220[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
221'a.*.*',
222['c', 'd', 'e', 11, 22],
223],
224[
225[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]],
226'a.*.*.*',
227['c', 'd', 'e', 11, 22, 33],
228],
229[
230[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]],
231'a.*.*.0',
232['c', 'd', 'e', 11, 22],
233],
234[
235[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
236['a', '*', '*'],
237['c', 'd', 'e', 11, 22],
238],
239[
240[
241'a' => [1, 2, 3],
242'b' => [11, 22, 33],
243'c' => [111, 222, 333],
244],
245'*.0',
246[1, 11, 111],
247],
248[
249[
250'a' => [1, 2, 3],
251'b' => [11, 22, 33],
252'c' => [111, 222, 333],
253],
254['*', 0],
255[1, 11, 111],
256],
257[
258[
259'a' => [1, 2, 3],
260'b' => [11, 22, 33],
261'c' => [111, 222, 333],
262],
263['*', '2'],
264[3, 33, 333],
265],
266[
267[
268'a' => [1, 2, [3]],
269'b' => [11, 22, [33]],
270'c' => [111, 222, [333]],
271],
272['*', '2'],
273[[3], [33], [333]],
274],
275[
276[
277'a' => [1, 2, [3]],
278'b' => [11, 22, [33]],
279'c' => [111, 222, [333]],
280],
281['*', '2', '*'],
282[3, 33, 333],
283],
284[
285[
286'a' => [1, 2, 3],
287'b' => [11, 22, 33],
288'c' => [111, 222, 333],
289],
290'*.*',
291[1, 2, 3, 11, 22, 33, 111, 222, 333],
292],
293[
294[
295[
296'a' => [1, 2, 3],
297'b' => [11, 22, 33],
298'c' => [111, 222, 333],
299],
300],
301'*.*.0',
302[1, 11, 111],
303],
304[
305[
306[
307[
308'a' => [1, 2, 3],
309'b' => [11, 22, 33],
310'c' => [111, 222, 333],
311],
312],
313[
314[
315'a' => [4, 5],
316'b' => [44, 55],
317'c' => [444, 555],
318],
319],
320],
321'*.*.*.0',
322[1, 11, 111, 4, 44, 444],
323],
324[
325[
326[
327[
328'a' => [1, 2, 3],
329'b' => [11, 22, 33],
330'c' => [111, 222, 333],
331],
332],
333[
334[
335'a' => [4, 5],
336'b' => [44, 55],
337'c' => [444, 555],
338],
339],
340],
341'*.*.a',
342[[1, 2, 3], [4, 5]],
343],
344[
345[
346[
347[
348'a' => [1, 2, 3],
349'b' => [11, 22, 33],
350'c' => [111, 222, 333],
351],
352],
353[
354[
355'a' => [4, 5],
356'b' => [44, 55],
357'c' => [444, 555],
358],
359],
360],
361'*.*.a.0',
362[1, 4],
363],
364[
365[
366[
367[
368'a' => [1, 2, 3],
369'b' => [11, 22, 33],
370'c' => [111, 222, 333],
371],
372],
373[
374[
375'a' => [4, 5],
376'b' => [44, 55],
377'c' => [444, 555],
378],
379],
380],
381'*.*.a.*',
382[1, 2, 3, 4, 5],
383],
384[
385[
386[
387[
388'a' => [1, 2, 3],
389'b' => [11, 22, 33],
390'c' => [111, 222, 333],
391],
392],
393[
394[
395'a' => [4, 5],
396'b' => [44, 55],
397'c' => [444, 555],
398],
399],
400],
401'*.*.b.|.1',
402[44, 55],
403],
404[
405[
406'first' => [
407[
408'a' => [1, 2, 3],
409'b' => [11, 22, 33],
410'c' => [111, 222, 333],
411],
412],
413'second' => [
414[
415'a' => [4, 5],
416'b' => [44, 55],
417],
418],
419],
420'*.*.*.1',
421[2, 22, 222, 5, 55],
422],
423[
424[
425'first' => [
426[
427[
428'a' => [],
429'b' => ['aaa'],
430'c' => ['bbb'],
431],
432],
433],
434'second' => [
435[
436[
437[1, 2, 3],
438[11, 22, 33],
439[111, 222, 333],
440],
441[
442[1111],
443[11111],
444],
445],
446[
447[
448[111111],
449[1111111],
450],
451],
452],
453],
454'second.*.*.*.0',
455[1, 11, 111, 1111, 11111, 111111, 1111111],
456],
457[
458[
459'first' => [
460[
461[
462'a' => [],
463'b' => ['aaa'],
464'c' => ['bbb'],
465],
466],
467],
468'second' => [
469[
470[
471[1, 2, 3],
472[11, 22, 33],
473[111, 222, 333],
474],
475[
476[1111],
477[11111],
478],
479],
480[
481[
482[111111],
483[1111111],
484],
485],
486],
487],
488'second.*.*.0.0',
489[1, 1111, 111111],
490],
491[
492[
493'first' => [
494[
495[
496'a' => [],
497'b' => ['aaa'],
498'c' => ['bbb'],
499],
500],
501],
502'second' => [
503[
504[
505[1, 2, 3],
506[11, 22, 33],
507[111, 222, 333],
508],
509[
510[1111],
511[11111],
512],
513],
514[
515[
516[111111],
517[1111111],
518],
519],
520],
521],
522'second.*.*.0.*',
523[1, 2, 3, 1111, 111111],
524],
525[
526[
527'first' => [
528[
529[
530'a' => [],
531'b' => ['aaa'],
532'c' => ['bbb'],
533],
534],
535],
536'second' => [
537[
538[
539[1, 2, 3],
540[11, 22, 33],
541[111, 222, 333],
542],
543[
544[1111],
545[2222],
546],
547],
548[
549[
550[11111],
551[222222],
552],
553],
554],
555],
556'second.0.0.0',
557[1, 2, 3],
558],
559[
560[
561'a' => [
562[
563'b' => [
564[
565'c' => [
566[
567'd' => 1,
568'e' => [1, 2, 3],
569]
570],
571'f' => [
572[
573'd' => 2,
574'e' => [4, 5, 6],
575]
576],
577],
578],
579'i' => [
580[
581'j' => [
582[
583'd' => 3,
584'e' => [7, 8, 9],
585]
586]
587],
588],
589],
590],
591],
592'a.*****.d',
593[1, 2, 3],
594],
595[
596[
597'a' => [
598[
599'b' => [
600[
601'c' => [
602[
603'd' => 1,
604'e' => [1, 2, 3],
605]
606],
607'f' => [
608[
609'd' => 2,
610'e' => [4, 5, 6],
611]
612],
613],
614],
615'i' => [
616[
617'j' => [
618[
619'd' => 3,
620'e' => [7, 8, 9],
621]
622]
623],
624],
625],
626],
627],
628'a.*****.e',
629[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
630],
631[
632[
633'a' => [
634[
635'b' => [
636[
637'c' => [
638[
639'd' => 1,
640'e' => [1, 2, 3],
641]
642],
643'f' => [
644[
645'd' => 2,
646'e' => [4, 5, 6],
647]
648],
649],
650],
651'i' => [
652[
653'j' => [
654[
655'd' => 3,
656'e' => [7, 8, 9],
657]
658]
659],
660],
661],
662],
663],
664'a.*****.|.1.e',
665[4, 5, 6],
666],
667];
668}
669
670public function dataProviderForStrictSuccessArrayObject(): array
671{
672return [
673[
674new \ArrayObject([]),
675[],
676new \ArrayObject([]),
677],
678[
679new \ArrayObject([]),
680null,
681new \ArrayObject([]),
682],
683[
684[],
685'*',
686[],
687],
688[
689new \ArrayObject(['a' => 1]),
690[],
691new \ArrayObject(['a' => 1]),
692],
693[
694new \ArrayObject([1, 2, 3]),
695null,
696new \ArrayObject([1, 2, 3]),
697],
698[
699new \ArrayObject([1, 2, 3]),
700'*',
701[1, 2, 3],
702],
703[
704new \ArrayObject([1, 2, 3, 'a' => 4]),
705'*',
706[1, 2, 3, 4],
707],
708[
709new \ArrayObject([1, 2, 3, 'a' => 4]),
7100,
7111,
712],
713[
714new \ArrayObject([1, 2, 3, 'a' => 4]),
715'0',
7161,
717],
718[
719new \ArrayObject([1, 2, 3, 'a' => 4]),
720'2',
7213,
722],
723[
724new \ArrayObject([1, 2, 3, 'a' => 4]),
7252,
7263,
727],
728[
729new \ArrayObject([1, 2, 3, 'a' => 4]),
730'a',
7314,
732],
733[
734new \ArrayObject([1, 2, 3, 'a' => [1, 2, 'a' => 3]]),
735'a',
736[1, 2, 'a' => 3],
737],
738[
739new \ArrayObject([1, 2, 3, 'a' => [1, 2, 'a' => 3]]),
740'a.*',
741[1, 2, 3],
742],
743[
744new \ArrayObject([1, 2, 3, 'a' => ['b' => 11, 'c' => 22]]),
745'a.*',
746[11, 22],
747],
748[
749new \ArrayObject([1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]]),
750'a.*',
751[[11], [22]],
752],
753[
754new \ArrayObject([1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]]),
755'a.*.0',
756[11, 22],
757],
758[
759new \ArrayObject([1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]]),
760'a.*.*',
761[11, 22],
762],
763[
764new \ArrayObject([1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]]),
765'a.*.*',
766[11, 22, 33, 44],
767],
768[
769new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
770'a.*.0.0',
771[11, 33],
772],
773[
774new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
775'a.*.0.*',
776[11, 22, 33, 44],
777],
778[
779new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
780'a.*.0.1',
781[22, 44],
782],
783[
784new \ArrayObject([1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]]),
785'a.b',
786['c', 'd', 'e'],
787],
788[
789new \ArrayObject([1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]]),
790'a.b.*',
791['c', 'd', 'e'],
792],
793[
794new \ArrayObject([1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]]),
795'a.*.*',
796['c', 'd', 'e', 11, 22],
797],
798[
799new \ArrayObject([1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]]),
800'a.*.*.*',
801['c', 'd', 'e', 11, 22, 33],
802],
803[
804new \ArrayObject([1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]]),
805'a.*.*.0',
806['c', 'd', 'e', 11, 22],
807],
808[
809new \ArrayObject([1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]]),
810['a', '*', '*'],
811['c', 'd', 'e', 11, 22],
812],
813[
814new \ArrayObject([
815'first' => [
816[
817[
818'a' => [],
819'b' => ['aaa'],
820'c' => ['bbb'],
821],
822],
823],
824'second' => new \ArrayObject([
825[
826[
827new \ArrayObject([1, 2, 3]),
828[11, 22, 33],
829[111, 222, 333],
830],
831[
832[1111],
833[11111],
834],
835],
836[
837[
838[111111],
839[1111111],
840],
841],
842]),
843]),
844'second.*.*.*.0',
845[1, 11, 111, 1111, 11111, 111111, 1111111],
846],
847[
848[
849'a' => new \ArrayObject([
850[
851'b' => [
852[
853'c' => [
854[
855'd' => 1,
856'e' => [1, 2, 3],
857]
858],
859'f' => [
860new \ArrayObject([
861'd' => 2,
862'e' => new \ArrayObject([4, 5, 6]),
863])
864],
865],
866],
867'i' => [
868[
869'j' => [
870[
871'd' => 3,
872'e' => [7, 8, 9],
873]
874]
875],
876],
877],
878]),
879],
880'a.*****.|.1.e',
881new \ArrayObject([4, 5, 6]),
882],
883];
884}
885
886public function dataProviderForStrictSuccessStdClass(): array
887{
888return [
889[
890(object)[],
891[],
892(object)[],
893],
894[
895(object)[],
896null,
897(object)[],
898],
899[
900(object)['a' => 1],
901[],
902(object)['a' => 1],
903],
904[
905[
906'a' => (object)[1, 2, 3],
907'b' => (object)[11, 22, 33],
908'c' => (object)[111, 222, 333],
909],
910'*.0',
911[1, 11, 111],
912],
913[
914[
915'a' => (object)[1, 2, 3],
916'b' => (object)[11, 22, 33],
917'c' => (object)[111, 222, 333],
918],
919['*', 0],
920[1, 11, 111],
921],
922[
923[
924'a' => (object)[1, 2, 3],
925'b' => (object)[11, 22, 33],
926'c' => (object)[111, 222, 333],
927],
928['*', '2'],
929[3, 33, 333],
930],
931[
932[
933'a' => (object)[1, 2, (object)[3]],
934'b' => (object)[11, 22, (object)[33]],
935'c' => (object)[111, 222, (object)[333]],
936],
937['*', '2'],
938[(object)[3], (object)[33], (object)[333]],
939],
940[
941[
942'a' => (object)[1, 2, [3]],
943'b' => (object)[11, 22, [33]],
944'c' => (object)[111, 222, [333]],
945],
946['*', '2', '*'],
947[3, 33, 333],
948],
949[
950[
951[
952'a' => (object)[1, 2, 3],
953'b' => (object)[11, 22, 33],
954'c' => (object)[111, 222, 333],
955],
956],
957'*.*.0',
958[1, 11, 111],
959],
960[
961[
962[
963[
964'a' => (object)[1, 2, 3],
965'b' => [11, 22, 33],
966'c' => [111, 222, 333],
967],
968],
969[
970[
971'a' => (object)[4, 5],
972'b' => [44, 55],
973'c' => [444, 555],
974],
975],
976],
977'*.*.a',
978[(object)[1, 2, 3], (object)[4, 5]],
979],
980[
981[
982[
983(object)[
984'a' => [1, 2, 3],
985'b' => [11, 22, 33],
986'c' => [111, 222, 333],
987],
988],
989[
990(object)[
991'a' => [4, 5],
992'b' => [44, 55],
993'c' => [444, 555],
994],
995],
996],
997'*.*.a.0',
998[1, 4],
999],
1000[
1001[
1002[
1003(object)[
1004'a' => [1, 2, 3],
1005'b' => [11, 22, 33],
1006'c' => [111, 222, 333],
1007],
1008],
1009[
1010(object)[
1011'a' => [4, 5],
1012'b' => [44, 55],
1013'c' => [444, 555],
1014],
1015],
1016],
1017'*.*.a.1',
1018[2, 5],
1019],
1020[
1021[
1022[
1023(object)[
1024'a' => [1, 2, 3],
1025'b' => [11, 22, 33],
1026'c' => [111, 222, 333],
1027],
1028],
1029[
1030(object)[
1031'a' => [4, 5],
1032'b' => [44, 55],
1033'c' => [444, 555],
1034],
1035],
1036],
1037'*.*.b.|.1',
1038[44, 55],
1039],
1040[
1041(object)[
1042'first' => [
1043[
1044[
1045'a' => [],
1046'b' => ['aaa'],
1047'c' => ['bbb'],
1048],
1049],
1050],
1051'second' => [
1052[
1053[
1054(object)[1, 2, 3],
1055(object)[11, 22, 33],
1056(object)[111, 222, 333],
1057],
1058[
1059[1111],
1060[11111],
1061],
1062],
1063[
1064[
1065[111111],
1066[1111111],
1067],
1068],
1069],
1070],
1071'second.*.*.*.0',
1072[1, 11, 111, 1111, 11111, 111111, 1111111],
1073],
1074[
1075(object)[
1076'a' => [
1077[
1078'b' => [
1079[
1080'c' => [
1081(object)[
1082'd' => 1,
1083'e' => [1, 2, 3],
1084]
1085],
1086'f' => [
1087(object)[
1088'd' => 2,
1089'e' => [4, 5, 6],
1090]
1091],
1092],
1093],
1094'i' => [
1095[
1096'j' => [
1097(object)[
1098'd' => 3,
1099'e' => [7, 8, 9],
1100]
1101]
1102],
1103],
1104],
1105],
1106],
1107'a.*****.d',
1108[1, 2, 3],
1109],
1110[
1111[
1112'a' => [
1113[
1114'b' => [
1115[
1116'c' => [
1117[
1118'd' => 1,
1119'e' => [1, 2, 3],
1120]
1121],
1122'f' => [
1123[
1124'd' => 2,
1125'e' => [4, 5, 6],
1126]
1127],
1128],
1129],
1130'i' => [
1131[
1132'j' => [
1133[
1134'd' => 3,
1135'e' => [7, 8, 9],
1136]
1137]
1138],
1139],
1140],
1141],
1142],
1143'a.*****.e',
1144[[1, 2, 3], [4, 5, 6], [7, 8, 9]],
1145],
1146[
1147[
1148'a' => [
1149[
1150'b' => [
1151[
1152'c' => [
1153(object)[
1154'd' => 1,
1155'e' => [1, 2, 3],
1156]
1157],
1158'f' => [
1159(object)[
1160'd' => 2,
1161'e' => [4, 5, 6],
1162]
1163],
1164],
1165],
1166'i' => [
1167[
1168'j' => [
1169(object)[
1170'd' => 3,
1171'e' => [7, 8, 9],
1172]
1173]
1174],
1175],
1176],
1177],
1178],
1179'a.*****.|.1.e',
1180[4, 5, 6],
1181],
1182];
1183}
1184
1185public function dataProviderForStrictErrorArray(): array
1186{
1187return [
1188[
1189[],
1190[''],
1191['', ''],
1192],
1193[
1194[],
1195'test',
1196['test', ''],
1197],
1198[
1199[],
1200'foo.bar',
1201['foo', ''],
1202],
1203[
1204[],
1205'foo.bar.*',
1206['foo', ''],
1207],
1208[
1209[],
1210'foo.*.bar',
1211['foo', ''],
1212],
1213[
1214[1, 2, 3, 'a' => 4],
12153,
1216['3', ''],
1217],
1218[
1219[1, 2, 3, 'a' => 4],
1220'a.c',
1221['c', 'a'],
1222],
1223[
1224[1, 2, 3, 'a' => 4],
1225'a.*',
1226['*', 'a'],
1227],
1228[
1229[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1230'a.*.1',
1231['1', 'a.*'],
1232],
1233[
1234[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1235'a.*.a',
1236['a', 'a.*'],
1237],
1238[
1239[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1240'a.*.test',
1241['test', 'a.*'],
1242],
1243[
1244[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1245'a.*.*.*',
1246['*', 'a.*.*'],
1247],
1248[
1249[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1250'a.*.1.0',
1251['1', 'a.*'],
1252],
1253[
1254[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1255'a.*.0.2',
1256['2', 'a.*.0'],
1257],
1258[
1259[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1260'a.*.0.*.a',
1261['a', 'a.*.0.*'],
1262],
1263[
1264[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
1265'a.c',
1266['c', 'a'],
1267],
1268[
1269[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
1270'a.c.*',
1271['c', 'a'],
1272],
1273[
1274[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
1275'a.*.x.*',
1276['x', 'a.*'],
1277],
1278[
1279[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[], [22, 33]]]],
1280'a.*.*.0',
1281['0', 'a.*.*'],
1282],
1283[
1284[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
1285['a', '*', 'y'],
1286['y', 'a.*'],
1287],
1288[
1289[
1290'a' => [1, 2, 3],
1291'b' => [11],
1292'c' => [111, 222, 333],
1293],
1294'*.1',
1295['1', '*'],
1296],
1297[
1298[
1299'a' => [1],
1300'b' => [11, 22],
1301'c' => [111, 222, 333],
1302],
1303['*', 2],
1304['2', '*'],
1305],
1306[
1307[
1308'a' => [1, 2, [3]],
1309'b' => [11, 22, 33],
1310'c' => [111, 222, [333]],
1311],
1312['*', '2', '*'],
1313['*', '*.2'],
1314],
1315[
1316[
1317'a' => [1, 2, 3],
1318'b' => [11, 22, 33],
1319'c' => '[111, 222, 333]',
1320],
1321'*.*',
1322['*', '*'],
1323],
1324[
1325[
1326[
1327'a' => [1, 2, 3],
1328'b' => '[11, 22, 33]',
1329'c' => [111, 222, 333],
1330],
1331],
1332'*.*.0',
1333['0', '*.*'],
1334],
1335[
1336[
1337[
1338[
1339'a' => [1, 2, 3],
1340'b' => [11, 22, 33],
1341'c' => [111, 222, 333],
1342],
1343],
1344[
1345[
1346'a' => [],
1347'b' => [44, 55],
1348'c' => [444, 555],
1349],
1350],
1351],
1352'*.*.*.0',
1353['0', '*.*.*'],
1354],
1355[
1356[
1357[
1358[
1359'a' => [1, 2, 3],
1360'b' => [11, 22, 33],
1361'c' => [111, 222, 333],
1362],
1363],
1364[
1365[
1366'b' => [44, 55],
1367'c' => [444, 555],
1368],
1369],
1370],
1371'*.*.a',
1372['a', '*.*'],
1373],
1374[
1375[
1376[
1377[
1378'a' => [1, 2, 3],
1379'b' => [11, 22, 33],
1380'c' => [111, 222, 333],
1381],
1382],
1383[
1384[
1385'a' => [4],
1386'b' => [44, 55],
1387'c' => [444, 555],
1388],
1389],
1390],
1391'*.*.a.2',
1392['2', '*.*.a'],
1393],
1394[
1395[
1396[
1397[
1398'a' => [1, 2, 3],
1399'b' => [11, 22, 33],
1400'c' => [111, 222, 333],
1401],
1402],
1403[
1404[
1405'a' => [4],
1406'b' => [44, 55],
1407'c' => [444, 555],
1408],
1409],
1410],
1411'*.*.a.*.1',
1412['1', '*.*.a.*'],
1413],
1414[
1415[
1416[
1417[
1418'a' => [1, 2, 3],
1419'b' => [11, 22, 33],
1420'c' => [111, 222, 333],
1421],
1422],
1423[
1424[
1425'a' => [4, 5],
1426'b' => [44, 55],
1427'c' => [444, 555],
1428],
1429],
1430],
1431'*.*.b.|.2',
1432['2', '*.*.b.|'],
1433],
1434[
1435[
1436[
1437[
1438'a' => [1, 2, 3],
1439'b' => [11, 22, 33],
1440'c' => [111, 222, 333],
1441],
1442],
1443[
1444[
1445'a' => [4, 5],
1446'c' => [444, 555],
1447],
1448],
1449],
1450'*.*.b.|.1',
1451['b', '*.*'],
1452],
1453[
1454[
1455'first' => [
1456[
1457'a' => [1, 2, 3],
1458'b' => [11, 22, 33],
1459'c' => [111, 222, 333],
1460],
1461],
1462'second' => [
1463[
1464'a' => [4],
1465'b' => [44, 55],
1466],
1467],
1468],
1469'*.*.*.1',
1470['1', '*.*.*'],
1471],
1472[
1473[
1474'first' => [
1475[
1476[
1477'a' => [],
1478'b' => ['aaa'],
1479'c' => ['bbb'],
1480],
1481],
1482],
1483'second' => [
1484[
1485[
1486[1, 2, 3],
1487[11, 22, 33],
1488[111, 222, 333],
1489],
1490[
1491[1111],
1492[11111],
1493],
1494],
1495[
1496[
1497[111111],
1498[],
1499],
1500],
1501],
1502],
1503'second.*.*.*.0',
1504['0', 'second.*.*.*'],
1505],
1506[
1507[
1508'first' => [
1509[
1510[
1511'a' => [],
1512'b' => ['aaa'],
1513'c' => ['bbb'],
1514],
1515],
1516],
1517'second' => [
1518[
1519[
1520[1, 2, 3],
1521[11, 22, 33],
1522[111, 222, 333],
1523],
1524[
1525[],
1526[11111],
1527],
1528],
1529[
1530[
1531[111111],
1532[1111111],
1533],
1534],
1535],
1536],
1537'second.*.*.0.*.0',
1538['0', 'second.*.*.0.*'],
1539],
1540[
1541[
1542'first' => [
1543[
1544[
1545'a' => [],
1546'b' => ['aaa'],
1547'c' => ['bbb'],
1548],
1549],
1550],
1551'second' => [
1552[
1553[
1554[1, 2, 3],
1555[11, 22, 33],
1556[111, 222, 333],
1557],
1558[
1559[1111],
1560[11111],
1561],
1562],
1563[
1564[],
1565],
1566],
1567],
1568'second.*.*.0.*.*',
1569['0', 'second.*.*'],
1570],
1571[
1572[
1573'first' => [
1574[
1575[
1576'a' => [],
1577'b' => ['aaa'],
1578'c' => ['bbb'],
1579],
1580],
1581],
1582'second' => [
1583[
1584[],
1585[
1586[1111],
1587[2222],
1588],
1589],
1590[
1591[
1592[11111],
1593[222222],
1594],
1595],
1596],
1597],
1598'second.0.0.0',
1599['0', 'second.0.0'],
1600],
1601[
1602[
1603'a' => [
1604[
1605'b' => [
1606[
1607'c' => [
1608[
1609'd' => 1,
1610'e' => [1, 2, 3],
1611]
1612],
1613'f' => [
1614[
1615'e' => [4, 5, 6],
1616]
1617],
1618],
1619],
1620'i' => [
1621[
1622'j' => [
1623[
1624'd' => 3,
1625'e' => [7, 8, 9],
1626]
1627]
1628],
1629],
1630],
1631],
1632],
1633'a.*****.d',
1634['d', 'a.*.*.*.*.*'],
1635],
1636[
1637[
1638'a' => [
1639[
1640'b' => [
1641[
1642'c' => [
1643[
1644'd' => 1,
1645]
1646],
1647'f' => [
1648[
1649'd' => 2,
1650]
1651],
1652],
1653],
1654'i' => [
1655[
1656'j' => [
1657[
1658'd' => 3,
1659]
1660]
1661],
1662],
1663],
1664],
1665],
1666'a.*****.e',
1667['e', 'a.*.*.*.*.*'],
1668],
1669[
1670[
1671'a' => [
1672[
1673'b' => [
1674[
1675'c' => [
1676[
1677'd' => 1,
1678'e' => [1, 2, 3],
1679]
1680],
1681'f' => [
1682[
1683'd' => 2,
1684]
1685],
1686],
1687],
1688'i' => [
1689[
1690'j' => [
1691[
1692'd' => 3,
1693'e' => [7, 8, 9],
1694]
1695]
1696],
1697],
1698],
1699],
1700],
1701'a.*****.|.1.e',
1702['e', 'a.*.*.*.*.*.|.1'],
1703],
1704[
1705[
1706'a' => [
1707[
1708'b' => [
1709[
1710'c' => [
1711[
1712'd' => 1,
1713'e' => [1, 2, 3],
1714]
1715],
1716],
1717],
1718'i' => [
1719[
1720'j' => [
1721]
1722],
1723],
1724],
1725],
1726],
1727'a.*****.|.1.e',
1728['1', 'a.*.*.*.*.*.|'],
1729],
1730];
1731}
1732
1733public function dataProviderForNonStrictArray(): array
1734{
1735return [
1736[
1737[1, 2, 3, 'a' => 4],
17383,
1739null,
1740],
1741[
1742[1, 2, 3, 'a' => 4],
1743'3',
1744null,
1745],
1746[
1747[1, 2, 3, 'a' => 4],
1748'b',
1749null,
1750],
1751[
1752[1, 2, 3, 'a' => [1, 2, 'a' => 3]],
1753'b.*',
1754null,
1755],
1756[
1757[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1758'b.*.0',
1759null,
1760],
1761[
1762[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
1763'b.*.*',
1764null,
1765],
1766[
1767[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
1768'b.*.*',
1769null,
1770],
1771[
1772[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1773'b.*.0.0',
1774null,
1775],
1776[
1777[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1778'a.*.0.2',
1779[],
1780],
1781[
1782[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1783'a.*.1.0',
1784[],
1785],
1786[
1787[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1788'a.*.111.1',
1789[],
1790],
1791[
1792[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
1793'a.*.0.*.111',
1794[],
1795],
1796[
1797[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
1798'a.c',
1799null,
1800],
1801[
1802[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
1803'a.c.*',
1804null,
1805],
1806[
1807[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
1808'a.*.e',
1809[],
1810],
1811[
1812[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]],
1813'a.*.e.*',
1814[],
1815],
1816[
1817[1, 2, 3, 'a' => [
1818'b' => [['c'], ['d'], ['e']],
1819[[11], [22, 33]]],
1820],
1821'a.*.*.1',
1822[33],
1823],
1824[
1825[1, 2, 3, 'a' => [
1826'b' => [['c'], ['d'], ['e']],
1827[[11], [22, 33]]],
1828],
1829'a.**.1',
1830[33],
1831],
1832[
1833[1, 2, 3, 'a' => [
1834'b' => [['c'], ['d'], ['e']],
1835[[11], [22, 33]]],
1836],
1837'a.**.2',
1838[],
1839],
1840[
1841[1, 2, 3, 'a' => [
1842'b' => [['c'], ['d'], ['e']],
1843[[11], [22, 33]]],
1844],
1845'a.**.test',
1846[],
1847],
1848[
1849[
1850'a' => [1, 2, 3],
1851'b' => [11, 22, 33],
1852'c' => [111, 222, 333],
1853],
1854'*.3',
1855[],
1856],
1857[
1858[
1859'a' => [1, 2, 3],
1860'b' => [11, 22, 33],
1861'c' => [111, 222, 333],
1862],
1863['*', 3],
1864[],
1865],
1866[
1867[
1868'a' => [1, 2],
1869'b' => [11, 22, 33],
1870'c' => [111, 222, 333],
1871],
1872['*', '2'],
1873[33, 333],
1874],
1875[
1876[
1877'a' => [1, 2],
1878'b' => [11, 22, [33]],
1879'c' => [111, 222, [333]],
1880],
1881['*', '2'],
1882[[33], [333]],
1883],
1884[
1885[
1886'a' => [1, 2, [3]],
1887'b' => [11, 22],
1888'c' => [111, 222, [333]],
1889],
1890['*', '2', '*'],
1891[3, 333],
1892],
1893[
1894[
1895[
1896'a' => [1, 2, 3],
1897'b' => [11, 22, 33],
1898'c' => [111, 222, 333],
1899],
1900],
1901'*.*.5',
1902[],
1903],
1904[
1905[
1906[
1907[
1908'a' => [1, 2, 3],
1909'b' => [11, 22, 33],
1910'c' => [111, 222, 333],
1911],
1912],
1913[
1914[
1915'a' => [4, 5],
1916'b' => [44, 55],
1917'c' => [444, 555],
1918],
1919],
1920],
1921'*.*.*.3',
1922[],
1923],
1924[
1925[
1926[
1927[
1928'a' => [1, 2, 3],
1929'b' => [11, 22, 33],
1930'c' => [111, 222, 333],
1931],
1932],
1933[
1934[
1935'a' => [4, 5],
1936'b' => [44, 55],
1937'c' => [444, 555],
1938],
1939],
1940],
1941'*.*.z',
1942[],
1943],
1944[
1945[
1946[
1947[
1948'a' => [1, 2, 3],
1949'b' => [11, 22, 33],
1950'c' => [111, 222, 333],
1951],
1952],
1953[
1954[
1955'a' => [4, 5],
1956'b' => [44, 55],
1957'c' => [444, 555],
1958],
1959],
1960],
1961'*.*.z.0',
1962[],
1963],
1964[
1965[
1966[
1967[
1968'a' => [1, 2, 3],
1969'b' => [11, 22, 33],
1970'c' => [111, 222, 333],
1971],
1972],
1973[
1974[
1975'a' => [4, 5],
1976'b' => [44, 55],
1977'c' => [444, 555],
1978],
1979],
1980],
1981'*.*.z.1',
1982[],
1983],
1984[
1985[
1986[
1987[
1988'a' => [1, 2, 3],
1989'b' => [11, 22, 33],
1990'c' => [111, 222, 333],
1991],
1992],
1993[
1994[
1995'a' => [4, 5],
1996'b' => [44, 55],
1997'c' => [444, 555],
1998],
1999],
2000],
2001'*.*.a.2',
2002[3],
2003],
2004[
2005[
2006[
2007[
2008'a' => [1, 2, 3],
2009'b' => [11, 22, 33],
2010'c' => [111, 222, 333],
2011],
2012],
2013[
2014[
2015'a' => [4, 5],
2016'b' => [44, 55],
2017'c' => [444, 555],
2018],
2019],
2020],
2021'*.*.b.|.z',
2022null,
2023],
2024[
2025[
2026'first' => [
2027[
2028'a' => [1, 2, 3],
2029'b' => [11, 22, 33],
2030'c' => [111, 222, 333],
2031],
2032],
2033'second' => [
2034[
2035'a' => [4, 5],
2036'b' => [44, 55],
2037],
2038],
2039],
2040'*.*.*.2',
2041[3, 33, 333],
2042],
2043[
2044[
2045'first' => [
2046[
2047[
2048'a' => [],
2049'b' => ['aaa'],
2050'c' => ['bbb'],
2051],
2052],
2053],
2054'second' => [
2055[
2056[
2057[1, 2, 3],
2058[11, 22, 33],
2059[111, 222, 333],
2060],
2061[
2062[1111],
2063[11111],
2064],
2065],
2066[
2067[
2068[111111],
2069[1111111],
2070],
2071],
2072],
2073],
2074'second.*.*.*.2',
2075[3, 33, 333],
2076],
2077[
2078[
2079'first' => [
2080[
2081[
2082'a' => [],
2083'b' => ['aaa'],
2084'c' => ['bbb'],
2085],
2086],
2087],
2088'second' => [
2089[
2090[
2091[1, 2, 3],
2092[11, 22, 33],
2093[111, 222, 333],
2094],
2095[
2096[1111],
2097[11111],
2098],
2099],
2100[
2101[
2102[111111, 999],
2103[1111111],
2104],
2105],
2106],
2107],
2108'second.*.*.0.1',
2109[2, 999],
2110],
2111[
2112[
2113'first' => [
2114[
2115[
2116'a' => [],
2117'b' => ['aaa'],
2118'c' => ['bbb'],
2119],
2120],
2121],
2122'second' => [
2123[
2124[
2125[1, 2, 3],
2126[11, 22, 33],
2127[111, 222, 333],
2128],
2129[
2130[1111],
2131[11111],
2132],
2133],
2134[
2135[
2136[111111],
2137[1111111],
2138],
2139],
2140],
2141],
2142'second.*.*.2',
2143[[111, 222, 333]],
2144],
2145[
2146[
2147'first' => [
2148[
2149[
2150'a' => [],
2151'b' => ['aaa'],
2152'c' => ['bbb'],
2153],
2154],
2155],
2156'second' => [
2157[
2158[
2159[1, 2, 3],
2160[11, 22, 33],
2161[111, 222, 333],
2162],
2163[
2164[1111],
2165[11111],
2166],
2167],
2168[
2169[
2170[111111],
2171[1111111],
2172],
2173],
2174],
2175],
2176'second.*.*.2.*',
2177[111, 222, 333],
2178],
2179[
2180[
2181'a' => [
2182[
2183'b' => [
2184[
2185'c' => [
2186[
2187'd' => 1,
2188'e' => [1, 2, 3],
2189]
2190],
2191'f' => [
2192[
2193'e' => [4, 5, 6],
2194]
2195],
2196],
2197],
2198'i' => [
2199[
2200'j' => [
2201[
2202'd' => 3,
2203'e' => [7, 8, 9],
2204]
2205]
2206],
2207],
2208],
2209],
2210],
2211'a.*****.d',
2212[1, 3],
2213],
2214[
2215[
2216'a' => [
2217[
2218'b' => [
2219[
2220'c' => [
2221[
2222'd' => 1,
2223]
2224],
2225'f' => [
2226[
2227'd' => 2,
2228'e' => [4, 5, 6],
2229]
2230],
2231],
2232],
2233'i' => [
2234[
2235'j' => [
2236[
2237'd' => 3,
2238'e' => [7, 8, 9],
2239]
2240]
2241],
2242],
2243],
2244],
2245],
2246'a.*****.e',
2247[[4, 5, 6], [7, 8, 9]],
2248],
2249[
2250[
2251'a' => [
2252[
2253'b' => [
2254[
2255'c' => [
2256[
2257'd' => 1,
2258'e' => [1, 2, 3],
2259]
2260],
2261'f' => [
2262[
2263'd' => 2,
2264'e' => [4, 5, 6],
2265]
2266],
2267],
2268],
2269'i' => [
2270[
2271'j' => [
2272[
2273'd' => 3,
2274'e' => [7, 8, 9],
2275]
2276]
2277],
2278],
2279],
2280],
2281],
2282'a.*****.|.1.f',
2283null,
2284],
2285];
2286}
2287
2288public function dataProviderForNonStrictArrayObject(): array
2289{
2290return [
2291[
2292new \ArrayObject([1, 2, 3, 'a' => 4]),
22933,
2294null,
2295],
2296[
2297new \ArrayObject([1, 2, 3, 'a' => 4]),
2298'3',
2299null,
2300],
2301[
2302new \ArrayObject([1, 2, 3, 'a' => 4]),
2303'b',
2304null,
2305],
2306[
2307new \ArrayObject([1, 2, 3, 'a' => [1, 2, 'a' => 3]]),
2308'b.*',
2309null,
2310],
2311[
2312new \ArrayObject([1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]]),
2313'b.*.0',
2314null,
2315],
2316[
2317new \ArrayObject([1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]]),
2318'b.*.*',
2319null,
2320],
2321[
2322new \ArrayObject([1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]]),
2323'b.*.*',
2324null,
2325],
2326[
2327new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
2328'b.*.0.0',
2329null,
2330],
2331[
2332new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
2333'a.*.0.2',
2334[],
2335],
2336[
2337new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
2338'a.*.1.0',
2339[],
2340],
2341[
2342new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
2343'a.*.111.1',
2344[],
2345],
2346[
2347new \ArrayObject([1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]]),
2348'a.*.0.*.111',
2349[],
2350],
2351[
2352new \ArrayObject([1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]]),
2353'a.c',
2354null,
2355],
2356[
2357new \ArrayObject([1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]]),
2358'a.c.*',
2359null,
2360],
2361[
2362new \ArrayObject([1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]]),
2363'a.*.e',
2364[],
2365],
2366[
2367new \ArrayObject([1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]]),
2368'a.*.e.*',
2369[],
2370],
2371[
2372new \ArrayObject([1, 2, 3, 'a' => [
2373'b' => [['c'], ['d'], ['e']],
2374[[11], [22, 33]]],
2375]),
2376'a.*.*.1',
2377[33],
2378],
2379[
2380new \ArrayObject([1, 2, 3, 'a' => [
2381'b' => [['c'], ['d'], ['e']],
2382[[11], [22, 33]]],
2383]),
2384'a.**.1',
2385[33],
2386],
2387[
2388new \ArrayObject([1, 2, 3, 'a' => [
2389'b' => [['c'], ['d'], ['e']],
2390[[11], [22, 33]]],
2391]),
2392'a.**.2',
2393[],
2394],
2395[
2396new \ArrayObject([1, 2, 3, 'a' => [
2397'b' => [['c'], ['d'], ['e']],
2398[[11], [22, 33]]],
2399]),
2400'a.**.test',
2401[],
2402],
2403[
2404new \ArrayObject([
2405'a' => [1, 2, 3],
2406'b' => [11, 22, 33],
2407'c' => [111, 222, 333],
2408]),
2409'*.3',
2410[],
2411],
2412[
2413new \ArrayObject([
2414'a' => [1, 2, 3],
2415'b' => [11, 22, 33],
2416'c' => [111, 222, 333],
2417]),
2418['*', 3],
2419[],
2420],
2421[
2422new \ArrayObject([
2423'a' => [1, 2],
2424'b' => [11, 22, 33],
2425'c' => [111, 222, 333],
2426]),
2427['*', '2'],
2428[33, 333],
2429],
2430[
2431new \ArrayObject([
2432'a' => [1, 2],
2433'b' => [11, 22, [33]],
2434'c' => [111, 222, [333]],
2435]),
2436['*', '2'],
2437[[33], [333]],
2438],
2439[
2440new \ArrayObject([
2441'a' => [1, 2, [3]],
2442'b' => [11, 22],
2443'c' => [111, 222, [333]],
2444]),
2445['*', '2', '*'],
2446[3, 333],
2447],
2448[
2449new \ArrayObject([
2450new \ArrayObject([
2451'a' => new \ArrayObject([1, 2, 3]),
2452'b' => new \ArrayObject([11, 22, 33]),
2453'c' => new \ArrayObject([111, 222, 333]),
2454]),
2455]),
2456'*.*.5',
2457[],
2458],
2459[
2460new \ArrayObject([
2461'a' => new \ArrayObject([
2462new \ArrayObject([
2463'b' => new \ArrayObject([
2464new \ArrayObject([
2465'c' => new \ArrayObject([
2466new \ArrayObject([
2467'd' => 1,
2468'e' => [1, 2, 3],
2469])
2470]),
2471'f' => new \ArrayObject([
2472new \ArrayObject([
2473'e' => [4, 5, 6],
2474])
2475]),
2476]),
2477]),
2478'i' => new \ArrayObject([
2479new \ArrayObject([
2480'j' => new \ArrayObject([
2481new \ArrayObject([
2482'd' => 3,
2483'e' => [7, 8, 9],
2484])
2485])
2486]),
2487]),
2488]),
2489]),
2490]),
2491'a.*****.d',
2492[1, 3],
2493],
2494];
2495}
2496
2497public function dataProviderForNonStrictStdClass(): array
2498{
2499return [
2500[
2501(object)[1, 2, 3, 'a' => 4],
25023,
2503null,
2504],
2505[
2506(object)[1, 2, 3, 'a' => 4],
2507'3',
2508null,
2509],
2510[
2511(object)[1, 2, 3, 'a' => 4],
2512'b',
2513null,
2514],
2515[
2516(object)[1, 2, 3, 'a' => [1, 2, 'a' => 3]],
2517'b.*',
2518null,
2519],
2520[
2521(object)[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
2522'b.*.0',
2523null,
2524],
2525[
2526(object)[1, 2, 3, 'a' => ['b' => [11], 'c' => [22]]],
2527'b.*.*',
2528null,
2529],
2530[
2531(object)[1, 2, 3, 'a' => ['b' => [11, 22], 'c' => [33, 44]]],
2532'b.*.*',
2533null,
2534],
2535[
2536(object)[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
2537'b.*.0.0',
2538null,
2539],
2540[
2541(object)[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
2542'a.*.0.2',
2543[],
2544],
2545[
2546(object)[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
2547'a.*.1.0',
2548[],
2549],
2550[
2551(object)[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
2552'a.*.111.1',
2553[],
2554],
2555[
2556(object)[1, 2, 3, 'a' => ['b' => [[11, 22]], 'c' => [[33, 44]]]],
2557'a.*.0.*.111',
2558[],
2559],
2560[
2561(object)[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
2562'a.c',
2563null,
2564],
2565[
2566(object)[1, 2, 3, 'a' => [1, 2, 'b' => ['c', 'd', 'e']]],
2567'a.c.*',
2568null,
2569],
2570[
2571(object)[1, 2, 3, 'a' => ['b' => ['c', 'd', 'e'], [11, 22]]],
2572'a.*.e',
2573[],
2574],
2575[
2576(object)[1, 2, 3, 'a' => ['b' => [['c'], ['d'], ['e']], [[11], [22, 33]]]],
2577'a.*.e.*',
2578[],
2579],
2580];
2581}
2582}
2583