diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/main.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/main.test | 360 |
1 files changed, 360 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/main.test b/libraries/sqlite/unix/sqlite-3.5.1/test/main.test new file mode 100644 index 0000000..00aa96a --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/main.test | |||
@@ -0,0 +1,360 @@ | |||
1 | # 2001 September 15 | ||
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 regression tests for SQLite library. The | ||
12 | # focus of this file is exercising the code in main.c. | ||
13 | # | ||
14 | # $Id: main.test,v 1.27 2007/09/03 15:42:48 drh Exp $ | ||
15 | |||
16 | set testdir [file dirname $argv0] | ||
17 | source $testdir/tester.tcl | ||
18 | |||
19 | # Only do the next group of tests if the sqlite3_complete API is available | ||
20 | # | ||
21 | ifcapable {complete} { | ||
22 | |||
23 | # Tests of the sqlite_complete() function. | ||
24 | # | ||
25 | do_test main-1.1 { | ||
26 | db complete {This is a test} | ||
27 | } {0} | ||
28 | do_test main-1.2 { | ||
29 | db complete { | ||
30 | } | ||
31 | } {1} | ||
32 | do_test main-1.3 { | ||
33 | db complete { | ||
34 | -- a comment ; | ||
35 | } | ||
36 | } {1} | ||
37 | do_test main-1.4 { | ||
38 | db complete { | ||
39 | -- a comment ; | ||
40 | ; | ||
41 | } | ||
42 | } {1} | ||
43 | do_test main-1.5 { | ||
44 | db complete {DROP TABLE 'xyz;} | ||
45 | } {0} | ||
46 | do_test main-1.6 { | ||
47 | db complete {DROP TABLE 'xyz';} | ||
48 | } {1} | ||
49 | do_test main-1.7 { | ||
50 | db complete {DROP TABLE "xyz;} | ||
51 | } {0} | ||
52 | do_test main-1.8 { | ||
53 | db complete {DROP TABLE "xyz';} | ||
54 | } {0} | ||
55 | do_test main-1.9 { | ||
56 | db complete {DROP TABLE "xyz";} | ||
57 | } {1} | ||
58 | do_test main-1.10 { | ||
59 | db complete {DROP TABLE xyz; hi} | ||
60 | } {0} | ||
61 | do_test main-1.11 { | ||
62 | db complete {DROP TABLE xyz; } | ||
63 | } {1} | ||
64 | do_test main-1.12 { | ||
65 | db complete {DROP TABLE xyz; -- hi } | ||
66 | } {1} | ||
67 | do_test main-1.13 { | ||
68 | db complete {DROP TABLE xyz; -- hi | ||
69 | } | ||
70 | } {1} | ||
71 | do_test main-1.14 { | ||
72 | db complete {SELECT a-b FROM t1; } | ||
73 | } {1} | ||
74 | do_test main-1.15 { | ||
75 | db complete {SELECT a/e FROM t1 } | ||
76 | } {0} | ||
77 | do_test main-1.16 { | ||
78 | db complete { | ||
79 | CREATE TABLE abc(x,y); | ||
80 | } | ||
81 | } {1} | ||
82 | ifcapable {trigger} { | ||
83 | do_test main-1.17 { | ||
84 | db complete { | ||
85 | CREATE TRIGGER xyz AFTER DELETE abc BEGIN UPDATE pqr; | ||
86 | } | ||
87 | } {0} | ||
88 | do_test main-1.18 { | ||
89 | db complete { | ||
90 | CREATE TRIGGER xyz AFTER DELETE abc BEGIN UPDATE pqr; END; | ||
91 | } | ||
92 | } {1} | ||
93 | do_test main-1.19 { | ||
94 | db complete { | ||
95 | CREATE TRIGGER xyz AFTER DELETE abc BEGIN | ||
96 | UPDATE pqr; | ||
97 | unknown command; | ||
98 | } | ||
99 | } {0} | ||
100 | do_test main-1.20 { | ||
101 | db complete { | ||
102 | CREATE TRIGGER xyz AFTER DELETE backend BEGIN | ||
103 | UPDATE pqr; | ||
104 | } | ||
105 | } {0} | ||
106 | do_test main-1.21 { | ||
107 | db complete { | ||
108 | CREATE TRIGGER xyz AFTER DELETE end BEGIN | ||
109 | SELECT a, b FROM end; | ||
110 | } | ||
111 | } {0} | ||
112 | do_test main-1.22 { | ||
113 | db complete { | ||
114 | CREATE TRIGGER xyz AFTER DELETE end BEGIN | ||
115 | SELECT a, b FROM end; | ||
116 | END; | ||
117 | } | ||
118 | } {1} | ||
119 | do_test main-1.23 { | ||
120 | db complete { | ||
121 | CREATE TRIGGER xyz AFTER DELETE end BEGIN | ||
122 | SELECT a, b FROM end; | ||
123 | END; | ||
124 | SELECT a, b FROM end; | ||
125 | } | ||
126 | } {1} | ||
127 | do_test main-1.24 { | ||
128 | db complete { | ||
129 | CREATE TRIGGER xyz AFTER DELETE [;end;] BEGIN | ||
130 | UPDATE pqr; | ||
131 | } | ||
132 | } {0} | ||
133 | do_test main-1.25 { | ||
134 | db complete { | ||
135 | CREATE TRIGGER xyz AFTER DELETE backend BEGIN | ||
136 | UPDATE pqr SET a=[;end;];;; | ||
137 | } | ||
138 | } {0} | ||
139 | do_test main-1.26 { | ||
140 | db complete { | ||
141 | CREATE -- a comment | ||
142 | TRIGGER xyz AFTER DELETE backend BEGIN | ||
143 | UPDATE pqr SET a=5; | ||
144 | } | ||
145 | } {0} | ||
146 | do_test main-1.27.1 { | ||
147 | db complete { | ||
148 | CREATE -- a comment | ||
149 | TRIGGERX xyz AFTER DELETE backend BEGIN | ||
150 | UPDATE pqr SET a=5; | ||
151 | } | ||
152 | } {1} | ||
153 | do_test main-1.27.2 { | ||
154 | db complete { | ||
155 | CREATE/**/TRIGGER xyz AFTER DELETE backend BEGIN | ||
156 | UPDATE pqr SET a=5; | ||
157 | } | ||
158 | } {0} | ||
159 | ifcapable {explain} { | ||
160 | do_test main-1.27.3 { | ||
161 | db complete { | ||
162 | /* */ EXPLAIN -- A comment | ||
163 | CREATE/**/TRIGGER xyz AFTER DELETE backend BEGIN | ||
164 | UPDATE pqr SET a=5; | ||
165 | } | ||
166 | } {0} | ||
167 | } | ||
168 | do_test main-1.27.4 { | ||
169 | db complete { | ||
170 | BOGUS token | ||
171 | CREATE TRIGGER xyz AFTER DELETE backend BEGIN | ||
172 | UPDATE pqr SET a=5; | ||
173 | } | ||
174 | } {1} | ||
175 | ifcapable {explain} { | ||
176 | do_test main-1.27.5 { | ||
177 | db complete { | ||
178 | EXPLAIN | ||
179 | CREATE TEMP TRIGGER xyz AFTER DELETE backend BEGIN | ||
180 | UPDATE pqr SET a=5; | ||
181 | } | ||
182 | } {0} | ||
183 | } | ||
184 | do_test main-1.28 { | ||
185 | db complete { | ||
186 | CREATE TEMPORARY TRIGGER xyz AFTER DELETE backend BEGIN | ||
187 | UPDATE pqr SET a=5; | ||
188 | } | ||
189 | } {0} | ||
190 | do_test main-1.29 { | ||
191 | db complete { | ||
192 | CREATE TRIGGER xyz AFTER DELETE backend BEGIN | ||
193 | UPDATE pqr SET a=5; | ||
194 | EXPLAIN select * from xyz; | ||
195 | } | ||
196 | } {0} | ||
197 | } | ||
198 | do_test main-1.30 { | ||
199 | db complete { | ||
200 | CREATE TABLE /* In comment ; */ | ||
201 | } | ||
202 | } {0} | ||
203 | do_test main-1.31 { | ||
204 | db complete { | ||
205 | CREATE TABLE /* In comment ; */ hi; | ||
206 | } | ||
207 | } {1} | ||
208 | do_test main-1.31 { | ||
209 | db complete { | ||
210 | CREATE TABLE /* In comment ; */; | ||
211 | } | ||
212 | } {1} | ||
213 | do_test main-1.32 { | ||
214 | db complete { | ||
215 | stuff; | ||
216 | /* | ||
217 | CREATE TABLE | ||
218 | multiple lines | ||
219 | of text | ||
220 | */ | ||
221 | } | ||
222 | } {1} | ||
223 | do_test main-1.33 { | ||
224 | db complete { | ||
225 | /* | ||
226 | CREATE TABLE | ||
227 | multiple lines | ||
228 | of text; | ||
229 | } | ||
230 | } {0} | ||
231 | do_test main-1.34 { | ||
232 | db complete { | ||
233 | /* | ||
234 | CREATE TABLE | ||
235 | multiple lines "*/ | ||
236 | of text; | ||
237 | } | ||
238 | } {1} | ||
239 | do_test main-1.35 { | ||
240 | db complete {hi /**/ there;} | ||
241 | } {1} | ||
242 | do_test main-1.36 { | ||
243 | db complete {hi there/***/;} | ||
244 | } {1} | ||
245 | |||
246 | } ;# end ifcapable {complete} | ||
247 | |||
248 | |||
249 | # Try to open a database with a corrupt database file. | ||
250 | # | ||
251 | do_test main-2.0 { | ||
252 | catch {db close} | ||
253 | file delete -force test.db | ||
254 | set fd [open test.db w] | ||
255 | puts $fd hi! | ||
256 | close $fd | ||
257 | set v [catch {sqlite3 db test.db} msg] | ||
258 | if {$v} {lappend v $msg} {lappend v {}} | ||
259 | } {0 {}} | ||
260 | |||
261 | # Here are some tests for tokenize.c. | ||
262 | # | ||
263 | do_test main-3.1 { | ||
264 | catch {db close} | ||
265 | foreach f [glob -nocomplain testdb/*] {file delete -force $f} | ||
266 | file delete -force testdb | ||
267 | sqlite3 db testdb | ||
268 | set v [catch {execsql {SELECT * from T1 where x!!5}} msg] | ||
269 | lappend v $msg | ||
270 | } {1 {unrecognized token: "!!"}} | ||
271 | do_test main-3.2 { | ||
272 | catch {db close} | ||
273 | foreach f [glob -nocomplain testdb/*] {file delete -force $f} | ||
274 | file delete -force testdb | ||
275 | sqlite3 db testdb | ||
276 | set v [catch {execsql {SELECT * from T1 where ^x}} msg] | ||
277 | lappend v $msg | ||
278 | } {1 {unrecognized token: "^"}} | ||
279 | do_test main-3.2.2 { | ||
280 | catchsql {select 'abc} | ||
281 | } {1 {unrecognized token: "'abc"}} | ||
282 | do_test main-3.2.3 { | ||
283 | catchsql {select "abc} | ||
284 | } {1 {unrecognized token: ""abc"}} | ||
285 | |||
286 | do_test main-3.3 { | ||
287 | catch {db close} | ||
288 | foreach f [glob -nocomplain testdb/*] {file delete -force $f} | ||
289 | file delete -force testdb | ||
290 | sqlite3 db testdb | ||
291 | execsql { | ||
292 | create table T1(X REAL); /* C-style comments allowed */ | ||
293 | insert into T1 values(0.5); | ||
294 | insert into T1 values(0.5e2); | ||
295 | insert into T1 values(0.5e-002); | ||
296 | insert into T1 values(5e-002); | ||
297 | insert into T1 values(-5.0e-2); | ||
298 | insert into T1 values(-5.1e-2); | ||
299 | insert into T1 values(0.5e2); | ||
300 | insert into T1 values(0.5E+02); | ||
301 | insert into T1 values(5E+02); | ||
302 | insert into T1 values(5.0E+03); | ||
303 | select x*10 from T1 order by x*5; | ||
304 | } | ||
305 | } {-0.51 -0.5 0.05 0.5 5.0 500.0 500.0 500.0 5000.0 50000.0} | ||
306 | do_test main-3.4 { | ||
307 | set v [catch {execsql {create bogus}} msg] | ||
308 | lappend v $msg | ||
309 | } {1 {near "bogus": syntax error}} | ||
310 | do_test main-3.5 { | ||
311 | set v [catch {execsql {create}} msg] | ||
312 | lappend v $msg | ||
313 | } {1 {near "create": syntax error}} | ||
314 | do_test main-3.6 { | ||
315 | catchsql {SELECT 'abc' + #9} | ||
316 | } {1 {near "#9": syntax error}} | ||
317 | |||
318 | # The following test-case tests the linked list code used to manage | ||
319 | # sqlite3_vfs structures. | ||
320 | if {$::tcl_platform(platform)=="unix"} { | ||
321 | ifcapable threadsafe { | ||
322 | do_test main-4.1 { | ||
323 | sqlite3_crash_enable 1 | ||
324 | sqlite3_crash_enable 0 | ||
325 | |||
326 | sqlite3async_enable 1 | ||
327 | sqlite3async_enable 0 | ||
328 | |||
329 | sqlite3_crash_enable 1 | ||
330 | sqlite3async_enable 1 | ||
331 | sqlite3_crash_enable 0 | ||
332 | sqlite3async_enable 0 | ||
333 | |||
334 | sqlite3_crash_enable 1 | ||
335 | sqlite3async_enable 1 | ||
336 | sqlite3async_enable 0 | ||
337 | sqlite3_crash_enable 0 | ||
338 | |||
339 | sqlite3async_enable 1 | ||
340 | sqlite3_crash_enable 1 | ||
341 | sqlite3_crash_enable 0 | ||
342 | sqlite3async_enable 0 | ||
343 | |||
344 | sqlite3async_enable 1 | ||
345 | sqlite3_crash_enable 1 | ||
346 | sqlite3async_enable 0 | ||
347 | sqlite3_crash_enable 0 | ||
348 | } {} | ||
349 | do_test main-4.2 { | ||
350 | set rc [catch {sqlite3 db test.db -vfs crash} msg] | ||
351 | list $rc $msg | ||
352 | } {1 {no such vfs: crash}} | ||
353 | do_test main-4.3 { | ||
354 | set rc [catch {sqlite3 db test.db -vfs async} msg] | ||
355 | list $rc $msg | ||
356 | } {1 {no such vfs: async}} | ||
357 | } | ||
358 | } | ||
359 | |||
360 | finish_test | ||