blob: 38c6e9c9aaa18f33db147a54b7ddfadfa4f4f404 [file] [log] [blame]
drhb97759e2004-06-29 11:26:59 +00001# 2004 Jun 29
2#
3# The author disclaims copyright to this source code. In place of
4# a legal notice, here is a blessing:
5#
6# May you do good and not evil.
7# May you find forgiveness for yourself and forgive others.
8# May you share freely, never taking more than you give.
9#
10#***********************************************************************
11# This file implements regression tests for SQLite library.
12#
13# This file implements tests for the "sqlite3_trace()" API.
14#
drhc16a03b2004-09-15 13:38:10 +000015# $Id: trace.test,v 1.3 2004/09/15 13:38:11 drh Exp $
drhb97759e2004-06-29 11:26:59 +000016
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
danielk197793cd0392004-06-30 02:35:51 +000020set ::stmtlist {}
drhb97759e2004-06-29 11:26:59 +000021do_test trace-1.1 {
22 set rc [catch {db trace 1 2 3} msg]
23 lappend rc $msg
24} {1 {wrong # args: should be "db trace ?CALLBACK?"}}
25proc trace_proc cmd {
26 lappend ::stmtlist [string trim $cmd]
27}
28do_test trace-1.2 {
29 db trace trace_proc
30 db trace
31} {trace_proc}
32do_test trace-1.3 {
33 execsql {
34 CREATE TABLE t1(a,b);
35 INSERT INTO t1 VALUES(1,2);
36 SELECT * FROM t1;
37 }
38} {1 2}
39do_test trace-1.4 {
40 set ::stmtlist
drhc16a03b2004-09-15 13:38:10 +000041} {{CREATE TABLE t1(a,b);} {INSERT INTO t1 VALUES(1,2);} {SELECT * FROM t1;}}
drhb97759e2004-06-29 11:26:59 +000042do_test trace-1.5 {
43 db trace {}
44 db trace
45} {}
46
drhc16a03b2004-09-15 13:38:10 +000047# If we prepare a statement and execute it multiple times, the trace
48# happens on each execution.
49#
50db close
51set DB [sqlite3 db test.db]
52do_test trace-2.1 {
53 set STMT [sqlite3_prepare $DB {INSERT INTO t1 VALUES(2,3)} -1 TAIL]
54 db trace trace_proc
55 proc trace_proc sql {
56 global TRACE_OUT
57 set TRACE_OUT $sql
58 }
59 set TRACE_OUT {}
60 sqlite3_step $STMT
61 set TRACE_OUT
62} {INSERT INTO t1 VALUES(2,3)}
63do_test trace-2.2 {
64 set TRACE_OUT {}
65 sqlite3_reset $STMT
66 set TRACE_OUT
67} {}
68do_test trace-2.3 {
69 sqlite3_step $STMT
70 set TRACE_OUT
71} {INSERT INTO t1 VALUES(2,3)}
72do_test trace-2.4 {
73 execsql {SELECT * FROM t1}
74} {1 2 2 3 2 3}
75do_test trace-2.5 {
76 set TRACE_OUT
77} {SELECT * FROM t1}
78
79
drhb97759e2004-06-29 11:26:59 +000080finish_test