| # 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.3 2004/01/15 02:44:03 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} |
| |
| |
| finish_test |