Home | History | Annotate | Download | only in test
      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