OLD | NEW |
| (Empty) |
1 # 2009 February 24 | |
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. | |
12 # | |
13 # This file implements tests for the compile time diagnostic | |
14 # functions. | |
15 # | |
16 | |
17 set testdir [file dirname $argv0] | |
18 source $testdir/tester.tcl | |
19 | |
20 # Test organization: | |
21 # | |
22 # ctime-1.*: Test pragma support. | |
23 # ctime-2.*: Test function support. | |
24 # | |
25 | |
26 ifcapable !pragma||!compileoption_diags { | |
27 finish_test | |
28 return | |
29 } | |
30 | |
31 ##################### | |
32 # ctime-1.*: Test pragma support. | |
33 | |
34 do_test ctime-1.1.1 { | |
35 catchsql { | |
36 PRAGMA compile_options(); | |
37 } | |
38 } {1 {near ")": syntax error}} | |
39 do_test ctime-1.1.2 { | |
40 catchsql { | |
41 PRAGMA compile_options(NULL); | |
42 } | |
43 } {1 {near "NULL": syntax error}} | |
44 do_test ctime-1.1.3 { | |
45 catchsql { | |
46 PRAGMA compile_options *; | |
47 } | |
48 } {1 {near "*": syntax error}} | |
49 | |
50 do_test ctime-1.2.1 { | |
51 set ans [ catchsql { | |
52 PRAGMA compile_options; | |
53 } ] | |
54 list [ lindex $ans 0 ] | |
55 } {0} | |
56 # the results should be in sorted order already | |
57 do_test ctime-1.2.2 { | |
58 set ans [ catchsql { | |
59 PRAGMA compile_options; | |
60 } ] | |
61 list [ lindex $ans 0 ] [ expr { [lsort [lindex $ans 1]]==[lindex $ans 1] } ] | |
62 } {0 1} | |
63 | |
64 # SQLITE_THREADSAFE should pretty much always be defined | |
65 # one way or the other, and it must have a value of 0 or 1. | |
66 do_test ctime-1.4.1 { | |
67 catchsql { | |
68 SELECT sqlite_compileoption_used('SQLITE_THREADSAFE'); | |
69 } | |
70 } {0 1} | |
71 do_test ctime-1.4.2 { | |
72 catchsql { | |
73 SELECT sqlite_compileoption_used('THREADSAFE'); | |
74 } | |
75 } {0 1} | |
76 do_test ctime-1.4.3 { | |
77 catchsql { | |
78 SELECT sqlite_compileoption_used("THREADSAFE"); | |
79 } | |
80 } {0 1} | |
81 | |
82 do_test ctime-1.5 { | |
83 set ans1 [ catchsql { | |
84 SELECT sqlite_compileoption_used('THREADSAFE=0'); | |
85 } ] | |
86 set ans2 [ catchsql { | |
87 SELECT sqlite_compileoption_used('THREADSAFE=1'); | |
88 } ] | |
89 set ans3 [ catchsql { | |
90 SELECT sqlite_compileoption_used('THREADSAFE=2'); | |
91 } ] | |
92 lsort [ list $ans1 $ans2 $ans3 ] | |
93 } {{0 0} {0 0} {0 1}} | |
94 | |
95 do_test ctime-1.6 { | |
96 execsql { | |
97 SELECT sqlite_compileoption_used('THREADSAFE='); | |
98 } | |
99 } {0} | |
100 | |
101 do_test ctime-1.7.1 { | |
102 execsql { | |
103 SELECT sqlite_compileoption_used('SQLITE_OMIT_COMPILEOPTION_DIAGS'); | |
104 } | |
105 } {0} | |
106 do_test ctime-1.7.2 { | |
107 execsql { | |
108 SELECT sqlite_compileoption_used('OMIT_COMPILEOPTION_DIAGS'); | |
109 } | |
110 } {0} | |
111 | |
112 ##################### | |
113 # ctime-2.*: Test function support. | |
114 | |
115 do_test ctime-2.1.1 { | |
116 catchsql { | |
117 SELECT sqlite_compileoption_used(); | |
118 } | |
119 } {1 {wrong number of arguments to function sqlite_compileoption_used()}} | |
120 do_test ctime-2.1.2 { | |
121 catchsql { | |
122 SELECT sqlite_compileoption_used(NULL); | |
123 } | |
124 } {0 {{}}} | |
125 do_test ctime-2.1.3 { | |
126 catchsql { | |
127 SELECT sqlite_compileoption_used(""); | |
128 } | |
129 } {0 0} | |
130 do_test ctime-2.1.4 { | |
131 catchsql { | |
132 SELECT sqlite_compileoption_used(''); | |
133 } | |
134 } {0 0} | |
135 do_test ctime-2.1.5 { | |
136 catchsql { | |
137 SELECT sqlite_compileoption_used(foo); | |
138 } | |
139 } {1 {no such column: foo}} | |
140 do_test ctime-2.1.6 { | |
141 catchsql { | |
142 SELECT sqlite_compileoption_used('THREADSAFE', 0); | |
143 } | |
144 } {1 {wrong number of arguments to function sqlite_compileoption_used()}} | |
145 do_test ctime-2.1.7 { | |
146 catchsql { | |
147 SELECT sqlite_compileoption_used(0); | |
148 } | |
149 } {0 0} | |
150 do_test ctime-2.1.8 { | |
151 catchsql { | |
152 SELECT sqlite_compileoption_used('0'); | |
153 } | |
154 } {0 0} | |
155 do_test ctime-2.1.9 { | |
156 catchsql { | |
157 SELECT sqlite_compileoption_used(1.0); | |
158 } | |
159 } {0 0} | |
160 | |
161 do_test ctime-2.2.1 { | |
162 catchsql { | |
163 SELECT sqlite_compileoption_get(); | |
164 } | |
165 } {1 {wrong number of arguments to function sqlite_compileoption_get()}} | |
166 do_test ctime-2.2.2 { | |
167 catchsql { | |
168 SELECT sqlite_compileoption_get(0, 0); | |
169 } | |
170 } {1 {wrong number of arguments to function sqlite_compileoption_get()}} | |
171 | |
172 # This assumes there is at least 1 compile time option | |
173 # (see SQLITE_THREADSAFE above). | |
174 do_test ctime-2.3 { | |
175 catchsql { | |
176 SELECT sqlite_compileoption_used(sqlite_compileoption_get(0)); | |
177 } | |
178 } {0 1} | |
179 | |
180 # This assumes there is at least 1 compile time option | |
181 # (see SQLITE_THREADSAFE above). | |
182 do_test ctime-2.4 { | |
183 set ans [ catchsql { | |
184 SELECT sqlite_compileoption_get(0); | |
185 } ] | |
186 list [lindex $ans 0] | |
187 } {0} | |
188 | |
189 # Get the list of defines using the pragma, | |
190 # then try querying each one with the functions. | |
191 set ans [ catchsql { | |
192 PRAGMA compile_options; | |
193 } ] | |
194 set opts [ lindex $ans 1 ] | |
195 set tc 1 | |
196 foreach opt $opts { | |
197 do_test ctime-2.5.$tc { | |
198 set N [ expr {$tc-1} ] | |
199 set ans1 [ catchsql { | |
200 SELECT sqlite_compileoption_get($N); | |
201 } ] | |
202 set ans2 [ catchsql { | |
203 SELECT sqlite_compileoption_used($opt); | |
204 } ] | |
205 list [ lindex $ans1 0 ] [ expr { [lindex $ans1 1]==$opt } ] \ | |
206 [ expr { $ans2 } ] | |
207 } {0 1 {0 1}} | |
208 incr tc 1 | |
209 } | |
210 # test 1 past array bounds | |
211 do_test ctime-2.5.$tc { | |
212 set N [ expr {$tc-1} ] | |
213 set ans [ catchsql { | |
214 SELECT sqlite_compileoption_get($N); | |
215 } ] | |
216 } {0 {{}}} | |
217 incr tc 1 | |
218 # test 1 before array bounds (N=-1) | |
219 do_test ctime-2.5.$tc { | |
220 set N -1 | |
221 set ans [ catchsql { | |
222 SELECT sqlite_compileoption_get($N); | |
223 } ] | |
224 } {0 {{}}} | |
225 | |
226 | |
227 finish_test | |
OLD | NEW |