diff --git a/testing/all.test b/testing/all.test index b6e1148f9..d1639b76b 100755 --- a/testing/all.test +++ b/testing/all.test @@ -37,3 +37,4 @@ source $testdir/create_table.test source $testdir/collate.test source $testdir/values.test source $testdir/integrity_check.test +source $testdir/rollback.test diff --git a/testing/rollback.test b/testing/rollback.test new file mode 100755 index 000000000..1a050d105 --- /dev/null +++ b/testing/rollback.test @@ -0,0 +1,56 @@ +#!/usr/bin/env tclsh +set testdir [file dirname $argv0] +source $testdir/tester.tcl + + +do_execsql_test_on_specific_db {:memory:} simple-rollback { + create table t (x); + insert into t values (1); + begin; + insert into t values (2); + rollback; + select * from t; +} {1} + +do_execsql_test_on_specific_db {:memory:} simple-rollback-2 { + create table t (x); + begin; + insert into t values (1); + insert into t values (2); + rollback; + select * from t; +} {} + + +do_execsql_test_on_specific_db {:memory:} rollback-after-update { + create table t (x); + insert into t values (1); + insert into t values (2); + begin; + update t set x = x + 10; + rollback; + select * from t; +} {1 2} + +do_execsql_test_on_specific_db {:memory:} rollback-after-delete { + create table t (x); + insert into t values (1); + insert into t values (2); + insert into t values (3); + begin; + delete from t where x = 2; + rollback; + select * from t order by x; +} {1 2 3} + +do_execsql_test_on_specific_db {:memory:} rollback-mixed-operations { + create table t (x); + insert into t values (1); + insert into t values (2); + begin; + insert into t values (3); + update t set x = x + 10 where x = 1; + delete from t where x = 2; + rollback; + select * from t order by x; +} {1 2}