Update mojo sdk to rev 1dc8a9a5db73d3718d99917fadf31f5fb2ebad4f
[chromium-blink-merge.git] / third_party / sqlite / sqlite-src-3080704 / test / ctime.test
blobe4cb156168be57f9208e8bba8f247cbd740dac6d
1 # 2009 February 24
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
11 # This file implements regression tests for SQLite library.
13 # This file implements tests for the compile time diagnostic 
14 # functions.
17 set testdir [file dirname $argv0]
18 source $testdir/tester.tcl
20 # Test organization:
22 # ctime-1.*: Test pragma support.
23 # ctime-2.*: Test function support.
26 ifcapable !pragma||!compileoption_diags {
27   finish_test
28   return
31 #####################
32 # ctime-1.*: Test pragma support.
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}}
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}
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}
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}}
95 do_test ctime-1.6 {
96   execsql {
97     SELECT sqlite_compileoption_used('THREADSAFE=');
98   }
99 } {0}
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}
112 #####################
113 # ctime-2.*: Test function support.
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}
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()}}
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}
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}
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
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 {{}}}
227 finish_test