1# 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 208