OLD | NEW |
1 # 2008 May 23 | 1 # 2008 May 23 |
2 # | 2 # |
3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
5 # | 5 # |
6 # May you do good and not evil. | 6 # May you do good and not evil. |
7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
9 # | 9 # |
10 #*********************************************************************** | 10 #*********************************************************************** |
11 # | 11 # |
12 # Randomized test cases for the rtree extension. | 12 # Randomized test cases for the rtree extension. |
13 # | 13 # |
14 | 14 |
15 if {![info exists testdir]} { | 15 if {![info exists testdir]} { |
16 set testdir [file join [file dirname [info script]] .. .. test] | 16 set testdir [file join [file dirname [info script]] .. .. test] |
17 } | 17 } |
18 source $testdir/tester.tcl | 18 source $testdir/tester.tcl |
19 | 19 |
20 ifcapable !rtree { | 20 ifcapable !rtree { |
21 finish_test | 21 finish_test |
22 return | 22 return |
23 } | 23 } |
24 | 24 |
25 set ::NROW 2500 | 25 set ::NROW 2500 |
26 if {[info exists G(isquick)] && $G(isquick)} { | 26 if {[info exists G(isquick)] && $G(isquick)} { |
27 set ::NROW 250 | 27 set ::NROW 250 |
28 } | 28 } |
29 | 29 |
30 # Return a floating point number between -X and X. | 30 ifcapable !rtree_int_only { |
31 # | 31 # Return a floating point number between -X and X. |
32 proc rand {X} { | 32 # |
33 return [expr {int((rand()-0.5)*1024.0*$X)/512.0}] | 33 proc rand {X} { |
34 } | 34 return [expr {int((rand()-0.5)*1024.0*$X)/512.0}] |
35 | 35 } |
36 # Return a positive floating point number less than or equal to X | 36 |
37 # | 37 # Return a positive floating point number less than or equal to X |
38 proc randincr {X} { | 38 # |
39 while 1 { | 39 proc randincr {X} { |
40 set r [expr {int(rand()*$X*32.0)/32.0}] | 40 while 1 { |
41 if {$r>0.0} {return $r} | 41 set r [expr {int(rand()*$X*32.0)/32.0}] |
| 42 if {$r>0.0} {return $r} |
| 43 } |
| 44 } |
| 45 } else { |
| 46 # For rtree_int_only, return an number between -X and X. |
| 47 # |
| 48 proc rand {X} { |
| 49 return [expr {int((rand()-0.5)*2*$X)}] |
| 50 } |
| 51 |
| 52 # Return a positive integer less than or equal to X |
| 53 # |
| 54 proc randincr {X} { |
| 55 while 1 { |
| 56 set r [expr {int(rand()*$X)+1}] |
| 57 if {$r>0} {return $r} |
| 58 } |
42 } | 59 } |
43 } | 60 } |
44 | 61 |
45 # Scramble the $inlist into a random order. | 62 # Scramble the $inlist into a random order. |
46 # | 63 # |
47 proc scramble {inlist} { | 64 proc scramble {inlist} { |
48 set y {} | 65 set y {} |
49 foreach x $inlist { | 66 foreach x $inlist { |
50 lappend y [list [expr {rand()}] $x] | 67 lappend y [list [expr {rand()}] $x] |
51 } | 68 } |
52 set y [lsort $y] | 69 set y [lsort $y] |
53 set outlist {} | 70 set outlist {} |
54 foreach x $y { | 71 foreach x $y { |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 } | 242 } |
226 set where "WHERE [join [scramble $where] { AND }]" | 243 set where "WHERE [join [scramble $where] { AND }]" |
227 do_test rtree4-$nDim.2.$i.8 { | 244 do_test rtree4-$nDim.2.$i.8 { |
228 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] | 245 list $where [db eval "SELECT id FROM rx $where ORDER BY id"] |
229 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] | 246 } [list $where [db eval "SELECT id FROM bx $where ORDER BY id"]] |
230 } | 247 } |
231 | 248 |
232 } | 249 } |
233 | 250 |
234 finish_test | 251 finish_test |
OLD | NEW |