Annotation of embedaddon/sqlite3/test/enc4.test, revision 1.1
1.1 ! misho 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
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>