blob: d5a462fe33e44f0e7fecf26576656d10d5ea70b2 [file] [log] [blame]
dand2199f02010-08-27 17:48:52 +00001# 2010 August 27
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. The
12# focus of this file is testing that destructor functions associated
13# with functions created using sqlite3_create_function_v2() is
14# correctly invoked.
15#
16set testdir [file dirname $argv0]
17source $testdir/tester.tcl
18
19
danda6e42a2011-07-04 06:52:15 +000020ifcapable utf16 {
21 do_test func3-1.1 {
22 set destroyed 0
23 proc destroy {} { set ::destroyed 1 }
24 sqlite3_create_function_v2 db f2 -1 any -func f2 -destroy destroy
25 set destroyed
26 } 0
27 do_test func3-1.2 {
28 sqlite3_create_function_v2 db f2 -1 utf8 -func f2
29 set destroyed
30 } 0
31 do_test func3-1.3 {
32 sqlite3_create_function_v2 db f2 -1 utf16le -func f2
33 set destroyed
34 } 0
35 do_test func3-1.4 {
36 sqlite3_create_function_v2 db f2 -1 utf16be -func f2
37 set destroyed
38 } 1
39}
dand2199f02010-08-27 17:48:52 +000040
41do_test func3-2.1 {
42 set destroyed 0
43 proc destroy {} { set ::destroyed 1 }
44 sqlite3_create_function_v2 db f3 -1 utf8 -func f3 -destroy destroy
45 set destroyed
46} 0
47do_test func3-2.2 {
48 sqlite3_create_function_v2 db f3 -1 utf8 -func f3
49 set destroyed
50} 1
51
52do_test func3-3.1 {
53 set destroyed 0
54 proc destroy {} { set ::destroyed 1 }
55 sqlite3_create_function_v2 db f3 -1 any -func f3 -destroy destroy
56 set destroyed
57} 0
58do_test func3-3.2 {
59 db close
60 set destroyed
61} 1
62
63sqlite3 db test.db
64do_test func3-4.1 {
65 set destroyed 0
66 set rc [catch {
67 sqlite3_create_function_v2 db f3 -1 any -func f3 -step f3 -destroy destroy
68 } msg]
69 list $rc $msg
70} {1 SQLITE_MISUSE}
dan635a6062010-08-28 19:09:29 +000071do_test func3-4.2 { set destroyed } 1
dand2199f02010-08-27 17:48:52 +000072
73finish_test