169 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # 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}}
 | |
| 
 | |
| # Extensions loaders not currently registered
 | |
| #
 | |
| do_test loadext2-1.2.1 {
 | |
|   sqlite3_cancel_auto_extension_sqr
 | |
| } {0}
 | |
| do_test loadext2-1.2.2 {
 | |
|   sqlite3_cancel_auto_extension_sqr
 | |
| } {0}
 | |
| do_test loadext2-1.2.3 {
 | |
|   sqlite3_cancel_auto_extension_sqr
 | |
| } {0}
 | |
| 
 | |
| 
 | |
| # 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.1 {
 | |
|   sqlite3_cancel_auto_extension_sqr
 | |
| } {1}
 | |
| do_test loadext2-1.7.2 {
 | |
|   sqlite3_cancel_auto_extension_sqr
 | |
| } {0}
 | |
| do_test loadext2-1.7.3 {
 | |
|   sqlite3_cancel_auto_extension_cube
 | |
| } {1}
 | |
| do_test loadext2-1.7.4 {
 | |
|   sqlite3_cancel_auto_extension_cube
 | |
| } {0}
 | |
| do_test loadext2-1.7.5 {
 | |
|   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
 | 
