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: btree4rb.test,v 1.1 2003/04/20 23:45:23 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-gateset b1 [btree_open :memory:]
307c478bd9Sstevel@tonic-gatebtree_begin_transaction $::b1
317c478bd9Sstevel@tonic-gate
327c478bd9Sstevel@tonic-gateset data {abcdefghijklmnopqrstuvwxyz0123456789}
337c478bd9Sstevel@tonic-gateappend data $data
347c478bd9Sstevel@tonic-gateappend data $data
357c478bd9Sstevel@tonic-gateappend data $data
367c478bd9Sstevel@tonic-gateappend data $data
377c478bd9Sstevel@tonic-gate
387c478bd9Sstevel@tonic-gateforeach N {10 100 1000} {
397c478bd9Sstevel@tonic-gate  btree_clear_table $::b1 2
407c478bd9Sstevel@tonic-gate  set ::c1 [btree_cursor $::b1 2 1]
417c478bd9Sstevel@tonic-gate  do_test btree4rb-$N.1 {
427c478bd9Sstevel@tonic-gate    for {set i 1} {$i<=$N} {incr i} {
437c478bd9Sstevel@tonic-gate      btree_insert $::c1 [format k-%05d $i] $::data-$i
447c478bd9Sstevel@tonic-gate    }
457c478bd9Sstevel@tonic-gate    btree_first $::c1
467c478bd9Sstevel@tonic-gate    btree_key $::c1
477c478bd9Sstevel@tonic-gate  } {k-00001}
487c478bd9Sstevel@tonic-gate  do_test btree4rb-$N.2 {
497c478bd9Sstevel@tonic-gate    btree_data $::c1
507c478bd9Sstevel@tonic-gate  } $::data-1
517c478bd9Sstevel@tonic-gate  for {set i 2} {$i<=$N} {incr i} {
527c478bd9Sstevel@tonic-gate    do_test btree-$N.3.$i.1 {
537c478bd9Sstevel@tonic-gate      btree_next $::c1
547c478bd9Sstevel@tonic-gate    } 0
557c478bd9Sstevel@tonic-gate    do_test btree-$N.3.$i.2 {
567c478bd9Sstevel@tonic-gate      btree_key $::c1
577c478bd9Sstevel@tonic-gate    } [format k-%05d $i]
587c478bd9Sstevel@tonic-gate    do_test btree-$N.3.$i.3 {
597c478bd9Sstevel@tonic-gate      btree_data $::c1
607c478bd9Sstevel@tonic-gate    } $::data-$i
617c478bd9Sstevel@tonic-gate  }
627c478bd9Sstevel@tonic-gate  do_test btree4rb-$N.4 {
637c478bd9Sstevel@tonic-gate    btree_next $::c1
647c478bd9Sstevel@tonic-gate  } 1
657c478bd9Sstevel@tonic-gate  do_test btree4rb-$N.5 {
667c478bd9Sstevel@tonic-gate    btree_last $::c1
677c478bd9Sstevel@tonic-gate  } 0
687c478bd9Sstevel@tonic-gate  do_test btree4rb-$N.6 {
697c478bd9Sstevel@tonic-gate    btree_key $::c1
707c478bd9Sstevel@tonic-gate  } [format k-%05d $N]
717c478bd9Sstevel@tonic-gate  do_test btree4rb-$N.7 {
727c478bd9Sstevel@tonic-gate    btree_data $::c1
737c478bd9Sstevel@tonic-gate  } $::data-$N
747c478bd9Sstevel@tonic-gate  for {set i [expr {$N-1}]} {$i>=1} {incr i -1} {
757c478bd9Sstevel@tonic-gate    do_test btree4rb-$N.8.$i.1 {
767c478bd9Sstevel@tonic-gate      btree_prev $::c1
777c478bd9Sstevel@tonic-gate    } 0
787c478bd9Sstevel@tonic-gate    do_test btree4rb-$N.8.$i.2 {
797c478bd9Sstevel@tonic-gate      btree_key $::c1
807c478bd9Sstevel@tonic-gate    } [format k-%05d $i]
817c478bd9Sstevel@tonic-gate    do_test btree4rb-$N.8.$i.3 {
827c478bd9Sstevel@tonic-gate      btree_data $::c1
837c478bd9Sstevel@tonic-gate    } $::data-$i
847c478bd9Sstevel@tonic-gate  }
857c478bd9Sstevel@tonic-gate  do_test btree4rb-$N.9 {
867c478bd9Sstevel@tonic-gate    btree_prev $::c1
877c478bd9Sstevel@tonic-gate  } 1
887c478bd9Sstevel@tonic-gate  btree_close_cursor $::c1
897c478bd9Sstevel@tonic-gate}
907c478bd9Sstevel@tonic-gate
91*1da57d55SToomas Soomebtree_rollback $::b1
927c478bd9Sstevel@tonic-gatebtree_close $::b1
937c478bd9Sstevel@tonic-gate
947c478bd9Sstevel@tonic-gate} ;# end if( not mem: and has pager_open command );
957c478bd9Sstevel@tonic-gate
967c478bd9Sstevel@tonic-gatefinish_test
97