blob: 415724210ef6601ebe1b0661f9560577ad160451 [file] [log] [blame]
drhf5e7bb52008-02-18 14:47:33 +00001# 2008 February 18
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#
12# Unit testing of the Bitvec object.
13#
14# $Id: bitvec.test,v 1.1 2008/02/18 14:47:34 drh Exp $
15#
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
20#ifcapable !subquery {
21# finish_test
22# return
23#}
24
25do_test bitvec-1.1 {
26 set PTR [sqlite3BitvecCreate 4000]
27 for {set i 1} {$i<=4000} {incr i} {
28 if {$i%1000==999} continue
29 sqlite3BitvecSet $PTR $i
30 }
31 set r {}
32 for {set i 1} {$i<=4000} {incr i} {
33 if {![sqlite3BitvecTest $PTR $i]} {lappend r $i}
34 }
35 sqlite3BitvecDestroy $PTR
36 set r
37} {999 1999 2999 3999}
38do_test bitvec-1.2 {
39 set PTR [sqlite3BitvecCreate 4001]
40 for {set i 1} {$i<=4001} {incr i} {
41 if {$i%1000==999} continue
42 sqlite3BitvecSet $PTR $i
43 }
44 set r {}
45 for {set i 1} {$i<=4001} {incr i} {
46 if {![sqlite3BitvecTest $PTR $i]} {lappend r $i}
47 }
48 sqlite3BitvecDestroy $PTR
49 set r
50} {999 1999 2999 3999}
51do_test bitvec-1.3 {
52 set PTR [sqlite3BitvecCreate 40000]
53 for {set i 1} {$i<=40000} {incr i} {
54 if {$i%10000==9999} continue
55 sqlite3BitvecSet $PTR $i
56 }
57 set r {}
58 for {set i 1} {$i<=40000} {incr i} {
59 if {![sqlite3BitvecTest $PTR $i]} {lappend r $i}
60 }
61 sqlite3BitvecDestroy $PTR
62 set r
63} {9999 19999 29999 39999}
64do_test bitvec-1.4 {
65 set PTR [sqlite3BitvecCreate 2000000000]
66 for {set i 1000000} {$i<=1001000} {incr i} {
67 if {$i%1000==789} continue
68 sqlite3BitvecSet $PTR $i
69 }
70 set r {}
71 for {set i 1000000} {$i<=1001000} {incr i} {
72 if {![sqlite3BitvecTest $PTR $i]} {lappend r $i}
73 }
74 sqlite3BitvecDestroy $PTR
75 set r
76} {1000789}
77
78do_test bitvec-2.1 {
79 set PTR [sqlite3BitvecCreate 4000]
80 for {set i 1} {$i<=4000} {incr i 2} {
81 sqlite3BitvecSet $PTR $i
82 }
83 for {set i 1} {$i<=4000} {incr i} {
84 sqlite3BitvecClear $PTR $i
85 }
86 set r {}
87 for {set i 1} {$i<=4000} {incr i} {
88 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
89 }
90 sqlite3BitvecDestroy $PTR
91 set r
92} {}
93do_test bitvec-2.2 {
94 set PTR [sqlite3BitvecCreate 4001]
95 for {set i 1} {$i<=101} {incr i 2} {
96 sqlite3BitvecSet $PTR $i
97 }
98 for {set i 1} {$i<=99} {incr i} {
99 sqlite3BitvecClear $PTR $i
100 }
101 set r {}
102 for {set i 1} {$i<=4000} {incr i} {
103 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
104 }
105 sqlite3BitvecDestroy $PTR
106 set r
107} {101}
108do_test bitvec-2.3 {
109 set PTR [sqlite3BitvecCreate 4001]
110 for {set i 1} {$i<=101} {incr i} {
111 sqlite3BitvecSet $PTR $i
112 }
113 for {set i 1} {$i<=99} {incr i} {
114 sqlite3BitvecClear $PTR $i
115 }
116 set r {}
117 for {set i 1} {$i<=4000} {incr i} {
118 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
119 }
120 sqlite3BitvecDestroy $PTR
121 set r
122} {100 101}
123do_test bitvec-2.4 {
124 set PTR [sqlite3BitvecCreate 5000]
125 for {set i 1} {$i<=5000} {incr i} {
126 sqlite3BitvecSet $PTR $i
127 if {$i%1000!=456} {sqlite3BitvecClear $PTR $i}
128 }
129 set r {}
130 for {set i 1} {$i<=5000} {incr i} {
131 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
132 }
133 sqlite3BitvecDestroy $PTR
134 set r
135} {456 1456 2456 3456 4456}
136
137do_test bitvec-3.1 {
138 set PTR [sqlite3BitvecCreate 2000000000]
139 for {set i 2000000} {$i<=3000000} {incr i 100000} {
140 for {set j $i} {$j<=$i+50} {incr j} {
141 sqlite3BitvecSet $PTR $i
142 }
143 for {set j $i} {$j<=$i+50} {incr j} {
144 sqlite3BitvecClear $PTR $i
145 }
146 }
147 set r {}
148 for {set i 2000000} {$i<=3000000} {incr i} {
149 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
150 }
151 sqlite3BitvecDestroy $PTR
152 set r
153} {}
154do_test bitvec-3.2 {
155 set PTR [sqlite3BitvecCreate 200000]
156 for {set i 1000} {$i<=190000} {incr i 10000} {
157 for {set j $i} {$j<=$i+50} {incr j} {
158 sqlite3BitvecSet $PTR $i
159 }
160 for {set j $i} {$j<=$i+50} {incr j} {
161 sqlite3BitvecClear $PTR $i
162 }
163 }
164 set r {}
165 for {set i 1} {$i<=200000} {incr i} {
166 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
167 }
168 sqlite3BitvecDestroy $PTR
169 set r
170} {}
171do_test bitvec-3.3 {
172 set PTR [sqlite3BitvecCreate 200000]
173 for {set i 1000} {$i<=190000} {incr i 10000} {
174 for {set j $i} {$j<=$i+500} {incr j} {
175 sqlite3BitvecSet $PTR $i
176 }
177 for {set j $i} {$j<=$i+500} {incr j} {
178 sqlite3BitvecClear $PTR $i
179 }
180 }
181 set r {}
182 for {set i 1} {$i<=200000} {incr i} {
183 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
184 }
185 sqlite3BitvecDestroy $PTR
186 set r
187} {}
188do_test bitvec-3.4 {
189 set PTR [sqlite3BitvecCreate 2000]
190 for {set i 10} {$i<=1900} {incr i 100} {
191 for {set j $i} {$j<=$i+50} {incr j} {
192 sqlite3BitvecSet $PTR $i
193 }
194 for {set j $i} {$j<=$i+50} {incr j} {
195 sqlite3BitvecClear $PTR $i
196 }
197 }
198 set r {}
199 for {set i 1} {$i<=2000} {incr i} {
200 if {[sqlite3BitvecTest $PTR $i]} {lappend r $i}
201 }
202 sqlite3BitvecDestroy $PTR
203 set r
204} {}
205
206
207finish_test