/trunk/test/loadext2.test |
@@ -0,0 +1,144 @@ |
# 2006 August 23 |
# |
# The author disclaims copyright to this source code. In place of |
# a legal notice, here is a blessing: |
# |
# May you do good and not evil. |
# May you find forgiveness for yourself and forgive others. |
# May you share freely, never taking more than you give. |
# |
#*********************************************************************** |
# This file implements regression tests for SQLite library. The |
# focus of this script is automatic extension loading and the |
# sqlite3_auto_extension() API. |
# |
# $Id: loadext2.test,v 1.3 2008/03/19 16:08:54 drh Exp $ |
|
set testdir [file dirname $argv0] |
source $testdir/tester.tcl |
|
# Only run these tests if the approriate APIs are defined |
# in the system under test. |
# |
ifcapable !load_ext { |
finish_test |
return |
} |
if {[info command sqlite3_auto_extension_sqr]==""} { |
finish_test |
return |
} |
|
|
# None of the extension are loaded by default. |
# |
do_test loadext2-1.1 { |
catchsql { |
SELECT sqr(2) |
} |
} {1 {no such function: sqr}} |
do_test loadext2-1.2 { |
catchsql { |
SELECT cube(2) |
} |
} {1 {no such function: cube}} |
|
# Register auto-loaders. Still functions do not exist. |
# |
do_test loadext2-1.3 { |
sqlite3_auto_extension_sqr |
sqlite3_auto_extension_cube |
catchsql { |
SELECT sqr(2) |
} |
} {1 {no such function: sqr}} |
do_test loadext2-1.4 { |
catchsql { |
SELECT cube(2) |
} |
} {1 {no such function: cube}} |
|
|
# Functions do exist in a new database connection |
# |
do_test loadext2-1.5 { |
sqlite3 db test.db |
catchsql { |
SELECT sqr(2) |
} |
} {0 4.0} |
do_test loadext2-1.6 { |
catchsql { |
SELECT cube(2) |
} |
} {0 8.0} |
|
|
# Reset extension auto loading. Existing extensions still exist. |
# |
do_test loadext2-1.7 { |
sqlite3_reset_auto_extension |
catchsql { |
SELECT sqr(2) |
} |
} {0 4.0} |
do_test loadext2-1.8 { |
catchsql { |
SELECT cube(2) |
} |
} {0 8.0} |
|
|
# Register only the sqr() function. |
# |
do_test loadext2-1.9 { |
sqlite3_auto_extension_sqr |
sqlite3 db test.db |
catchsql { |
SELECT sqr(2) |
} |
} {0 4.0} |
do_test loadext2-1.10 { |
catchsql { |
SELECT cube(2) |
} |
} {1 {no such function: cube}} |
|
# Register only the cube() function. |
# |
do_test loadext2-1.11 { |
sqlite3_reset_auto_extension |
sqlite3_auto_extension_cube |
sqlite3 db test.db |
catchsql { |
SELECT sqr(2) |
} |
} {1 {no such function: sqr}} |
do_test loadext2-1.12 { |
catchsql { |
SELECT cube(2) |
} |
} {0 8.0} |
|
# Register a broken entry point. |
# |
do_test loadext2-1.13 { |
sqlite3_auto_extension_broken |
set rc [catch {sqlite3 db test.db} errmsg] |
lappend rc $errmsg |
} {1 {automatic extension loading failed: broken autoext!}} |
do_test loadext2-1.14 { |
catchsql { |
SELECT sqr(2) |
} |
} {1 {no such function: sqr}} |
do_test loadext2-1.15 { |
catchsql { |
SELECT cube(2) |
} |
} {0 8.0} |
|
|
sqlite3_reset_auto_extension |
autoinstall_test_functions |
finish_test |