gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/types3.test (about) 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 18 set testdir [file dirname $argv0] 19 source $testdir/tester.tcl 20 21 # A variable with only a string representation comes in as TEXT 22 do_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 29 do_test types3-1.2 { 30 set V [expr {int(1+2)}] 31 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 32 } {int integer} 33 set V [expr {1+12345678012345}] 34 if {[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 47 do_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 # 55 do_test types3-1.5 { 56 set V [binary format a3 abc] 57 concat [tcl_variable_type V] [execsql {SELECT typeof(:V)}] 58 } {bytearray blob} 59 do_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 # 67 ifcapable bloblit { 68 do_test types3-2.1 { 69 set V [db one {SELECT x'616263'}] 70 tcl_variable_type V 71 } bytearray 72 } 73 do_test types3-2.2 { 74 set V [db one {SELECT 123}] 75 tcl_variable_type V 76 } int 77 set Vx [expr {1+wide(123456789123456)}] 78 do_test types3-2.3 { 79 set V [db one {SELECT 1234567890123456}] 80 tcl_variable_type V 81 } [tcl_variable_type Vx] 82 do_test types3-2.4.1 { 83 set V [db one {SELECT 1234567890123456.1}] 84 tcl_variable_type V 85 } double 86 do_test types3-2.4.2 { 87 set V [db one {SELECT 1234567890123.456}] 88 tcl_variable_type V 89 } double 90 do_test types3-2.5 { 91 set V [db one {SELECT '1234567890123456.0'}] 92 tcl_variable_type V 93 } {} 94 do_test types3-2.6 { 95 set V [db one {SELECT NULL}] 96 tcl_variable_type V 97 } {} 98 99 finish_test