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.2 2006/01/03 00:33:50 drh Exp $ 15# 16 17set testdir [file dirname $argv0] 18source $testdir/tester.tcl 19 20proc 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 37do_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} {} 43do_test bindxfer-1.2 { 44 sqlite3_bind_parameter_count $VM1 45} 3 46do_test bindxfer-1.3 { 47 set VM2 [sqlite3_prepare $DB {SELECT ?, ?, ?} -1 TAIL] 48 set TAIL 49} {} 50do_test bindxfer-1.4 { 51 sqlite3_bind_parameter_count $VM2 52} 3 53do_test bindxfer-1.5 { 54 sqlite_bind $VM1 1 one normal 55 set sqlite_static_bind_value two 56 sqlite_bind $VM1 2 {} static 57 sqlite_bind $VM1 3 {} null 58 sqlite3_transfer_bindings $VM1 $VM2 59 sqlite_step $VM1 VALUES COLNAMES 60} SQLITE_ROW 61do_test bindxfer-1.6 { 62 set VALUES 63} {{} {} {}} 64do_test bindxfer-1.7 { 65 sqlite_step $VM2 VALUES COLNAMES 66} SQLITE_ROW 67do_test bindxfer-1.8 { 68 set VALUES 69} {one two {}} 70catch {sqlite3_finalize $VM1} 71catch {sqlite3_finalize $VM2} 72 73finish_test 74