Home | History | Annotate | Download | only in test
      1 # 2009 April 17
      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 # This file implements regression tests for SQLite library.  The
     13 # focus of this file is the code in rowhash.c.
     14 #
     15 # NB:  The rowhash.c module is no longer part of the source tree.  But
     16 # we might as well keep this test.
     17 #
     18 
     19 set testdir [file dirname $argv0]
     20 source $testdir/tester.tcl
     21 
     22 do_test rowhash-1.1 {
     23   execsql {
     24     CREATE TABLE t1(id INTEGER PRIMARY KEY, a, b, c);
     25     CREATE INDEX i1 ON t1(a);
     26     CREATE INDEX i2 ON t1(b);
     27     CREATE INDEX i3 ON t1(c);
     28   }
     29 } {}
     30 
     31 proc do_keyset_test {name lKey} {
     32   db transaction {
     33     execsql { DELETE FROM t1 }
     34     foreach key $lKey {
     35       execsql { INSERT OR IGNORE INTO t1 VALUES($key, 'a', 'b', 'c') }
     36     }
     37   }
     38   do_test $name {
     39     lsort -integer [execsql {
     40       SELECT id FROM t1 WHERE a = 'a' OR b = 'b' OR c = 'c';
     41     }]
     42   } [lsort -integer -unique $lKey]
     43 }
     44 
     45 do_keyset_test rowhash-2.1 {1 2 3}
     46 do_keyset_test rowhash-2.2 {0 1 2 3}
     47 do_keyset_test rowhash-2.3 {62 125 188}
     48 if {[working_64bit_int]} {
     49   expr srand(1)
     50   unset -nocomplain i L
     51   for {set i 4} {$i < 10} {incr i} {
     52     for {set j 0} {$j < 5000} {incr j} {
     53         lappend L [expr int(rand()*1000000000)]
     54     }
     55     do_keyset_test rowhash-2.$i $L
     56   }
     57 }
     58 
     59 finish_test
     60