github.com/jdgcs/sqlite3@v1.12.1-0.20210908114423-bc5f96e4dd51/testdata/tcl/enc4.test (about) 1 # 2010 Sept 29 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 of 12 # this file is testing the SQLite routines used for converting between the 13 # various suported unicode encodings (UTF-8, UTF-16, UTF-16le and 14 # UTF-16be). 15 # 16 # $Id: enc4.test,v 1.0 2010/09/29 08:29:32 shaneh Exp $ 17 18 set testdir [file dirname $argv0] 19 source $testdir/tester.tcl 20 21 # If UTF16 support is disabled, ignore the tests in this file 22 # 23 ifcapable {!utf16} { 24 finish_test 25 return 26 } 27 28 db close 29 30 # The three unicode encodings understood by SQLite. 31 set encodings [list UTF-8 UTF-16le UTF-16be] 32 33 # initial value to use in SELECT 34 set inits [list 1 1.0 1. 1e0] 35 36 # vals 37 set vals [list\ 38 "922337203685477580792233720368547758079223372036854775807"\ 39 "100000000000000000000000000000000000000000000000000000000"\ 40 "1.0000000000000000000000000000000000000000000000000000000"\ 41 ] 42 43 set i 1 44 foreach enc $encodings { 45 46 forcedelete test.db 47 sqlite3 db test.db 48 db eval "PRAGMA encoding = \"$enc\"" 49 50 do_test enc4-$i.1 { 51 db eval {PRAGMA encoding} 52 } $enc 53 54 set j 1 55 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 $S 60 } {0} 61 62 set k 1 63 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 $S 69 sqlite3_bind_text $S 1 $val $x 70 sqlite3_step $S 71 sqlite3_column_text $S 0 72 } [list $part] 73 74 do_realnum_test enc4-$i.$j.$k.4.$x { 75 sqlite3_reset $S 76 sqlite3_bind_text16 $S 1 [encoding convertto unicode $val] [expr $x*2] 77 sqlite3_step $S 78 sqlite3_column_text $S 0 79 } [list $part] 80 } 81 82 incr k 83 } 84 85 do_test enc4-$i.$j.5 { 86 sqlite3_finalize $S 87 } {SQLITE_OK} 88 89 incr j 90 } 91 92 db close 93 incr i 94 } 95 96 forcedelete test.db 97 sqlite3 db test.db 98 99 do_test enc4-4.1 { 100 db eval "select 1+1." 101 } {2.0} 102 103 do_test enc4-4.2.1 { 104 set S [sqlite3_prepare_v2 db "SELECT 1+1." -1 dummy] 105 sqlite3_step $S 106 sqlite3_column_text $S 0 107 } {2.0} 108 109 do_test enc4-4.2.2 { 110 sqlite3_finalize $S 111 } {SQLITE_OK} 112 113 do_test enc4-4.3.1 { 114 set S [sqlite3_prepare_v2 db "SELECT 1+?" -1 dummy] 115 sqlite3_bind_text $S 1 "1." 2 116 sqlite3_step $S 117 sqlite3_column_text $S 0 118 } {2.0} 119 120 do_test enc4-4.3.2 { 121 sqlite3_finalize $S 122 } {SQLITE_OK} 123 124 do_test enc4-4.4.1 { 125 set S [sqlite3_prepare_v2 db "SELECT 1+?" -1 dummy] 126 sqlite3_bind_text $S 1 "1.0" 2 127 sqlite3_step $S 128 sqlite3_column_text $S 0 129 } {2.0} 130 131 do_test enc4-4.4.2 { 132 sqlite3_finalize $S 133 } {SQLITE_OK} 134 135 db close 136 137 finish_test