1
2tst	|empty array|
3in	|[]|
4sel	|0|
5out	|<NULL>|
6
7tst	|one-element array: integer|
8in	|[1]|
9sel	|0|
10out	|1|
11sel	|1|
12out	|<NULL>|
13sel	|100|
14out	|<NULL>|
15sel	|-1|
16out	|<NULL>|
17
18tst	|one-element array: hex integer (not in spec, not supported)|
19in	|[0x1000]|
20sel	|0|
21out	|<NULL>|
22
23tst	|one-element array: float|
24in	|[1.5001]|
25sel	|0|
26out	|1.5001|
27
28tst	|one-element array: float + exponent|
29in	|[16.3e10]|
30sel	|0|
31out	|16.3e10|
32
33tst	|one-element array: integer + whitespace|
34in	|[ 	   5	]|
35sel	|0|
36out	|5|
37
38tst	|one-element array: integer + exponent + whitespace|
39in	|[ 	    	 16E10  	 ]|
40sel	|0|
41out	|16E10|
42
43tst	|one-element array: string|
44in	|["alpha"]|
45sel	|0|
46out	|alpha|
47
48tst	|alternative first-element indexing|
49in	|[1,5,10,15,20]|
50sel	|[0]|
51out	|1|
52sel	|[3]|
53out	|15|
54sel	|[4]|
55out	|20|
56sel	|[5]|
57out	|<NULL>|
58
59tst	|one-element array: object|
60in	|[ { "first": true, "second": false }]|
61sel	|0.first|
62out	|true|
63sel	|0.second|
64out	|false|
65sel	|0.third|
66out	|<NULL>|
67
68tst	|many-element array: integers|
69in	|[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377]|
70sel	|10|
71out	|55|
72sel	|14|
73out	|377|
74sel	|19|
75out	|<NULL>|
76
77tst	|many-element array: multiple types|
78in	|["string",32,true,{"a":9,"b":false},100.3e10,false,200.5,{"key":"val"},null]|
79sel	|0|
80out	|string|
81sel	|0.notobject|
82out	|<NULL>|
83sel	|1|
84out	|32|
85sel	|2|
86out	|true|
87sel	|3|
88out	|{"a":9,"b":false}|
89sel	|3.a|
90out	|9|
91sel	|3.b|
92out	|false|
93sel	|3.c|
94out	|<NULL>|
95sel	|4|
96out	|100.3e10|
97sel	|5|
98out	|false|
99sel	|6|
100out	|200.5|
101sel	|7|
102out	|{"key":"val"}|
103sel	|7.key|
104out	|val|
105sel	|7.key.notobject|
106out	|<NULL>|
107sel	|7.nonexist|
108out	|<NULL>|
109sel	|8|
110out	|null|
111sel	|9|
112out	|<NULL>|
113
114tst	|many-element array: multiple types + whitespace|
115in	|
116[	"string" ,	32 , true	,	 {"a":  9,	"b": false},		100.3e10, false, 200.5,{"key" 	:
117 "val"},		 null ]		|
118sel	|0|
119out	|string|
120sel	|0.notobject|
121out	|<NULL>|
122sel	|1|
123out	|32|
124sel	|2|
125out	|true|
126sel	|3|
127out	|{"a":  9,	"b": false}|
128sel	|3.a|
129out	|9|
130sel	|3.b|
131out	|false|
132sel	|3.c|
133out	|<NULL>|
134sel	|4|
135out	|100.3e10|
136sel	|5|
137out	|false|
138sel	|6|
139out	|200.5|
140sel	|7|
141out	|{"key" 	:
142 "val"}|
143sel	|7.key|
144out	|val|
145sel	|7.key.notobject|
146out	|<NULL>|
147sel	|7.nonexist|
148out	|<NULL>|
149sel	|8|
150out	|null|
151sel	|9|
152out	|<NULL>|
153
154tst	|two-element array: various string escape codes|
155in	|["abcd \" \\ \/ \b \f \n \r \t \u0000 \uf00F ", "final"]|
156sel	|0|
157out	|abcd \" \\ \/ \b \f \n \r \t \u0000 \uf00F |
158sel	|1|
159out	|final|
160
161tst	|three-element array: broken escape code|
162in	|["fine here", "dodgey \u00AZ", "wont get here"]|
163sel	|0|
164out	|fine here|
165sel	|1|
166out	|<NULL>|
167sel	|2|
168out	|<NULL>|
169
170tst	|nested objects|
171in	|{ "top": { "mid"  : { "legs": "feet" }, "number": 9, "array":[0,1,{"a":true,"bb":[1,2,false,{"x":"yz"}]}]}}|
172sel	|top|
173out	|{ "mid"  : { "legs": "feet" }, "number": 9, "array":[0,1,{"a":true,"bb":[1,2,false,{"x":"yz"}]}]}|
174sel	|fargo|
175out	|<NULL>|
176sel	|top.mid|
177out	|{ "legs": "feet" }|
178sel	|top.centre|
179out	|<NULL>|
180sel	|top.mid.legs|
181out	|feet|
182sel	|top.mid.number|
183out	|<NULL>|
184sel	|top.mid.array|
185out	|<NULL>|
186sel	|top.number|
187out	|9|
188sel	|top.array|
189out	|[0,1,{"a":true,"bb":[1,2,false,{"x":"yz"}]}]|
190sel	|top.array[0]|
191out	|0|
192sel	|top.array[1]|
193out	|1|
194sel	|top.array[2]|
195out	|{"a":true,"bb":[1,2,false,{"x":"yz"}]}|
196sel	|top.array[2].a|
197out	|true|
198sel	|top.array[2].b|
199out	|<NULL>|
200sel	|top.array[2].bb|
201out	|[1,2,false,{"x":"yz"}]|
202sel	|top.array[2].bb[0]|
203out	|1|
204sel	|top.array[2].bb[1]|
205out	|2|
206sel	|top.array[2].bb[2]|
207out	|false|
208sel	|top.array[2].bb[3]|
209out	|{"x":"yz"}|
210sel	|top.array[2].bb[3].x|
211out	|yz|
212sel	|top.array[2].bb[3].x.nofurther|
213out	|<NULL>|
214sel	|top.array[2].bb[4]|
215out	|<NULL>|
216sel	|top.array[3]|
217out	|<NULL>|
218
219