wasCSharpSQLite – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 puts {# 2008 December 11
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 is automatically generated from a separate TCL script.
14 # This file seeks to exercise integer boundary values.
15 #
16 # $Id: boundary2.tcl,v 1.3 2009/01/02 15:45:48 shane Exp $
17  
18 set testdir [file dirname $argv0]
19 source $testdir/tester.tcl
20  
21 # Many of the boundary tests depend on a working 64-bit implementation.
22 if {![working_64bit_int]} { finish_test; return }
23 }
24  
25 expr srand(0)
26  
27 # Generate interesting boundary numbers
28 #
29 foreach x {
30  
31 1
32 0x7f
33 0x7fff
34 0x7fffff
35 0x7fffffff
36 0x7fffffffff
37 0x7fffffffffff
38 0x7fffffffffffff
39 0x7fffffffffffffff
40 } {
41 set x [expr {wide($x)}]
42 set boundarynum($x) 1
43 set boundarynum([expr {$x+1}]) 1
44 set boundarynum([expr {-($x+1)}]) 1
45 set boundarynum([expr {-($x+2)}]) 1
46 set boundarynum([expr {$x+$x+1}]) 1
47 set boundarynum([expr {$x+$x+2}]) 1
48 }
49 set x [expr {wide(127)}]
50 for {set i 1} {$i<=9} {incr i} {
51 set boundarynum($x) 1
52 set boundarynum([expr {$x+1}]) 1
53 set x [expr {wide($x*128 + 127)}]
54 }
55  
56 # Scramble the $inlist into a random order.
57 #
58 proc scramble {inlist} {
59 set y {}
60 foreach x $inlist {
61 lappend y [list [expr {rand()}] $x]
62 }
63 set y [lsort $y]
64 set outlist {}
65 foreach x $y {
66 lappend outlist [lindex $x 1]
67 }
68 return $outlist
69 }
70  
71 # A simple selection sort. Not trying to be efficient.
72 #
73 proc sort {inlist} {
74 set outlist {}
75 set mn [lindex $inlist 0]
76 foreach x $inlist {
77 if {$x<$mn} {set mn $x}
78 }
79 set outlist $mn
80 set mx $mn
81 while {1} {
82 set valid 0
83 foreach x $inlist {
84 if {$x>$mx && (!$valid || $mn>$x)} {
85 set mn $x
86 set valid 1
87 }
88 }
89 if {!$valid} break
90 lappend outlist $mn
91 set mx $mn
92 }
93 return $outlist
94 }
95  
96 # Reverse the order of a list
97 #
98 proc reverse {inlist} {
99 set i [llength $inlist]
100 set outlist {}
101 for {incr i -1} {$i>=0} {incr i -1} {
102 lappend outlist [lindex $inlist $i]
103 }
104 return $outlist
105 }
106  
107 set nums1 [scramble [array names boundarynum]]
108 set nums2 [scramble [array names boundarynum]]
109  
110 set tname boundary2
111 puts "do_test $tname-1.1 \173"
112 puts " db eval \173"
113 puts " CREATE TABLE t1(r INTEGER, a INTEGER, x TEXT);"
114 set a 0
115 foreach r $nums1 {
116 incr a
117 set t1ra($r) $a
118 set t1ar($a) $r
119 set x [format %08x%08x [expr {wide($r)>>32}] $r]
120 set t1rx($r) $x
121 set t1xr($x) $r
122 puts " INSERT INTO t1 VALUES($r,$a,'$x');"
123 }
124 puts " CREATE INDEX t1i1 ON t1(r);"
125 puts " CREATE INDEX t1i2 ON t1(a);"
126 puts " CREATE INDEX t1i3 ON t1(x);"
127 puts " \175"
128 puts "\175 {}"
129  
130 puts "do_test $tname-1.2 \173"
131 puts " db eval \173"
132 puts " SELECT count(*) FROM t1"
133 puts " \175"
134 puts "\175 {64}"
135  
136 set nums3 $nums2
137 lappend nums3 9.22337303685477580800e+18
138 lappend nums3 -9.22337303685477580800e+18
139  
140 set i 0
141 foreach r $nums3 {
142 incr i
143  
144 if {abs($r)<9.22337203685477580800e+18} {
145 set x $t1rx($r)
146 set a $t1ra($r)
147 set r5 $r.5
148 set r0 $r.0
149 puts "do_test $tname-2.$i.1 \173"
150 puts " db eval \173"
151 puts " SELECT * FROM t1 WHERE r=$r"
152 puts " \175"
153 puts "\175 {$r $a $x}"
154 puts "do_test $tname-2.$i.2 \173"
155 puts " db eval \173"
156 puts " SELECT r, a FROM t1 WHERE x='$x'"
157 puts " \175"
158 puts "\175 {$r $a}"
159 puts "do_test $tname-2.$i.3 \173"
160 puts " db eval \173"
161 puts " SELECT r, x FROM t1 WHERE a=$a"
162 puts " \175"
163 puts "\175 {$r $x}"
164 }
165  
166 foreach op {> >= < <=} subno {gt ge lt le} {
167  
168 ################################################################ 2.x.y.1
169 set rset {}
170 set aset {}
171 foreach rx $nums2 {
172 if "\$rx $op \$r" {
173 lappend rset $rx
174 lappend aset $t1ra($rx)
175 }
176 }
177 puts "do_test $tname-2.$i.$subno.1 \173"
178 puts " db eval \173"
179 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY a"
180 puts " \175"
181 puts "\175 {[sort $aset]}"
182  
183 ################################################################ 2.x.y.2
184 puts "do_test $tname-2.$i.$subno.2 \173"
185 puts " db eval \173"
186 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY a DESC"
187 puts " \175"
188 puts "\175 {[reverse [sort $aset]]}"
189  
190 ################################################################ 2.x.y.3
191 set aset {}
192 foreach rx [sort $rset] {
193 lappend aset $t1ra($rx)
194 }
195 puts "do_test $tname-2.$i.$subno.3 \173"
196 puts " db eval \173"
197 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY r"
198 puts " \175"
199 puts "\175 {$aset}"
200  
201 ################################################################ 2.x.y.4
202 set aset {}
203 foreach rx [reverse [sort $rset]] {
204 lappend aset $t1ra($rx)
205 }
206 puts "do_test $tname-2.$i.$subno.4 \173"
207 puts " db eval \173"
208 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY r DESC"
209 puts " \175"
210 puts "\175 {$aset}"
211  
212 ################################################################ 2.x.y.5
213 set aset {}
214 set xset {}
215 foreach rx $rset {
216 lappend xset $t1rx($rx)
217 }
218 foreach x [sort $xset] {
219 set rx $t1xr($x)
220 lappend aset $t1ra($rx)
221 }
222 puts "do_test $tname-2.$i.$subno.5 \173"
223 puts " db eval \173"
224 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY x"
225 puts " \175"
226 puts "\175 {$aset}"
227  
228 ################################################################ 2.x.y.10
229 if {abs($r)>9223372036854775808 || [string length $r5]>15} continue
230 set rset {}
231 set aset {}
232 foreach rx $nums2 {
233 if "\$rx $op \$r0" {
234 lappend rset $rx
235 }
236 }
237 foreach rx [sort $rset] {
238 lappend aset $t1ra($rx)
239 }
240 puts "do_test $tname-2.$i.$subno.10 \173"
241 puts " db eval \173"
242 puts " SELECT a FROM t1 WHERE r $op $r0 ORDER BY r"
243 puts " \175"
244 puts "\175 {$aset}"
245  
246 ################################################################ 2.x.y.11
247 set aset {}
248 foreach rx [reverse [sort $rset]] {
249 lappend aset $t1ra($rx)
250 }
251 puts "do_test $tname-2.$i.$subno.11 \173"
252 puts " db eval \173"
253 puts " SELECT a FROM t1 WHERE r $op $r0 ORDER BY r DESC"
254 puts " \175"
255 puts "\175 {$aset}"
256  
257  
258 ################################################################ 2.x.y.12
259 set rset {}
260 set aset {}
261 foreach rx $nums2 {
262 if "\$rx $op \$r5" {
263 lappend rset $rx
264 }
265 }
266 foreach rx [sort $rset] {
267 lappend aset $t1ra($rx)
268 }
269 puts "do_test $tname-2.$i.$subno.12 \173"
270 puts " db eval \173"
271 puts " SELECT a FROM t1 WHERE r $op $r5 ORDER BY r"
272 puts " \175"
273 puts "\175 {$aset}"
274  
275 ################################################################ 2.x.y.13
276 set aset {}
277 foreach rx [reverse [sort $rset]] {
278 lappend aset $t1ra($rx)
279 }
280 puts "do_test $tname-2.$i.$subno.13 \173"
281 puts " db eval \173"
282 puts " SELECT a FROM t1 WHERE r $op $r5 ORDER BY r DESC"
283 puts " \175"
284 puts "\175 {$aset}"
285 }
286 }
287  
288 puts "do_test $tname-3.1 \173"
289 puts " db eval \173"
290 puts " DROP INDEX t1i1;"
291 puts " DROP INDEX t1i2;"
292 puts " DROP INDEX t1i3;"
293 puts " \175"
294 puts "\175 {}"
295  
296 set i 0
297 foreach r $nums3 {
298 incr i
299  
300 if {abs($r)<9.22337203685477580800e+18} {
301 set x $t1rx($r)
302 set a $t1ra($r)
303 set r5 $r.5
304 set r0 $r.0
305 puts "do_test $tname-4.$i.1 \173"
306 puts " db eval \173"
307 puts " SELECT * FROM t1 WHERE r=$r"
308 puts " \175"
309 puts "\175 {$r $a $x}"
310 puts "do_test $tname-4.$i.2 \173"
311 puts " db eval \173"
312 puts " SELECT r, a FROM t1 WHERE x='$x'"
313 puts " \175"
314 puts "\175 {$r $a}"
315 puts "do_test $tname-4.$i.3 \173"
316 puts " db eval \173"
317 puts " SELECT r, x FROM t1 WHERE a=$a"
318 puts " \175"
319 puts "\175 {$r $x}"
320 }
321  
322 foreach op {> >= < <=} subno {gt ge lt le} {
323  
324 ################################################################ 2.x.y.1
325 set rset {}
326 set aset {}
327 foreach rx $nums2 {
328 if "\$rx $op \$r" {
329 lappend rset $rx
330 lappend aset $t1ra($rx)
331 }
332 }
333 puts "do_test $tname-4.$i.$subno.1 \173"
334 puts " db eval \173"
335 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY a"
336 puts " \175"
337 puts "\175 {[sort $aset]}"
338  
339 ################################################################ 2.x.y.2
340 puts "do_test $tname-4.$i.$subno.2 \173"
341 puts " db eval \173"
342 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY a DESC"
343 puts " \175"
344 puts "\175 {[reverse [sort $aset]]}"
345  
346 ################################################################ 2.x.y.3
347 set aset {}
348 foreach rx [sort $rset] {
349 lappend aset $t1ra($rx)
350 }
351 puts "do_test $tname-4.$i.$subno.3 \173"
352 puts " db eval \173"
353 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY r"
354 puts " \175"
355 puts "\175 {$aset}"
356  
357 ################################################################ 2.x.y.4
358 set aset {}
359 foreach rx [reverse [sort $rset]] {
360 lappend aset $t1ra($rx)
361 }
362 puts "do_test $tname-4.$i.$subno.4 \173"
363 puts " db eval \173"
364 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY r DESC"
365 puts " \175"
366 puts "\175 {$aset}"
367  
368 ################################################################ 2.x.y.5
369 set aset {}
370 set xset {}
371 foreach rx $rset {
372 lappend xset $t1rx($rx)
373 }
374 foreach x [sort $xset] {
375 set rx $t1xr($x)
376 lappend aset $t1ra($rx)
377 }
378 puts "do_test $tname-4.$i.$subno.5 \173"
379 puts " db eval \173"
380 puts " SELECT a FROM t1 WHERE r $op $r ORDER BY x"
381 puts " \175"
382 puts "\175 {$aset}"
383  
384 ################################################################ 2.x.y.10
385 if {abs($r)>9223372036854775808 || [string length $r5]>15} continue
386 set rset {}
387 set aset {}
388 foreach rx $nums2 {
389 if "\$rx $op \$r0" {
390 lappend rset $rx
391 }
392 }
393 foreach rx [sort $rset] {
394 lappend aset $t1ra($rx)
395 }
396 puts "do_test $tname-4.$i.$subno.10 \173"
397 puts " db eval \173"
398 puts " SELECT a FROM t1 WHERE r $op $r0 ORDER BY r"
399 puts " \175"
400 puts "\175 {$aset}"
401  
402 ################################################################ 2.x.y.11
403 set aset {}
404 foreach rx [reverse [sort $rset]] {
405 lappend aset $t1ra($rx)
406 }
407 puts "do_test $tname-4.$i.$subno.11 \173"
408 puts " db eval \173"
409 puts " SELECT a FROM t1 WHERE r $op $r0 ORDER BY r DESC"
410 puts " \175"
411 puts "\175 {$aset}"
412  
413  
414 ################################################################ 2.x.y.12
415 set rset {}
416 set aset {}
417 foreach rx $nums2 {
418 if "\$rx $op \$r5" {
419 lappend rset $rx
420 }
421 }
422 foreach rx [sort $rset] {
423 lappend aset $t1ra($rx)
424 }
425 puts "do_test $tname-4.$i.$subno.12 \173"
426 puts " db eval \173"
427 puts " SELECT a FROM t1 WHERE r $op $r5 ORDER BY r"
428 puts " \175"
429 puts "\175 {$aset}"
430  
431 ################################################################ 2.x.y.13
432 set aset {}
433 foreach rx [reverse [sort $rset]] {
434 lappend aset $t1ra($rx)
435 }
436 puts "do_test $tname-4.$i.$subno.13 \173"
437 puts " db eval \173"
438 puts " SELECT a FROM t1 WHERE r $op $r5 ORDER BY r DESC"
439 puts " \175"
440 puts "\175 {$aset}"
441 }
442 }
443  
444  
445 puts {finish_test}