1# 2005 June 25 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 focus 12# of this file is testing the interaction of SQLite manifest types 13# with Tcl dual-representations. 14# 15# $Id: types3.test,v 1.8 2008/04/28 13:02:58 drh Exp $ 16# 17 18set testdir [file dirname $argv0] 19source $testdir/tester.tcl 20 21# A variable with only a string representation comes in as TEXT 22do_test types3-1.1 { 23 set V {} 24 append V x 25 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 26} {string text} 27 28# A variable with an integer representation comes in as INTEGER 29do_test types3-1.2 { 30 set V [expr {int(1+2)}] 31 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 32} {int integer} 33set V [expr {1+12345678012345}] 34if {[tcl_variable_type V]=="wideInt"} { 35 do_test types3-1.3 { 36 set V [expr {1+123456789012345}] 37 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 38 } {wideInt integer} 39} else { 40 do_test types3-1.3 { 41 set V [expr {1+123456789012345}] 42 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 43 } {int integer} 44} 45 46# A double variable comes in as REAL 47do_test types3-1.4 { 48 set V [expr {1.0+1}] 49 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 50} {double real} 51 52# A byte-array variable comes in a BLOB if it has no string representation 53# or as TEXT if there is a string representation. 54# 55do_test types3-1.5 { 56 set V [binary format a3 abc] 57 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 58} {bytearray blob} 59do_test types3-1.6 { 60 set V "abc" 61 binary scan $V a3 x 62 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 63} {bytearray text} 64 65# Check to make sure return values are of the right types. 66# 67ifcapable bloblit { 68 do_test types3-2.1 { 69 set V [db one {SELECT x'616263'}] 70 tcl_variable_type V 71 } bytearray 72} 73do_test types3-2.2 { 74 set V [db one {SELECT 123}] 75 tcl_variable_type V 76} int 77set Vx [expr {1+wide(123456789123456)}] 78do_test types3-2.3 { 79 set V [db one {SELECT 1234567890123456}] 80 tcl_variable_type V 81} [tcl_variable_type Vx] 82do_test types3-2.4.1 { 83 set V [db one {SELECT 1234567890123456.1}] 84 tcl_variable_type V 85} double 86do_test types3-2.4.2 { 87 set V [db one {SELECT 1234567890123.456}] 88 tcl_variable_type V 89} double 90do_test types3-2.5 { 91 set V [db one {SELECT '1234567890123456.0'}] 92 tcl_variable_type V 93} {} 94do_test types3-2.6 { 95 set V [db one {SELECT NULL}] 96 tcl_variable_type V 97} {} 98 99finish_test 100