AryaWu/sqlite
0
1# 2010 Sept 292#3# The author disclaims copyright to this source code. In place of4# 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 of12# this file is testing the SQLite routines used for converting between the13# various suported unicode encodings (UTF-8, UTF-16, UTF-16le and14# UTF-16be).15#16# $Id: enc4.test,v 1.0 2010/09/29 08:29:32 shaneh Exp $17 18set testdir [file dirname $argv0]19source $testdir/tester.tcl20 21# If UTF16 support is disabled, ignore the tests in this file22#23ifcapable {!utf16} {24 finish_test25 return26}27 28db close29 30# The three unicode encodings understood by SQLite.31set encodings [list UTF-8 UTF-16le UTF-16be]32 33# initial value to use in SELECT34set inits [list 1 1.0 1. 1e0]35 36# vals37set vals [list\38"922337203685477580792233720368547758079223372036854775807"\39"100000000000000000000000000000000000000000000000000000000"\40"1.0000000000000000000000000000000000000000000000000000000"\41]42 43set i 144foreach enc $encodings {45 46 forcedelete test.db47 sqlite3 db test.db48 db eval "PRAGMA encoding = \"$enc\""49 50 do_test enc4-$i.1 {51 db eval {PRAGMA encoding}52 } $enc53 54 set j 155 foreach init $inits {56 57 do_test enc4-$i.$j.2 {58 set S [sqlite3_prepare_v2 db "SELECT $init+?" -1 dummy]59 sqlite3_expired $S60 } {0}61 62 set k 163 foreach val $vals {64 for {set x 1} {$x<16} {incr x} {65 set part [expr $init + [string range $val 0 [expr $x-1]]]66 67 do_realnum_test enc4-$i.$j.$k.3.$x {68 sqlite3_reset $S69 sqlite3_bind_text $S 1 $val $x70 sqlite3_step $S71 sqlite3_column_text $S 072 } [list $part]73 74 do_realnum_test enc4-$i.$j.$k.4.$x {75 sqlite3_reset $S76 sqlite3_bind_text16 $S 1 [encoding convertto unicode $val] [expr $x*2]77 sqlite3_step $S78 sqlite3_column_text $S 079 } [list $part]80 }81 82 incr k83 }84 85 do_test enc4-$i.$j.5 {86 sqlite3_finalize $S87 } {SQLITE_OK}88 89 incr j90 }91 92 db close93 incr i94}95 96forcedelete test.db97sqlite3 db test.db98 99do_test enc4-4.1 {100 db eval "select 1+1."101} {2.0}102 103do_test enc4-4.2.1 {104 set S [sqlite3_prepare_v2 db "SELECT 1+1." -1 dummy]105 sqlite3_step $S106 sqlite3_column_text $S 0107} {2.0}108 109do_test enc4-4.2.2 {110 sqlite3_finalize $S111} {SQLITE_OK}112 113do_test enc4-4.3.1 {114 set S [sqlite3_prepare_v2 db "SELECT 1+?" -1 dummy]115 sqlite3_bind_text $S 1 "1." 2116 sqlite3_step $S117 sqlite3_column_text $S 0118} {2.0}119 120do_test enc4-4.3.2 {121 sqlite3_finalize $S122} {SQLITE_OK}123 124do_test enc4-4.4.1 {125 set S [sqlite3_prepare_v2 db "SELECT 1+?" -1 dummy]126 sqlite3_bind_text $S 1 "1.0" 2127 sqlite3_step $S128 sqlite3_column_text $S 0129} {2.0}130 131do_test enc4-4.4.2 {132 sqlite3_finalize $S133} {SQLITE_OK}134 135db close136 137finish_test138 