1*1da57d55SToomas Soome# 2c5c4113dSnw141292# 2004 Jan 14 3c5c4113dSnw141292# 4c5c4113dSnw141292# The author disclaims copyright to this source code. In place of 5c5c4113dSnw141292# a legal notice, here is a blessing: 6c5c4113dSnw141292# 7c5c4113dSnw141292# May you do good and not evil. 8c5c4113dSnw141292# May you find forgiveness for yourself and forgive others. 9c5c4113dSnw141292# May you share freely, never taking more than you give. 10c5c4113dSnw141292# 11c5c4113dSnw141292#*********************************************************************** 12c5c4113dSnw141292# This file implements regression tests for TCL interface to the 13c5c4113dSnw141292# SQLite library. 14c5c4113dSnw141292# 15c5c4113dSnw141292# The focus of the tests in this file is the following interface: 16c5c4113dSnw141292# 17c5c4113dSnw141292# sqlite_commit_hook 18c5c4113dSnw141292# 19c5c4113dSnw141292# $Id: hook.test,v 1.3 2004/01/15 02:44:03 drh Exp $ 20c5c4113dSnw141292 21c5c4113dSnw141292set testdir [file dirname $argv0] 22c5c4113dSnw141292source $testdir/tester.tcl 23c5c4113dSnw141292 24c5c4113dSnw141292do_test hook-1.2 { 25c5c4113dSnw141292 db commit_hook 26c5c4113dSnw141292} {} 27c5c4113dSnw141292 28c5c4113dSnw141292 29c5c4113dSnw141292do_test hook-3.1 { 30c5c4113dSnw141292 set commit_cnt 0 31c5c4113dSnw141292 proc commit_hook {} { 32c5c4113dSnw141292 incr ::commit_cnt 33c5c4113dSnw141292 return 0 34c5c4113dSnw141292 } 35c5c4113dSnw141292 db commit_hook ::commit_hook 36c5c4113dSnw141292 db commit_hook 37c5c4113dSnw141292} {::commit_hook} 38c5c4113dSnw141292do_test hook-3.2 { 39c5c4113dSnw141292 set commit_cnt 40c5c4113dSnw141292} {0} 41c5c4113dSnw141292do_test hook-3.3 { 42c5c4113dSnw141292 execsql { 43c5c4113dSnw141292 CREATE TABLE t2(a,b); 44c5c4113dSnw141292 } 45c5c4113dSnw141292 set commit_cnt 46c5c4113dSnw141292} {1} 47c5c4113dSnw141292do_test hook-3.4 { 48c5c4113dSnw141292 execsql { 49c5c4113dSnw141292 INSERT INTO t2 VALUES(1,2); 50c5c4113dSnw141292 INSERT INTO t2 SELECT a+1, b+1 FROM t2; 51c5c4113dSnw141292 INSERT INTO t2 SELECT a+2, b+2 FROM t2; 52c5c4113dSnw141292 } 53c5c4113dSnw141292 set commit_cnt 54c5c4113dSnw141292} {4} 55c5c4113dSnw141292do_test hook-3.5 { 56c5c4113dSnw141292 set commit_cnt {} 57c5c4113dSnw141292 proc commit_hook {} { 58c5c4113dSnw141292 set ::commit_cnt [execsql {SELECT * FROM t2}] 59c5c4113dSnw141292 return 0 60c5c4113dSnw141292 } 61c5c4113dSnw141292 execsql { 62c5c4113dSnw141292 INSERT INTO t2 VALUES(5,6); 63c5c4113dSnw141292 } 64c5c4113dSnw141292 set commit_cnt 65c5c4113dSnw141292} {1 2 2 3 3 4 4 5 5 6} 66c5c4113dSnw141292do_test hook-3.6 { 67c5c4113dSnw141292 set commit_cnt {} 68c5c4113dSnw141292 proc commit_hook {} { 69c5c4113dSnw141292 set ::commit_cnt [execsql {SELECT * FROM t2}] 70c5c4113dSnw141292 return 1 71c5c4113dSnw141292 } 72c5c4113dSnw141292 catchsql { 73c5c4113dSnw141292 INSERT INTO t2 VALUES(6,7); 74c5c4113dSnw141292 } 75c5c4113dSnw141292} {1 {constraint failed}} 76c5c4113dSnw141292do_test hook-3.7 { 77c5c4113dSnw141292 set commit_cnt 78c5c4113dSnw141292} {1 2 2 3 3 4 4 5 5 6 6 7} 79c5c4113dSnw141292do_test hook-3.8 { 80c5c4113dSnw141292 execsql {SELECT * FROM t2} 81c5c4113dSnw141292} {1 2 2 3 3 4 4 5 5 6} 82c5c4113dSnw141292 83c5c4113dSnw141292 84c5c4113dSnw141292finish_test 85