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.1.1.1 2012/02/21 17:04:16 misho Exp $
16:
17: set testdir [file dirname $argv0]
18: source $testdir/tester.tcl
19:
20: # Only run these tests if the approriate APIs are defined
21: # in the system under test.
22: #
23: ifcapable !load_ext {
24: finish_test
25: return
26: }
27: if {[info command sqlite3_auto_extension_sqr]==""} {
28: finish_test
29: return
30: }
31:
32:
33: # None of the extension are loaded by default.
34: #
35: do_test loadext2-1.1 {
36: catchsql {
37: SELECT sqr(2)
38: }
39: } {1 {no such function: sqr}}
40: do_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: #
48: do_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}}
55: do_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: #
64: do_test loadext2-1.5 {
65: sqlite3 db test.db
66: catchsql {
67: SELECT sqr(2)
68: }
69: } {0 4.0}
70: do_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: #
79: do_test loadext2-1.7 {
80: sqlite3_reset_auto_extension
81: catchsql {
82: SELECT sqr(2)
83: }
84: } {0 4.0}
85: do_test loadext2-1.8 {
86: catchsql {
87: SELECT cube(2)
88: }
89: } {0 8.0}
90:
91:
92: # Register only the sqr() function.
93: #
94: do_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}
101: do_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: #
109: do_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}}
117: do_test loadext2-1.12 {
118: catchsql {
119: SELECT cube(2)
120: }
121: } {0 8.0}
122:
123: # Register a broken entry point.
124: #
125: do_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!}}
130: do_test loadext2-1.14 {
131: catchsql {
132: SELECT sqr(2)
133: }
134: } {1 {no such function: sqr}}
135: do_test loadext2-1.15 {
136: catchsql {
137: SELECT cube(2)
138: }
139: } {0 8.0}
140:
141:
142: sqlite3_reset_auto_extension
143: autoinstall_test_functions
144: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>