1 # 2005 April 21 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 testing the sqlite_transfer_bindings() API. 13 # 14 # $Id: bindxfer.test,v 1.9 2009/04/17 11:56:28 drh Exp $ 15 # 16 17 set testdir [file dirname $argv0] 18 source $testdir/tester.tcl 19 20 proc sqlite_step {stmt VALS COLS} { 21 upvar #0 $VALS vals 22 upvar #0 $COLS cols 23 set vals [list] 24 set cols [list] 25 26 set rc [sqlite3_step $stmt] 27 for {set i 0} {$i < [sqlite3_column_count $stmt]} {incr i} { 28 lappend cols [sqlite3_column_name $stmt $i] 29 } 30 for {set i 0} {$i < [sqlite3_data_count $stmt]} {incr i} { 31 lappend vals [sqlite3_column_text $stmt $i] 32 } 33 34 return $rc 35 } 36 37 do_test bindxfer-1.1 { 38 set DB [sqlite3_connection_pointer db] 39 execsql {CREATE TABLE t1(a,b,c);} 40 set VM1 [sqlite3_prepare $DB {SELECT ?, ?, ?} -1 TAIL] 41 set TAIL 42 } {} 43 do_test bindxfer-1.2 { 44 sqlite3_bind_parameter_count $VM1 45 } 3 46 do_test bindxfer-1.3 { 47 set VM2 [sqlite3_prepare $DB {SELECT ?, ?, ?} -1 TAIL] 48 set TAIL 49 } {} 50 do_test bindxfer-1.4 { 51 sqlite3_bind_parameter_count $VM2 52 } 3 53 ifcapable deprecated { 54 do_test bindxfer-1.5 { 55 sqlite_bind $VM1 1 one normal 56 set sqlite_static_bind_value two 57 sqlite_bind $VM1 2 {} static 58 sqlite_bind $VM1 3 {} null 59 sqlite3_transfer_bindings $VM1 $VM2 60 sqlite_step $VM1 VALUES COLNAMES 61 } SQLITE_ROW 62 do_test bindxfer-1.6 { 63 set VALUES 64 } {{} {} {}} 65 do_test bindxfer-1.7 { 66 sqlite_step $VM2 VALUES COLNAMES 67 } SQLITE_ROW 68 do_test bindxfer-1.8 { 69 set VALUES 70 } {one two {}} 71 } 72 catch {sqlite3_finalize $VM1} 73 catch {sqlite3_finalize $VM2} 74 75 76 finish_test 77