xref: /sqlite-3.40.0/test/func3.test (revision 3d403c71)
1# 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
20ifcapable 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}
40
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}
71do_test func3-4.2 { set destroyed } 1
72
73finish_test
74