wasCSharpSQLite – Blame information for rev 4

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 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