aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/sqlite/unix/sqlite-3.5.1/test/loadext2.test
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/loadext2.test')
-rw-r--r--libraries/sqlite/unix/sqlite-3.5.1/test/loadext2.test143
1 files changed, 143 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/loadext2.test b/libraries/sqlite/unix/sqlite-3.5.1/test/loadext2.test
new file mode 100644
index 0000000..0c89600
--- /dev/null
+++ b/libraries/sqlite/unix/sqlite-3.5.1/test/loadext2.test
@@ -0,0 +1,143 @@
1# 2006 August 23
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 script is automatic extension loading and the
13# sqlite3_auto_extension() API.
14#
15# $Id: loadext2.test,v 1.2 2007/04/06 21:42:22 drh Exp $
16
17set testdir [file dirname $argv0]
18source $testdir/tester.tcl
19
20# Only run these tests if the approriate APIs are defined
21# in the system under test.
22#
23ifcapable !load_ext {
24 finish_test
25 return
26}
27if {[info command sqlite3_auto_extension_sqr]==""} {
28 finish_test
29 return
30}
31
32
33# None of the extension are loaded by default.
34#
35do_test loadext2-1.1 {
36 catchsql {
37 SELECT sqr(2)
38 }
39} {1 {no such function: sqr}}
40do_test loadext2-1.2 {
41 catchsql {
42 SELECT cube(2)
43 }
44} {1 {no such function: cube}}
45
46# Register auto-loaders. Still functions do not exist.
47#
48do_test loadext2-1.3 {
49 sqlite3_auto_extension_sqr
50 sqlite3_auto_extension_cube
51 catchsql {
52 SELECT sqr(2)
53 }
54} {1 {no such function: sqr}}
55do_test loadext2-1.4 {
56 catchsql {
57 SELECT cube(2)
58 }
59} {1 {no such function: cube}}
60
61
62# Functions do exist in a new database connection
63#
64do_test loadext2-1.5 {
65 sqlite3 db test.db
66 catchsql {
67 SELECT sqr(2)
68 }
69} {0 4.0}
70do_test loadext2-1.6 {
71 catchsql {
72 SELECT cube(2)
73 }
74} {0 8.0}
75
76
77# Reset extension auto loading. Existing extensions still exist.
78#
79do_test loadext2-1.7 {
80 sqlite3_reset_auto_extension
81 catchsql {
82 SELECT sqr(2)
83 }
84} {0 4.0}
85do_test loadext2-1.8 {
86 catchsql {
87 SELECT cube(2)
88 }
89} {0 8.0}
90
91
92# Register only the sqr() function.
93#
94do_test loadext2-1.9 {
95 sqlite3_auto_extension_sqr
96 sqlite3 db test.db
97 catchsql {
98 SELECT sqr(2)
99 }
100} {0 4.0}
101do_test loadext2-1.10 {
102 catchsql {
103 SELECT cube(2)
104 }
105} {1 {no such function: cube}}
106
107# Register only the cube() function.
108#
109do_test loadext2-1.11 {
110 sqlite3_reset_auto_extension
111 sqlite3_auto_extension_cube
112 sqlite3 db test.db
113 catchsql {
114 SELECT sqr(2)
115 }
116} {1 {no such function: sqr}}
117do_test loadext2-1.12 {
118 catchsql {
119 SELECT cube(2)
120 }
121} {0 8.0}
122
123# Register a broken entry point.
124#
125do_test loadext2-1.13 {
126 sqlite3_auto_extension_broken
127 set rc [catch {sqlite3 db test.db} errmsg]
128 lappend rc $errmsg
129} {1 {automatic extension loading failed: broken autoext!}}
130do_test loadext2-1.14 {
131 catchsql {
132 SELECT sqr(2)
133 }
134} {1 {no such function: sqr}}
135do_test loadext2-1.15 {
136 catchsql {
137 SELECT cube(2)
138 }
139} {0 8.0}
140
141
142sqlite3_reset_auto_extension
143finish_test