dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / lib / libsqlite / test / main.test
blob529e40ed613a3d37c50a8c445444c4e341a3f19d
2 #pragma ident   "%Z%%M% %I%     %E% SMI"
4 # 2001 September 15
6 # The author disclaims copyright to this source code.  In place of
7 # a legal notice, here is a blessing:
9 #    May you do good and not evil.
10 #    May you find forgiveness for yourself and forgive others.
11 #    May you share freely, never taking more than you give.
13 #***********************************************************************
14 # This file implements regression tests for SQLite library.  The
15 # focus of this file is exercising the code in main.c.
17 # $Id: main.test,v 1.14 2003/05/04 17:58:27 drh Exp $
19 set testdir [file dirname $argv0]
20 source $testdir/tester.tcl
22 # Tests of the sqlite_complete() function.
24 do_test main-1.1 {
25   db complete {This is a test}
26 } {0}
27 do_test main-1.2 {
28   db complete {
29   }
30 } {1}
31 do_test main-1.3 {
32   db complete {
33      -- a comment ;
34   }
35 } {1}
36 do_test main-1.4 {
37   db complete {
38      -- a comment ;
39      ;
40   }
41 } {1}
42 do_test main-1.5 {
43   db complete {DROP TABLE 'xyz;}
44 } {0}
45 do_test main-1.6 {
46   db complete {DROP TABLE 'xyz';}
47 } {1}
48 do_test main-1.7 {
49   db complete {DROP TABLE "xyz;}
50 } {0}
51 do_test main-1.8 {
52   db complete {DROP TABLE "xyz';}
53 } {0}
54 do_test main-1.9 {
55   db complete {DROP TABLE "xyz";}
56 } {1}
57 do_test main-1.10 {
58   db complete {DROP TABLE xyz; hi}
59 } {0}
60 do_test main-1.11 {
61   db complete {DROP TABLE xyz; }
62 } {1}
63 do_test main-1.12 {
64   db complete {DROP TABLE xyz; -- hi }
65 } {1}
66 do_test main-1.13 {
67   db complete {DROP TABLE xyz; -- hi
68   }
69 } {1}
70 do_test main-1.14 {
71   db complete {SELECT a-b FROM t1; }
72 } {1}
73 do_test main-1.15 {
74   db complete {SELECT a-b FROM t1 }
75 } {0}
76 do_test main-1.16 {
77   db complete {
78     CREATE TABLE abc(x,y);
79   }
80 } {1}
81 do_test main-1.17 {
82   db complete {
83     CREATE TRIGGER xyz AFTER DELETE abc BEGIN UPDATE pqr;
84   }
85 } {0}
86 do_test main-1.18 {
87   db complete {
88     CREATE TRIGGER xyz AFTER DELETE abc BEGIN UPDATE pqr; END;
89   }
90 } {1}
91 do_test main-1.19 {
92   db complete {
93     CREATE TRIGGER xyz AFTER DELETE abc BEGIN
94        UPDATE pqr;
95        unknown command;
96   }
97 } {0}
98 do_test main-1.20 {
99   db complete {
100     CREATE TRIGGER xyz AFTER DELETE backend BEGIN
101        UPDATE pqr;
102   }
103 } {0}
104 do_test main-1.21 {
105   db complete {
106     CREATE TRIGGER xyz AFTER DELETE end BEGIN
107        SELECT a, b FROM end;
108   }
109 } {0}
110 do_test main-1.22 {
111   db complete {
112     CREATE TRIGGER xyz AFTER DELETE end BEGIN
113        SELECT a, b FROM end;
114     END;
115   }
116 } {1}
117 do_test main-1.23 {
118   db complete {
119     CREATE TRIGGER xyz AFTER DELETE end BEGIN
120        SELECT a, b FROM end;
121     END;
122     SELECT a, b FROM end;
123   }
124 } {1}
125 do_test main-1.24 {
126   db complete {
127     CREATE TRIGGER xyz AFTER DELETE [;end;] BEGIN
128        UPDATE pqr;
129   }
130 } {0}
131 do_test main-1.25 {
132   db complete {
133     CREATE TRIGGER xyz AFTER DELETE backend BEGIN
134        UPDATE pqr SET a=[;end;];;;
135   }
136 } {0}
137 do_test main-1.26 {
138   db complete {
139     CREATE -- a comment
140     TRIGGER xyz AFTER DELETE backend BEGIN
141        UPDATE pqr SET a=5;
142   }
143 } {0}
144 do_test main-1.27.1 {
145   db complete {
146     CREATE -- a comment
147     TRIGGERX xyz AFTER DELETE backend BEGIN
148        UPDATE pqr SET a=5;
149   }
150 } {1}
151 do_test main-1.27.2 {
152   db complete {
153     CREATE/**/TRIGGER xyz AFTER DELETE backend BEGIN
154        UPDATE pqr SET a=5;
155   }
156 } {0}
157 do_test main-1.27.3 {
158   db complete {
159     /* */ EXPLAIN -- A comment
160     CREATE/**/TRIGGER xyz AFTER DELETE backend BEGIN
161        UPDATE pqr SET a=5;
162   }
163 } {0}
164 do_test main-1.27.4 {
165   db complete {
166     BOGUS token
167     CREATE  TRIGGER xyz AFTER DELETE backend BEGIN
168        UPDATE pqr SET a=5;
169   }
170 } {1}
171 do_test main-1.27.5 {
172   db complete {
173     EXPLAIN 
174     CREATE TEMP TRIGGER xyz AFTER DELETE backend BEGIN
175        UPDATE pqr SET a=5;
176   }
177 } {0}
178 do_test main-1.28 {
179   db complete {
180     CREATE TEMP TRIGGER xyz AFTER DELETE backend BEGIN
181        UPDATE pqr SET a=5;
182   }
183 } {0}
184 do_test main-1.29 {
185   db complete {
186     CREATE TRIGGER xyz AFTER DELETE backend BEGIN
187        UPDATE pqr SET a=5;
188        EXPLAIN select * from xyz;
189   }
190 } {0}
191 do_test main-1.30 {
192   db complete {
193      CREATE TABLE /* In comment ; */
194   }
195 } {0}
196 do_test main-1.31 {
197   db complete {
198      CREATE TABLE /* In comment ; */ hi;
199   }
200 } {1}
201 do_test main-1.31 {
202   db complete {
203      CREATE TABLE /* In comment ; */;
204   }
205 } {1}
206 do_test main-1.32 {
207   db complete {
208      stuff;
209      /*
210        CREATE TABLE
211        multiple lines
212        of text
213      */
214   }
215 } {1}
216 do_test main-1.33 {
217   db complete {
218      /*
219        CREATE TABLE
220        multiple lines
221        of text;
222   }
223 } {0}
224 do_test main-1.34 {
225   db complete {
226      /*
227        CREATE TABLE
228        multiple lines "*/
229        of text;
230   }
231 } {1}
232 do_test main-1.35 {
233   db complete {hi /**/ there;}
234 } {1}
235 do_test main-1.36 {
236   db complete {hi there/***/;}
237 } {1}
240 # Try to open a database with a corrupt database file.
242 do_test main-2.0 {
243   catch {db close}
244   file delete -force test.db
245   set fd [open test.db w]
246   puts $fd hi!
247   close $fd
248   set v [catch {sqlite db test.db} msg]
249   if {$v} {lappend v $msg} {lappend v {}}
250 } {0 {}}
252 # Here are some tests for tokenize.c.  
254 do_test main-3.1 {
255   catch {db close}
256   foreach f [glob -nocomplain testdb/*] {file delete -force $f}
257   file delete -force testdb
258   sqlite db testdb
259   set v [catch {execsql {SELECT * from T1 where x!!5}} msg]
260   lappend v $msg
261 } {1 {unrecognized token: "!!"}}
262 do_test main-3.2 {
263   catch {db close}
264   foreach f [glob -nocomplain testdb/*] {file delete -force $f}
265   file delete -force testdb
266   sqlite db testdb
267   set v [catch {execsql {SELECT * from T1 where @x}} msg]
268   lappend v $msg
269 } {1 {unrecognized token: "@"}}
271 do_test main-3.3 {
272   catch {db close}
273   foreach f [glob -nocomplain testdb/*] {file delete -force $f}
274   file delete -force testdb
275   sqlite db testdb
276   execsql {
277     create table T1(X REAL);
278     insert into T1 values(0.5);
279     insert into T1 values(0.5e2);
280     insert into T1 values(0.5e-002);
281     insert into T1 values(5e-002);
282     insert into T1 values(-5.0e-2);
283     insert into T1 values(-5.1e-2);
284     insert into T1 values(0.5e2);
285     insert into T1 values(0.5E+02);
286     insert into T1 values(5E+02);
287     insert into T1 values(5.0E+03);
288     select x*10 from T1 order by x*5;
289   }
290 } {-0.51 -0.5 0.05 0.5 5 500 500 500 5000 50000}
291 do_test main-3.4 {
292   set v [catch {execsql {create bogus}} msg]
293   lappend v $msg
294 } {1 {near "bogus": syntax error}}
295 do_test main-3.5 {
296   set v [catch {execsql {create}} msg]
297   lappend v $msg
298 } {1 {near "create": syntax error}}
300 finish_test