1*1da57d55SToomas Soome# 27c478bd9Sstevel@tonic-gate# 2002 December 03 37c478bd9Sstevel@tonic-gate# 47c478bd9Sstevel@tonic-gate# The author disclaims copyright to this source code. In place of 57c478bd9Sstevel@tonic-gate# a legal notice, here is a blessing: 67c478bd9Sstevel@tonic-gate# 77c478bd9Sstevel@tonic-gate# May you do good and not evil. 87c478bd9Sstevel@tonic-gate# May you find forgiveness for yourself and forgive others. 97c478bd9Sstevel@tonic-gate# May you share freely, never taking more than you give. 107c478bd9Sstevel@tonic-gate# 117c478bd9Sstevel@tonic-gate#*********************************************************************** 127c478bd9Sstevel@tonic-gate# This file implements regression tests for SQLite library. The 137c478bd9Sstevel@tonic-gate# focus of this script is btree database backend 147c478bd9Sstevel@tonic-gate# 15*1da57d55SToomas Soome# This file focuses on testing the sqliteBtreeNext() and 167c478bd9Sstevel@tonic-gate# sqliteBtreePrevious() procedures and making sure they are able 177c478bd9Sstevel@tonic-gate# to step through an entire table from either direction. 187c478bd9Sstevel@tonic-gate# 197c478bd9Sstevel@tonic-gate# $Id: btree4.test,v 1.1 2002/12/04 13:40:27 drh Exp $ 207c478bd9Sstevel@tonic-gate 217c478bd9Sstevel@tonic-gate 227c478bd9Sstevel@tonic-gateset testdir [file dirname $argv0] 237c478bd9Sstevel@tonic-gatesource $testdir/tester.tcl 247c478bd9Sstevel@tonic-gate 257c478bd9Sstevel@tonic-gateif {[info commands btree_open]!=""} { 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gate# Open a test database. 287c478bd9Sstevel@tonic-gate# 297c478bd9Sstevel@tonic-gatefile delete -force test1.bt 307c478bd9Sstevel@tonic-gatefile delete -force test1.bt-journal 317c478bd9Sstevel@tonic-gateset b1 [btree_open test1.bt] 327c478bd9Sstevel@tonic-gatebtree_begin_transaction $::b1 337c478bd9Sstevel@tonic-gate 347c478bd9Sstevel@tonic-gateset data {abcdefghijklmnopqrstuvwxyz0123456789} 357c478bd9Sstevel@tonic-gateappend data $data 367c478bd9Sstevel@tonic-gateappend data $data 377c478bd9Sstevel@tonic-gateappend data $data 387c478bd9Sstevel@tonic-gateappend data $data 397c478bd9Sstevel@tonic-gate 407c478bd9Sstevel@tonic-gateforeach N {10 100 1000} { 417c478bd9Sstevel@tonic-gate btree_clear_table $::b1 2 427c478bd9Sstevel@tonic-gate set ::c1 [btree_cursor $::b1 2 1] 437c478bd9Sstevel@tonic-gate do_test btree4-$N.1 { 447c478bd9Sstevel@tonic-gate for {set i 1} {$i<=$N} {incr i} { 457c478bd9Sstevel@tonic-gate btree_insert $::c1 [format k-%05d $i] $::data-$i 467c478bd9Sstevel@tonic-gate } 477c478bd9Sstevel@tonic-gate btree_first $::c1 487c478bd9Sstevel@tonic-gate btree_key $::c1 497c478bd9Sstevel@tonic-gate } {k-00001} 507c478bd9Sstevel@tonic-gate do_test btree4-$N.2 { 517c478bd9Sstevel@tonic-gate btree_data $::c1 527c478bd9Sstevel@tonic-gate } $::data-1 537c478bd9Sstevel@tonic-gate for {set i 2} {$i<=$N} {incr i} { 547c478bd9Sstevel@tonic-gate do_test btree-$N.3.$i.1 { 557c478bd9Sstevel@tonic-gate btree_next $::c1 567c478bd9Sstevel@tonic-gate } 0 577c478bd9Sstevel@tonic-gate do_test btree-$N.3.$i.2 { 587c478bd9Sstevel@tonic-gate btree_key $::c1 597c478bd9Sstevel@tonic-gate } [format k-%05d $i] 607c478bd9Sstevel@tonic-gate do_test btree-$N.3.$i.3 { 617c478bd9Sstevel@tonic-gate btree_data $::c1 627c478bd9Sstevel@tonic-gate } $::data-$i 637c478bd9Sstevel@tonic-gate } 647c478bd9Sstevel@tonic-gate do_test btree4-$N.4 { 657c478bd9Sstevel@tonic-gate btree_next $::c1 667c478bd9Sstevel@tonic-gate } 1 677c478bd9Sstevel@tonic-gate do_test btree4-$N.5 { 687c478bd9Sstevel@tonic-gate btree_last $::c1 697c478bd9Sstevel@tonic-gate } 0 707c478bd9Sstevel@tonic-gate do_test btree4-$N.6 { 717c478bd9Sstevel@tonic-gate btree_key $::c1 727c478bd9Sstevel@tonic-gate } [format k-%05d $N] 737c478bd9Sstevel@tonic-gate do_test btree4-$N.7 { 747c478bd9Sstevel@tonic-gate btree_data $::c1 757c478bd9Sstevel@tonic-gate } $::data-$N 767c478bd9Sstevel@tonic-gate for {set i [expr {$N-1}]} {$i>=1} {incr i -1} { 777c478bd9Sstevel@tonic-gate do_test btree4-$N.8.$i.1 { 787c478bd9Sstevel@tonic-gate btree_prev $::c1 797c478bd9Sstevel@tonic-gate } 0 807c478bd9Sstevel@tonic-gate do_test btree4-$N.8.$i.2 { 817c478bd9Sstevel@tonic-gate btree_key $::c1 827c478bd9Sstevel@tonic-gate } [format k-%05d $i] 837c478bd9Sstevel@tonic-gate do_test btree4-$N.8.$i.3 { 847c478bd9Sstevel@tonic-gate btree_data $::c1 857c478bd9Sstevel@tonic-gate } $::data-$i 867c478bd9Sstevel@tonic-gate } 877c478bd9Sstevel@tonic-gate do_test btree4-$N.9 { 887c478bd9Sstevel@tonic-gate btree_prev $::c1 897c478bd9Sstevel@tonic-gate } 1 907c478bd9Sstevel@tonic-gate btree_close_cursor $::c1 917c478bd9Sstevel@tonic-gate} 927c478bd9Sstevel@tonic-gate 93*1da57d55SToomas Soomebtree_rollback $::b1 947c478bd9Sstevel@tonic-gatebtree_pager_ref_dump $::b1 957c478bd9Sstevel@tonic-gatebtree_close $::b1 967c478bd9Sstevel@tonic-gate 977c478bd9Sstevel@tonic-gate} ;# end if( not mem: and has pager_open command ); 987c478bd9Sstevel@tonic-gate 997c478bd9Sstevel@tonic-gatefinish_test 100