Annotation of embedaddon/sqlite3/test/boundary4.tcl, revision 1.1.1.1
1.1 misho 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: boundary4.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: ifcapable !altertable { finish_test; return }
24: }
25:
26: expr srand(0)
27:
28: # Generate interesting boundary numbers
29: #
30: foreach x {
31: 0x7f
32: 0x7fff
33: 0x7fffff
34: 0x7fffffff
35: 0x7fffffffff
36: 0x7fffffffffff
37: 0x7fffffffffffff
38: 0x7fffffffffffffff
39: } {
40: set x [expr {wide($x)}]
41: set boundarynum($x) 1
42: set boundarynum([expr {$x+1}]) 1
43: set boundarynum([expr {-($x+1)}]) 1
44: set boundarynum([expr {-($x+2)}]) 1
45: set boundarynum([expr {$x+$x+1}]) 1
46: set boundarynum([expr {$x+$x+2}]) 1
47: }
48: set x [expr {wide(127)}]
49: for {set i 127} {$i<=9} {incr i} {
50: set boundarynum($x) 1
51: set boundarynum([expr {$x+1}]) 1
52: set x [expr {wide($x*128 + 127)}]
53: }
54:
55: # Scramble the $inlist into a random order.
56: #
57: proc scramble {inlist} {
58: set y {}
59: foreach x $inlist {
60: lappend y [list [expr {rand()}] $x]
61: }
62: set y [lsort $y]
63: set outlist {}
64: foreach x $y {
65: lappend outlist [lindex $x 1]
66: }
67: return $outlist
68: }
69:
70: # A simple selection sort. Not trying to be efficient.
71: #
72: proc sort {inlist} {
73: set outlist {}
74: set mn [lindex $inlist 0]
75: foreach x $inlist {
76: if {$x<$mn} {set mn $x}
77: }
78: set outlist $mn
79: set mx $mn
80: while {1} {
81: set valid 0
82: foreach x $inlist {
83: if {$x>$mx && (!$valid || $mn>$x)} {
84: set mn $x
85: set valid 1
86: }
87: }
88: if {!$valid} break
89: lappend outlist $mn
90: set mx $mn
91: }
92: return $outlist
93: }
94:
95: # Reverse the order of a list
96: #
97: proc reverse {inlist} {
98: set i [llength $inlist]
99: set outlist {}
100: for {incr i -1} {$i>=0} {incr i -1} {
101: lappend outlist [lindex $inlist $i]
102: }
103: return $outlist
104: }
105:
106: set nums1 [scramble [array names boundarynum]]
107: set nums2 [scramble [array names boundarynum]]
108:
109: set tname boundary4
110: puts "do_test $tname-1.1 \173"
111: puts " db eval \173"
112: puts " CREATE TABLE t1(a,x);"
113: set a 0
114: set all_rowid {}
115: set all_a {}
116: set all_x {}
117: foreach r $nums1 {
118: incr a
119: set t1ra($r) $a
120: set t1ar($a) $r
121: set x [format %08x%08x [expr {wide($r)>>32}] $r]
122: set t1rx($r) $x
123: set t1xr($x) $r
124: puts " INSERT INTO t1(oid,a,x) VALUES($r,$a,'$x');"
125: lappend all_rowid $r
126: lappend all_a $a
127: lappend all_x $x
128: }
129: puts " CREATE INDEX t1i1 ON t1(a);"
130: puts " CREATE INDEX t1i2 ON t1(x);"
131: puts " \175"
132: puts "\175 {}"
133:
134: puts "do_test $tname-1.2 \173"
135: puts " db eval \173"
136: puts " SELECT count(*) FROM t1"
137: puts " \175"
138: puts "\175 {[llength $nums1]}"
139:
140: proc maketest {tnum sql answer} {
141: puts "do_test $::tname-$tnum \173"
142: puts " db eval \173"
143: puts " $sql"
144: puts " \175"
145: puts "\175 {$answer}"
146: }
147:
148: set ans {}
149: foreach r [sort $all_rowid] {
150: lappend ans $r $t1ra($r) $t1rx($r)
151: }
152: maketest 1.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans
153: maketest 1.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans
154:
155: set ans {}
156: foreach r [reverse [sort $all_rowid]] {
157: lappend ans $r $t1ra($r) $t1rx($r)
158: }
159: maketest 1.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans
160: maketest 1.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans
161:
162: set ans {}
163: foreach a [sort $all_a] {
164: set r $t1ar($a)
165: lappend ans $r $a $t1rx($r)
166: }
167: maketest 1.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans
168: maketest 1.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans
169:
170: set ans {}
171: foreach a [reverse [sort $all_a]] {
172: set r $t1ar($a)
173: lappend ans $r $a $t1rx($r)
174: }
175: maketest 1.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans
176: maketest 1.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans
177:
178: set ans {}
179: foreach x [sort $all_x] {
180: set r $t1xr($x)
181: lappend ans $r $t1ra($r) $x
182: }
183: maketest 1.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans
184: maketest 1.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans
185:
186: set ans {}
187: foreach x [reverse [sort $all_x]] {
188: set r $t1xr($x)
189: lappend ans $r $t1ra($r) $x
190: }
191: maketest 1.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans
192: maketest 1.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans
193:
194: maketest 2.1 {UPDATE t1 SET rowid=a, a=rowid} {}
195:
196: set ans {}
197: foreach r [sort $all_rowid] {
198: lappend ans $r $t1ra($r) $t1rx($r)
199: }
200: maketest 2.3 {SELECT a, rowid, x FROM t1 ORDER BY +a} $ans
201: maketest 2.4 {SELECT a, rowid, x FROM t1 ORDER BY a} $ans
202:
203: set ans {}
204: foreach r [reverse [sort $all_rowid]] {
205: lappend ans $r $t1ra($r) $t1rx($r)
206: }
207: maketest 2.5 {SELECT a, rowid, x FROM t1 ORDER BY +a DESC} $ans
208: maketest 2.6 {SELECT a, rowid, x FROM t1 ORDER BY a DESC} $ans
209:
210: set ans {}
211: foreach a [sort $all_a] {
212: set r $t1ar($a)
213: lappend ans $r $a $t1rx($r)
214: }
215: maketest 2.7 {SELECT a, rowid, x FROM t1 ORDER BY +rowid} $ans
216: maketest 2.8 {SELECT a, rowid, x FROM t1 ORDER BY rowid} $ans
217:
218: set ans {}
219: foreach a [reverse [sort $all_a]] {
220: set r $t1ar($a)
221: lappend ans $r $a $t1rx($r)
222: }
223: maketest 2.9 {SELECT a, rowid, x FROM t1 ORDER BY +rowid DESC} $ans
224: maketest 2.10 {SELECT a, rowid, x FROM t1 ORDER BY rowid DESC} $ans
225:
226: set ans {}
227: foreach x [sort $all_x] {
228: set r $t1xr($x)
229: lappend ans $r $t1ra($r) $x
230: }
231: maketest 2.11 {SELECT a, rowid, x FROM t1 ORDER BY +x} $ans
232: maketest 2.12 {SELECT a, rowid, x FROM t1 ORDER BY x} $ans
233:
234: set ans {}
235: foreach x [reverse [sort $all_x]] {
236: set r $t1xr($x)
237: lappend ans $r $t1ra($r) $x
238: }
239: maketest 2.13 {SELECT a, rowid, x FROM t1 ORDER BY +x DESC} $ans
240: maketest 2.14 {SELECT a, rowid, x FROM t1 ORDER BY x DESC} $ans
241:
242: maketest 3.1 {UPDATE t1 SET rowid=a, a=rowid} {}
243: maketest 3.2 {ALTER TABLE t1 ADD COLUMN z; UPDATE t1 SET z=zeroblob(600)} {}
244:
245: set ans {}
246: foreach r [sort $all_rowid] {
247: lappend ans $r $t1ra($r) $t1rx($r)
248: }
249: maketest 3.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans
250: maketest 3.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans
251:
252: set ans {}
253: foreach r [reverse [sort $all_rowid]] {
254: lappend ans $r $t1ra($r) $t1rx($r)
255: }
256: maketest 3.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans
257: maketest 3.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans
258:
259: set ans {}
260: foreach a [sort $all_a] {
261: set r $t1ar($a)
262: lappend ans $r $a $t1rx($r)
263: }
264: maketest 3.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans
265: maketest 3.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans
266:
267: set ans {}
268: foreach a [reverse [sort $all_a]] {
269: set r $t1ar($a)
270: lappend ans $r $a $t1rx($r)
271: }
272: maketest 3.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans
273: maketest 3.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans
274:
275: set ans {}
276: foreach x [sort $all_x] {
277: set r $t1xr($x)
278: lappend ans $r $t1ra($r) $x
279: }
280: maketest 3.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans
281: maketest 3.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans
282:
283: set ans {}
284: foreach x [reverse [sort $all_x]] {
285: set r $t1xr($x)
286: lappend ans $r $t1ra($r) $x
287: }
288: maketest 3.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans
289: maketest 3.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans
290:
291:
292: maketest 4.1 {UPDATE t1 SET rowid=a, a=rowid, x=z, z=x} {}
293:
294: set ans {}
295: foreach r [sort $all_rowid] {
296: lappend ans $r $t1ra($r) $t1rx($r)
297: }
298: maketest 4.3 {SELECT a, rowid, z FROM t1 ORDER BY +a} $ans
299: maketest 4.4 {SELECT a, rowid, z FROM t1 ORDER BY a} $ans
300:
301: set ans {}
302: foreach r [reverse [sort $all_rowid]] {
303: lappend ans $r $t1ra($r) $t1rx($r)
304: }
305: maketest 4.5 {SELECT a, rowid, z FROM t1 ORDER BY +a DESC} $ans
306: maketest 4.6 {SELECT a, rowid, z FROM t1 ORDER BY a DESC} $ans
307:
308: set ans {}
309: foreach a [sort $all_a] {
310: set r $t1ar($a)
311: lappend ans $r $a $t1rx($r)
312: }
313: maketest 4.7 {SELECT a, rowid, z FROM t1 ORDER BY +rowid} $ans
314: maketest 4.8 {SELECT a, rowid, z FROM t1 ORDER BY rowid} $ans
315:
316: set ans {}
317: foreach a [reverse [sort $all_a]] {
318: set r $t1ar($a)
319: lappend ans $r $a $t1rx($r)
320: }
321: maketest 4.9 {SELECT a, rowid, z FROM t1 ORDER BY +rowid DESC} $ans
322: maketest 4.10 {SELECT a, rowid, z FROM t1 ORDER BY rowid DESC} $ans
323:
324: set ans {}
325: foreach x [sort $all_x] {
326: set r $t1xr($x)
327: lappend ans $r $t1ra($r) $x
328: }
329: maketest 4.11 {SELECT a, rowid, z FROM t1 ORDER BY +z} $ans
330: maketest 4.12 {SELECT a, rowid, z FROM t1 ORDER BY z} $ans
331:
332: set ans {}
333: foreach x [reverse [sort $all_x]] {
334: set r $t1xr($x)
335: lappend ans $r $t1ra($r) $x
336: }
337: maketest 4.13 {SELECT a, rowid, z FROM t1 ORDER BY +z DESC} $ans
338: maketest 4.14 {SELECT a, rowid, z FROM t1 ORDER BY z DESC} $ans
339:
340: puts {finish_test}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>