CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
boundary4.tcl341 linesDownload Raw Back to test
1puts {# 2008 December 112#3# The author disclaims copyright to this source code.  In place of4# 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 18set testdir [file dirname $argv0]19source $testdir/tester.tcl20 21# Many of the boundary tests depend on a working 64-bit implementation.22if {![working_64bit_int]} { finish_test; return }23ifcapable !altertable     { finish_test; return }24}25 26expr srand(0)27 28# Generate interesting boundary numbers29#30foreach x {31  0x7f32  0x7fff33  0x7fffff34  0x7fffffff35  0x7fffffffff36  0x7fffffffffff37  0x7fffffffffffff38  0x7fffffffffffffff39} {40  set x [expr {wide($x)}]41  set boundarynum($x) 142  set boundarynum([expr {$x+1}]) 143  set boundarynum([expr {-($x+1)}]) 144  set boundarynum([expr {-($x+2)}]) 145  set boundarynum([expr {$x+$x+1}]) 146  set boundarynum([expr {$x+$x+2}]) 147}48set x [expr {wide(127)}]49for {set i 127} {$i<=9} {incr i} {50  set boundarynum($x) 151  set boundarynum([expr {$x+1}]) 152  set x [expr {wide($x*128 + 127)}]53}54 55# Scramble the $inlist into a random order.56#57proc 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 $outlist68}69 70# A simple selection sort.  Not trying to be efficient.71#72proc 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 $mn79  set mx $mn80  while {1} {81    set valid 082    foreach x $inlist {83      if {$x>$mx && (!$valid || $mn>$x)} {84        set mn $x85        set valid 186      }87    }88    if {!$valid} break89    lappend outlist $mn90    set mx $mn91  }92  return $outlist93}94 95# Reverse the order of a list96#97proc 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 $outlist104}105 106set nums1 [scramble [array names boundarynum]]107set nums2 [scramble [array names boundarynum]]108 109set tname boundary4110puts "do_test $tname-1.1 \173"111puts "  db eval \173"112puts "    CREATE TABLE t1(a,x);"113set a 0114set all_rowid {}115set all_a {}116set all_x {}117foreach r $nums1 {118  incr a119  set t1ra($r) $a120  set t1ar($a) $r121  set x [format %08x%08x [expr {wide($r)>>32}] $r]122  set t1rx($r) $x123  set t1xr($x) $r124  puts "    INSERT INTO t1(oid,a,x) VALUES($r,$a,'$x');"125  lappend all_rowid $r126  lappend all_a $a127  lappend all_x $x128}129puts "    CREATE INDEX t1i1 ON t1(a);"130puts "    CREATE INDEX t1i2 ON t1(x);"131puts "  \175"132puts "\175 {}"133 134puts "do_test $tname-1.2 \173"135puts "  db eval \173"136puts "    SELECT count(*) FROM t1"137puts "  \175"138puts "\175 {[llength $nums1]}"139 140proc 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 148set ans {}149foreach r [sort $all_rowid] {150  lappend ans $r $t1ra($r) $t1rx($r)151}152maketest 1.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans153maketest 1.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans154 155set ans {}156foreach r [reverse [sort $all_rowid]] {157  lappend ans $r $t1ra($r) $t1rx($r)158}159maketest 1.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans160maketest 1.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans161 162set ans {}163foreach a [sort $all_a] {164  set r $t1ar($a)165  lappend ans $r $a $t1rx($r)166}167maketest 1.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans168maketest 1.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans169 170set ans {}171foreach a [reverse [sort $all_a]] {172  set r $t1ar($a)173  lappend ans $r $a $t1rx($r)174}175maketest 1.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans176maketest 1.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans177 178set ans {}179foreach x [sort $all_x] {180  set r $t1xr($x)181  lappend ans $r $t1ra($r) $x182}183maketest 1.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans184maketest 1.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans185 186set ans {}187foreach x [reverse [sort $all_x]] {188  set r $t1xr($x)189  lappend ans $r $t1ra($r) $x190}191maketest 1.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans192maketest 1.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans193 194maketest 2.1 {UPDATE t1 SET rowid=a, a=rowid} {}195 196set ans {}197foreach r [sort $all_rowid] {198  lappend ans $r $t1ra($r) $t1rx($r)199}200maketest 2.3 {SELECT a, rowid, x FROM t1 ORDER BY +a} $ans201maketest 2.4 {SELECT a, rowid, x FROM t1 ORDER BY a} $ans202 203set ans {}204foreach r [reverse [sort $all_rowid]] {205  lappend ans $r $t1ra($r) $t1rx($r)206}207maketest 2.5 {SELECT a, rowid, x FROM t1 ORDER BY +a DESC} $ans208maketest 2.6 {SELECT a, rowid, x FROM t1 ORDER BY a DESC} $ans209 210set ans {}211foreach a [sort $all_a] {212  set r $t1ar($a)213  lappend ans $r $a $t1rx($r)214}215maketest 2.7 {SELECT a, rowid, x FROM t1 ORDER BY +rowid} $ans216maketest 2.8 {SELECT a, rowid, x FROM t1 ORDER BY rowid} $ans217 218set ans {}219foreach a [reverse [sort $all_a]] {220  set r $t1ar($a)221  lappend ans $r $a $t1rx($r)222}223maketest 2.9 {SELECT a, rowid, x FROM t1 ORDER BY +rowid DESC} $ans224maketest 2.10 {SELECT a, rowid, x FROM t1 ORDER BY rowid DESC} $ans225 226set ans {}227foreach x [sort $all_x] {228  set r $t1xr($x)229  lappend ans $r $t1ra($r) $x230}231maketest 2.11 {SELECT a, rowid, x FROM t1 ORDER BY +x} $ans232maketest 2.12 {SELECT a, rowid, x FROM t1 ORDER BY x} $ans233 234set ans {}235foreach x [reverse [sort $all_x]] {236  set r $t1xr($x)237  lappend ans $r $t1ra($r) $x238}239maketest 2.13 {SELECT a, rowid, x FROM t1 ORDER BY +x DESC} $ans240maketest 2.14 {SELECT a, rowid, x FROM t1 ORDER BY x DESC} $ans241 242maketest 3.1 {UPDATE t1 SET rowid=a, a=rowid} {}243maketest 3.2 {ALTER TABLE t1 ADD COLUMN z; UPDATE t1 SET z=zeroblob(600)} {}244 245set ans {}246foreach r [sort $all_rowid] {247  lappend ans $r $t1ra($r) $t1rx($r)248}249maketest 3.3 {SELECT rowid, a, x FROM t1 ORDER BY +rowid} $ans250maketest 3.4 {SELECT rowid, a, x FROM t1 ORDER BY rowid} $ans251 252set ans {}253foreach r [reverse [sort $all_rowid]] {254  lappend ans $r $t1ra($r) $t1rx($r)255}256maketest 3.5 {SELECT rowid, a, x FROM t1 ORDER BY +rowid DESC} $ans257maketest 3.6 {SELECT rowid, a, x FROM t1 ORDER BY rowid DESC} $ans258 259set ans {}260foreach a [sort $all_a] {261  set r $t1ar($a)262  lappend ans $r $a $t1rx($r)263}264maketest 3.7 {SELECT rowid, a, x FROM t1 ORDER BY +a} $ans265maketest 3.8 {SELECT rowid, a, x FROM t1 ORDER BY a} $ans266 267set ans {}268foreach a [reverse [sort $all_a]] {269  set r $t1ar($a)270  lappend ans $r $a $t1rx($r)271}272maketest 3.9 {SELECT rowid, a, x FROM t1 ORDER BY +a DESC} $ans273maketest 3.10 {SELECT rowid, a, x FROM t1 ORDER BY a DESC} $ans274 275set ans {}276foreach x [sort $all_x] {277  set r $t1xr($x)278  lappend ans $r $t1ra($r) $x279}280maketest 3.11 {SELECT rowid, a, x FROM t1 ORDER BY +x} $ans281maketest 3.12 {SELECT rowid, a, x FROM t1 ORDER BY x} $ans282 283set ans {}284foreach x [reverse [sort $all_x]] {285  set r $t1xr($x)286  lappend ans $r $t1ra($r) $x287}288maketest 3.13 {SELECT rowid, a, x FROM t1 ORDER BY +x DESC} $ans289maketest 3.14 {SELECT rowid, a, x FROM t1 ORDER BY x DESC} $ans290 291 292maketest 4.1 {UPDATE t1 SET rowid=a, a=rowid, x=z, z=x} {}293 294set ans {}295foreach r [sort $all_rowid] {296  lappend ans $r $t1ra($r) $t1rx($r)297}298maketest 4.3 {SELECT a, rowid, z FROM t1 ORDER BY +a} $ans299maketest 4.4 {SELECT a, rowid, z FROM t1 ORDER BY a} $ans300 301set ans {}302foreach r [reverse [sort $all_rowid]] {303  lappend ans $r $t1ra($r) $t1rx($r)304}305maketest 4.5 {SELECT a, rowid, z FROM t1 ORDER BY +a DESC} $ans306maketest 4.6 {SELECT a, rowid, z FROM t1 ORDER BY a DESC} $ans307 308set ans {}309foreach a [sort $all_a] {310  set r $t1ar($a)311  lappend ans $r $a $t1rx($r)312}313maketest 4.7 {SELECT a, rowid, z FROM t1 ORDER BY +rowid} $ans314maketest 4.8 {SELECT a, rowid, z FROM t1 ORDER BY rowid} $ans315 316set ans {}317foreach a [reverse [sort $all_a]] {318  set r $t1ar($a)319  lappend ans $r $a $t1rx($r)320}321maketest 4.9 {SELECT a, rowid, z FROM t1 ORDER BY +rowid DESC} $ans322maketest 4.10 {SELECT a, rowid, z FROM t1 ORDER BY rowid DESC} $ans323 324set ans {}325foreach x [sort $all_x] {326  set r $t1xr($x)327  lappend ans $r $t1ra($r) $x328}329maketest 4.11 {SELECT a, rowid, z FROM t1 ORDER BY +z} $ans330maketest 4.12 {SELECT a, rowid, z FROM t1 ORDER BY z} $ans331 332set ans {}333foreach x [reverse [sort $all_x]] {334  set r $t1xr($x)335  lappend ans $r $t1ra($r) $x336}337maketest 4.13 {SELECT a, rowid, z FROM t1 ORDER BY +z DESC} $ans338maketest 4.14 {SELECT a, rowid, z FROM t1 ORDER BY z DESC} $ans339 340puts {finish_test}341