Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(459)

Side by Side Diff: third_party/sqlite/sqlite-src-3170000/test/json102.test

Issue 2747283002: [sql] Import reference version of SQLite 3.17.. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # 2015-08-12
2 #
3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing:
5 #
6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give.
9 #
10 #***********************************************************************
11 # This file implements tests for JSON SQL functions extension to the
12 # SQLite library.
13 #
14 # This file contains tests automatically generated from the json1
15 # documentation.
16 #
17
18 set testdir [file dirname $argv0]
19 source $testdir/tester.tcl
20
21 ifcapable !json1 {
22 finish_test
23 return
24 }
25
26 do_execsql_test json102-100 {
27 SELECT json_object('ex','[52,3.14159]');
28 } {{{"ex":"[52,3.14159]"}}}
29 do_execsql_test json102-110 {
30 SELECT json_object('ex',json('[52,3.14159]'));
31 } {{{"ex":[52,3.14159]}}}
32 do_execsql_test json102-120 {
33 SELECT json_object('ex',json_array(52,3.14159));
34 } {{{"ex":[52,3.14159]}}}
35 do_execsql_test json102-130 {
36 SELECT json(' { "this" : "is", "a": [ "test" ] } ');
37 } {{{"this":"is","a":["test"]}}}
38 do_execsql_test json102-140 {
39 SELECT json_array(1,2,'3',4);
40 } {{[1,2,"3",4]}}
41 do_execsql_test json102-150 {
42 SELECT json_array('[1,2]');
43 } {{["[1,2]"]}}
44 do_execsql_test json102-160 {
45 SELECT json_array(json_array(1,2));
46 } {{[[1,2]]}}
47 do_execsql_test json102-170 {
48 SELECT json_array(1,null,'3','[4,5]','{"six":7.7}');
49 } {{[1,null,"3","[4,5]","{\"six\":7.7}"]}}
50 do_execsql_test json102-180 {
51 SELECT json_array(1,null,'3',json('[4,5]'),json('{"six":7.7}'));
52 } {{[1,null,"3",[4,5],{"six":7.7}]}}
53 do_execsql_test json102-190 {
54 SELECT json_array_length('[1,2,3,4]');
55 } {{4}}
56 do_execsql_test json102-200 {
57 SELECT json_array_length('[1,2,3,4]', '$');
58 } {{4}}
59 do_execsql_test json102-210 {
60 SELECT json_array_length('[1,2,3,4]', '$[2]');
61 } {{0}}
62 do_execsql_test json102-220 {
63 SELECT json_array_length('{"one":[1,2,3]}');
64 } {{0}}
65 do_execsql_test json102-230 {
66 SELECT json_array_length('{"one":[1,2,3]}', '$.one');
67 } {{3}}
68 do_execsql_test json102-240 {
69 SELECT json_array_length('{"one":[1,2,3]}', '$.two');
70 } {{}}
71 do_execsql_test json102-250 {
72 SELECT json_extract('{"a":2,"c":[4,5,{"f":7}]}', '$');
73 } {{{"a":2,"c":[4,5,{"f":7}]}}}
74 do_execsql_test json102-260 {
75 SELECT json_extract('{"a":2,"c":[4,5,{"f":7}]}', '$.c');
76 } {{[4,5,{"f":7}]}}
77 do_execsql_test json102-270 {
78 SELECT json_extract('{"a":2,"c":[4,5,{"f":7}]}', '$.c[2]');
79 } {{{"f":7}}}
80 do_execsql_test json102-280 {
81 SELECT json_extract('{"a":2,"c":[4,5,{"f":7}]}', '$.c[2].f');
82 } {{7}}
83 do_execsql_test json102-290 {
84 SELECT json_extract('{"a":2,"c":[4,5],"f":7}','$.c','$.a');
85 } {{[[4,5],2]}}
86 do_execsql_test json102-300 {
87 SELECT json_extract('{"a":2,"c":[4,5,{"f":7}]}', '$.x');
88 } {{}}
89 do_execsql_test json102-310 {
90 SELECT json_extract('{"a":2,"c":[4,5,{"f":7}]}', '$.x', '$.a');
91 } {{[null,2]}}
92 do_execsql_test json102-320 {
93 SELECT json_insert('{"a":2,"c":4}', '$.a', 99);
94 } {{{"a":2,"c":4}}}
95 do_execsql_test json102-330 {
96 SELECT json_insert('{"a":2,"c":4}', '$.e', 99);
97 } {{{"a":2,"c":4,"e":99}}}
98 do_execsql_test json102-340 {
99 SELECT json_replace('{"a":2,"c":4}', '$.a', 99);
100 } {{{"a":99,"c":4}}}
101 do_execsql_test json102-350 {
102 SELECT json_replace('{"a":2,"c":4}', '$.e', 99);
103 } {{{"a":2,"c":4}}}
104 do_execsql_test json102-360 {
105 SELECT json_set('{"a":2,"c":4}', '$.a', 99);
106 } {{{"a":99,"c":4}}}
107 do_execsql_test json102-370 {
108 SELECT json_set('{"a":2,"c":4}', '$.e', 99);
109 } {{{"a":2,"c":4,"e":99}}}
110 do_execsql_test json102-380 {
111 SELECT json_set('{"a":2,"c":4}', '$.c', '[97,96]');
112 } {{{"a":2,"c":"[97,96]"}}}
113 do_execsql_test json102-390 {
114 SELECT json_set('{"a":2,"c":4}', '$.c', json('[97,96]'));
115 } {{{"a":2,"c":[97,96]}}}
116 do_execsql_test json102-400 {
117 SELECT json_set('{"a":2,"c":4}', '$.c', json_array(97,96));
118 } {{{"a":2,"c":[97,96]}}}
119 do_execsql_test json102-410 {
120 SELECT json_object('a',2,'c',4);
121 } {{{"a":2,"c":4}}}
122 do_execsql_test json102-420 {
123 SELECT json_object('a',2,'c','{e:5}');
124 } {{{"a":2,"c":"{e:5}"}}}
125 do_execsql_test json102-430 {
126 SELECT json_object('a',2,'c',json_object('e',5));
127 } {{{"a":2,"c":{"e":5}}}}
128 do_execsql_test json102-440 {
129 SELECT json_remove('[0,1,2,3,4]','$[2]');
130 } {{[0,1,3,4]}}
131 do_execsql_test json102-450 {
132 SELECT json_remove('[0,1,2,3,4]','$[2]','$[0]');
133 } {{[1,3,4]}}
134 do_execsql_test json102-460 {
135 SELECT json_remove('[0,1,2,3,4]','$[0]','$[2]');
136 } {{[1,2,4]}}
137 do_execsql_test json102-470 {
138 SELECT json_remove('{"x":25,"y":42}');
139 } {{{"x":25,"y":42}}}
140 do_execsql_test json102-480 {
141 SELECT json_remove('{"x":25,"y":42}','$.z');
142 } {{{"x":25,"y":42}}}
143 do_execsql_test json102-490 {
144 SELECT json_remove('{"x":25,"y":42}','$.y');
145 } {{{"x":25}}}
146 do_execsql_test json102-500 {
147 SELECT json_remove('{"x":25,"y":42}','$');
148 } {{}}
149 do_execsql_test json102-510 {
150 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}');
151 } {{object}}
152 do_execsql_test json102-520 {
153 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$');
154 } {{object}}
155 do_execsql_test json102-530 {
156 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a');
157 } {{array}}
158 do_execsql_test json102-540 {
159 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[0]');
160 } {{integer}}
161 do_execsql_test json102-550 {
162 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[1]');
163 } {{real}}
164 do_execsql_test json102-560 {
165 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[2]');
166 } {{true}}
167 do_execsql_test json102-570 {
168 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[3]');
169 } {{false}}
170 do_execsql_test json102-580 {
171 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[4]');
172 } {{null}}
173 do_execsql_test json102-590 {
174 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[5]');
175 } {{text}}
176 do_execsql_test json102-600 {
177 SELECT json_type('{"a":[2,3.5,true,false,null,"x"]}','$.a[6]');
178 } {{}}
179 do_execsql_test json102-610 {
180 SELECT json_valid(char(123)||'"x":35'||char(125));
181 } {{1}}
182 do_execsql_test json102-620 {
183 SELECT json_valid(char(123)||'"x":35');
184 } {{0}}
185
186 ifcapable vtab {
187 do_execsql_test json102-1000 {
188 CREATE TABLE user(name,phone);
189 INSERT INTO user(name,phone) VALUES
190 ('Alice','["919-555-2345","804-555-3621"]'),
191 ('Bob','["201-555-8872"]'),
192 ('Cindy','["704-555-9983"]'),
193 ('Dave','["336-555-8421","704-555-4321","803-911-4421"]');
194 SELECT DISTINCT user.name
195 FROM user, json_each(user.phone)
196 WHERE json_each.value LIKE '704-%'
197 ORDER BY 1;
198 } {Cindy Dave}
199
200 do_execsql_test json102-1010 {
201 UPDATE user
202 SET phone=json_extract(phone,'$[0]')
203 WHERE json_array_length(phone)<2;
204 SELECT name, substr(phone,1,5) FROM user ORDER BY name;
205 } {Alice {["919} Bob 201-5 Cindy 704-5 Dave {["336}}
206 do_execsql_test json102-1011 {
207 SELECT name FROM user WHERE phone LIKE '704-%'
208 UNION
209 SELECT user.name
210 FROM user, json_each(user.phone)
211 WHERE json_valid(user.phone)
212 AND json_each.value LIKE '704-%';
213 } {Cindy Dave}
214
215 do_execsql_test json102-1100 {
216 CREATE TABLE big(json JSON);
217 INSERT INTO big(json) VALUES('{
218 "id":123,
219 "stuff":[1,2,3,4],
220 "partlist":[
221 {"uuid":"bb108722-572e-11e5-9320-7f3b63a4ca74"},
222 {"uuid":"c690dc14-572e-11e5-95f9-dfc8861fd535"},
223 {"subassembly":[
224 {"uuid":"6fa5181e-5721-11e5-a04e-57f3d7b32808"}
225 ]}
226 ]
227 }');
228 INSERT INTO big(json) VALUES('{
229 "id":456,
230 "stuff":["hello","world","xyzzy"],
231 "partlist":[
232 {"uuid":false},
233 {"uuid":"c690dc14-572e-11e5-95f9-dfc8861fd535"}
234 ]
235 }');
236 } {}
237 set correct_answer [list \
238 1 {$.id} 123 \
239 1 {$.stuff[0]} 1 \
240 1 {$.stuff[1]} 2 \
241 1 {$.stuff[2]} 3 \
242 1 {$.stuff[3]} 4 \
243 1 {$.partlist[0].uuid} bb108722-572e-11e5-9320-7f3b63a4ca74 \
244 1 {$.partlist[1].uuid} c690dc14-572e-11e5-95f9-dfc8861fd535 \
245 1 {$.partlist[2].subassembly[0].uuid} 6fa5181e-5721-11e5-a04e-57f3d7b32808 \
246 2 {$.id} 456 \
247 2 {$.stuff[0]} hello \
248 2 {$.stuff[1]} world \
249 2 {$.stuff[2]} xyzzy \
250 2 {$.partlist[0].uuid} 0 \
251 2 {$.partlist[1].uuid} c690dc14-572e-11e5-95f9-dfc8861fd535]
252 do_execsql_test json102-1110 {
253 SELECT big.rowid, fullkey, value
254 FROM big, json_tree(big.json)
255 WHERE json_tree.type NOT IN ('object','array')
256 ORDER BY +big.rowid, +json_tree.id
257 } $correct_answer
258 do_execsql_test json102-1120 {
259 SELECT big.rowid, fullkey, atom
260 FROM big, json_tree(big.json)
261 WHERE atom IS NOT NULL
262 ORDER BY +big.rowid, +json_tree.id
263 } $correct_answer
264
265 do_execsql_test json102-1130 {
266 SELECT DISTINCT json_extract(big.json,'$.id')
267 FROM big, json_tree(big.json,'$.partlist')
268 WHERE json_tree.key='uuid'
269 AND json_tree.value='6fa5181e-5721-11e5-a04e-57f3d7b32808';
270 } {123}
271 do_execsql_test json102-1131 {
272 SELECT DISTINCT json_extract(big.json,'$.id')
273 FROM big, json_tree(big.json,'$')
274 WHERE json_tree.key='uuid'
275 AND json_tree.value='6fa5181e-5721-11e5-a04e-57f3d7b32808';
276 } {123}
277 do_execsql_test json102-1132 {
278 SELECT DISTINCT json_extract(big.json,'$.id')
279 FROM big, json_tree(big.json)
280 WHERE json_tree.key='uuid'
281 AND json_tree.value='6fa5181e-5721-11e5-a04e-57f3d7b32808';
282 } {123}
283 } ;# end ifcapable vtab
284
285 #-------------------------------------------------------------------------
286 # Test that json_valid() correctly identifies non-ascii range
287 # characters as non-whitespace.
288 #
289 do_execsql_test json102-1201 { SELECT json_valid(char(32) || '"xyz"') } 1
290 do_execsql_test json102-1202 { SELECT json_valid(char(200) || '"xyz"') } 0
291
292 # Off-by-one error in jsonAppendString()
293 #
294 for {set i 0} {$i<100} {incr i} {
295 set str abcdef[string repeat \" [expr {$i+50}]]uvwxyz
296 do_test json102-[format %d [expr {$i+1300}]] {
297 db eval {SELECT json_extract(json_array($::str),'$[0]')==$::str}
298 } {1}
299 }
300
301 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3170000/test/json101.test ('k') | third_party/sqlite/sqlite-src-3170000/test/json103.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698