diff -r 000000000000 -r bde4ae8d615e os/persistentdata/persistentstorage/sqlite3api/TEST/TclScript/loadext2.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/persistentdata/persistentstorage/sqlite3api/TEST/TclScript/loadext2.test Fri Jun 15 03:10:57 2012 +0200 @@ -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