⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vtab3.test

📁 sqlite-3.4.1,嵌入式数据库.是一个功能强大的开源数据库,给学习和研发以及小型公司的发展带来了全所未有的好处.
💻 TEST
字号:
# 2006 June 10## 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 file is the authorisation callback and virtual tables.## $Id: vtab3.test,v 1.2 2006/06/20 11:01:09 danielk1977 Exp $set testdir [file dirname $argv0]source $testdir/tester.tclifcapable !vtab||!auth {  finish_test  return}set ::auth_fail 0set ::auth_log [list]set ::auth_filter [list SQLITE_READ SQLITE_UPDATE SQLITE_SELECT SQLITE_PRAGMA]proc auth {code arg1 arg2 arg3 arg4} {  if {[lsearch $::auth_filter $code]>-1} {    return SQLITE_OK  }  lappend ::auth_log $code $arg1 $arg2 $arg3 $arg4  incr ::auth_fail -1  if {$::auth_fail == 0} {    return SQLITE_DENY  }  return SQLITE_OK}do_test vtab3-1.1 {  execsql {    CREATE TABLE elephant(      name VARCHAR(32),       color VARCHAR(16),       age INTEGER,       UNIQUE(name, color)    );  }} {}do_test vtab3-1.2 {  register_echo_module [sqlite3_connection_pointer db]  db authorizer ::auth  execsql {    CREATE VIRTUAL TABLE pachyderm USING echo(elephant);  }  set ::auth_log} [list \  SQLITE_INSERT        sqlite_master {}   main {} \  SQLITE_CREATE_VTABLE pachyderm     echo main {} \]do_test vtab3-1.3 {  set ::auth_log [list]  execsql {    DROP TABLE pachyderm;  }  set ::auth_log} [list \  SQLITE_DELETE        sqlite_master {}   main {} \  SQLITE_DROP_VTABLE   pachyderm     echo main {} \  SQLITE_DELETE        pachyderm     {}   main {} \  SQLITE_DELETE        sqlite_master {}   main {} \]do_test vtab3-1.4 {  set ::auth_fail 1  catchsql {    CREATE VIRTUAL TABLE pachyderm USING echo(elephant);  }} {1 {not authorized}}do_test vtab3-1.5 {  execsql {    SELECT name FROM sqlite_master WHERE type = 'table';  }} {elephant}do_test vtab3-1.5 {  set ::auth_fail 2  catchsql {    CREATE VIRTUAL TABLE pachyderm USING echo(elephant);  }} {1 {not authorized}}do_test vtab3-1.6 {  execsql {    SELECT name FROM sqlite_master WHERE type = 'table';  }} {elephant}do_test vtab3-1.5 {  set ::auth_fail 3  catchsql {    CREATE VIRTUAL TABLE pachyderm USING echo(elephant);  }} {0 {}}do_test vtab3-1.6 {  execsql {    SELECT name FROM sqlite_master WHERE type = 'table';  }} {elephant pachyderm}foreach i [list 1 2 3 4] {  set ::auth_fail $i  do_test vtab3-1.7.$i.1 {    set rc [catch {      execsql {DROP TABLE pachyderm;}    } msg]    if {$msg eq "authorization denied"} {set msg "not authorized"}    list $rc $msg  } {1 {not authorized}}  do_test vtab3-1.7.$i.2 {    execsql {      SELECT name FROM sqlite_master WHERE type = 'table';    }  } {elephant pachyderm}}do_test vtab3-1.8.1 {  set ::auth_fail 0  catchsql {    DROP TABLE pachyderm;  }} {0 {}}do_test vtab3-1.8.2 {  execsql {    SELECT name FROM sqlite_master WHERE type = 'table';  }} {elephant}finish_test

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -