1# 2013 March 20 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. 12# This particular file does testing of casting strings into numeric 13# values. 14# 15 16set testdir [file dirname $argv0] 17source $testdir/tester.tcl 18 19foreach enc {utf8 utf16le utf16be} { 20 do_test numcast-$enc.0 { 21 db close 22 sqlite3 db :memory: 23 db eval "PRAGMA encoding='$enc'" 24 set x [db eval {PRAGMA encoding}] 25 string map {- {}} [string tolower $x] 26 } $enc 27 foreach {idx str rval ival} { 28 1 12345.0 12345.0 12345 29 2 12345.0e0 12345.0 12345 30 3 -12345.0e0 -12345.0 -12345 31 4 -12345.25 -12345.25 -12345 32 5 { -12345.0} -12345.0 -12345 33 6 { 876xyz} 876.0 876 34 7 { 456ķ89} 456.0 456 35 8 { Ġ 321.5} 0.0 0 36 } { 37 do_test numcast-$enc.$idx.1 { 38 db eval {SELECT CAST($str AS real)} 39 } $rval 40 do_test numcast-$enc.$idx.2 { 41 db eval {SELECT CAST($str AS integer)} 42 } $ival 43 } 44} 45 46finish_test 47