# 2014 October 21 # # 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 contains tests for the RBU module. # if {![info exists testdir]} { set testdir [file join [file dirname [info script]] .. .. test] } source $testdir/tester.tcl set ::testprefix rbu7 # Test index: # # 1.*: That affinities are correctly applied to values within the # RBU database. # # 2.*: Tests for multi-column primary keys. # do_test 1.0 { execsql { CREATE TABLE t1(a INT PRIMARY KEY, b) WITHOUT ROWID; INSERT INTO t1 VALUES(1, 'abc'); INSERT INTO t1 VALUES(2, 'def'); } forcedelete rbu.db sqlite3 rbu rbu.db rbu eval { CREATE TABLE data_t1(a, b, rbu_control); INSERT INTO data_t1 VALUES('1', NULL, 1); } rbu close } {} do_test 1.1 { sqlite3rbu rbu test.db rbu.db while { [rbu step]=="SQLITE_OK" } {} rbu close } {SQLITE_DONE} sqlite3 db test.db do_execsql_test 1.2 { SELECT * FROM t1 } {2 def} #------------------------------------------------------------------------- # foreach {tn tbl} { 1 { CREATE TABLE t1(a, b, c, PRIMARY KEY(a, b)) WITHOUT ROWID } 2 { CREATE TABLE t1(a, b, c, PRIMARY KEY(a, b)) } } { reset_db execsql $tbl do_execsql_test 2.$tn.1 { CREATE INDEX t1c ON t1(c); INSERT INTO t1 VALUES(1, 1, 'a'); INSERT INTO t1 VALUES(1, 2, 'b'); INSERT INTO t1 VALUES(2, 1, 'c'); INSERT INTO t1 VALUES(2, 2, 'd'); } do_test 2.$tn.2 { forcedelete rbu.db sqlite3 rbu rbu.db execsql { CREATE TABLE data_t1(a, b, c, rbu_control); INSERT INTO data_t1 VALUES(3, 1, 'e', 0); INSERT INTO data_t1 VALUES(3, 2, 'f', 0); INSERT INTO data_t1 VALUES(1, 2, NULL, 1); INSERT INTO data_t1 VALUES(2, 1, 'X', '..x'); } rbu rbu close } {} do_test 2.$tn.3 { set rc "SQLITE_OK" while {$rc == "SQLITE_OK"} { sqlite3rbu rbu test.db rbu.db rbu step set rc [rbu close] } set rc } {SQLITE_DONE} do_execsql_test 2.$tn.1 { SELECT * FROM t1 ORDER BY a, b } { 1 1 a 2 1 X 2 2 d 3 1 e 3 2 f } } finish_test