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