# 2004 Jan 14 # # 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 TCL interface to the # SQLite library. # # The focus of the tests in this file is the following interface: # # sqlite_commit_hook # # $Id: hook.test,v 1.5 2004/06/29 12:39:08 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test hook-1.2 { db commit_hook } {} do_test hook-3.1 { set commit_cnt 0 proc commit_hook {} { incr ::commit_cnt return 0 } db commit_hook ::commit_hook db commit_hook } {::commit_hook} do_test hook-3.2 { set commit_cnt } {0} do_test hook-3.3 { execsql { CREATE TABLE t2(a,b); } set commit_cnt } {1} do_test hook-3.4 { execsql { INSERT INTO t2 VALUES(1,2); INSERT INTO t2 SELECT a+1, b+1 FROM t2; INSERT INTO t2 SELECT a+2, b+2 FROM t2; } set commit_cnt } {4} do_test hook-3.5 { set commit_cnt {} proc commit_hook {} { set ::commit_cnt [execsql {SELECT * FROM t2}] return 0 } execsql { INSERT INTO t2 VALUES(5,6); } set commit_cnt } {1 2 2 3 3 4 4 5 5 6} do_test hook-3.6 { set commit_cnt {} proc commit_hook {} { set ::commit_cnt [execsql {SELECT * FROM t2}] return 1 } catchsql { INSERT INTO t2 VALUES(6,7); } } {1 {constraint failed}} do_test hook-3.7 { set ::commit_cnt } {1 2 2 3 3 4 4 5 5 6 6 7} do_test hook-3.8 { execsql {SELECT * FROM t2} } {1 2 2 3 3 4 4 5 5 6} # Test turnning off the commit hook # do_test hook-3.9 { db commit_hook {} set ::commit_cnt {} execsql { INSERT INTO t2 VALUES(7,8); } set ::commit_cnt } {} finish_test