summaryrefslogtreecommitdiff
path: root/usr/src/lib/libsqlite/test/btree3.test
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libsqlite/test/btree3.test')
-rw-r--r--usr/src/lib/libsqlite/test/btree3.test89
1 files changed, 89 insertions, 0 deletions
diff --git a/usr/src/lib/libsqlite/test/btree3.test b/usr/src/lib/libsqlite/test/btree3.test
new file mode 100644
index 0000000000..784759f176
--- /dev/null
+++ b/usr/src/lib/libsqlite/test/btree3.test
@@ -0,0 +1,89 @@
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+# 2001 November 22
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library. The
+# focus of this script is btree database backend
+#
+# In particular, this file tests a small part of the Delete logic
+# for the BTree backend. When a row is deleted from a table, the
+# cursor is suppose to be left pointing at either the previous or
+# next entry in that table. If the cursor is left pointing at the
+# next entry, then the next Next operation is ignored. So the
+# sequence of operations (Delete, Next) should always leave the
+# cursor pointing at the first entry past the one that was deleted.
+# This test is designed to verify that behavior.
+#
+# $Id: btree3.test,v 1.2 2002/12/04 13:40:27 drh Exp $
+
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+if {[info commands btree_open]!=""} {
+
+# Open a test database.
+#
+file delete -force test1.bt
+file delete -force test1.bt-journal
+set b1 [btree_open test1.bt]
+btree_begin_transaction $::b1
+
+# Insert a few one records
+#
+set data {abcdefghijklmnopqrstuvwxyz0123456789}
+append data $data
+append data $data
+append data $data
+append data $data
+for {set k 2} {$k<=10} {incr k} {
+ for {set j 1} {$j<=$k} {incr j} {
+ set jkey [format %02d $j]
+ btree_clear_table $::b1 2
+ set ::c1 [btree_cursor $::b1 2 1]
+ for {set i 1} {$i<=$k} {incr i} {
+ set key [format %02d $i]
+ do_test btree3-$k.$j.1.$i {
+ btree_insert $::c1 $::key $::data
+ } {}
+ # btree_tree_dump $::b1 2
+ }
+ do_test btree3-$k.$j.2 {
+ btree_move_to $::c1 $::jkey
+ btree_key $::c1
+ } $::jkey
+ do_test btree3-$k.$j.3 {
+ btree_delete $::c1
+ } {}
+ if {$j<$k} {
+ do_test btree3-$k.$j.4 {
+ btree_next $::c1
+ btree_key $::c1
+ } [format %02d [expr $j+1]]
+ }
+ if {$j>1} {
+ do_test btree3-$k.$j.5 {
+ btree_prev $::c1
+ btree_key $::c1
+ } [format %02d [expr $j-1]]
+ }
+ btree_close_cursor $::c1
+ }
+}
+
+btree_rollback $::b1
+btree_pager_ref_dump $::b1
+btree_close $::b1
+
+} ;# end if( not mem: and has pager_open command );
+
+finish_test