mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Optimisation for unicode encoding conversion routines. (CVS 1614)
FossilOrigin-Name: 39a415eaa65964742e40b7ea4d471fa04007c6c9
This commit is contained in:
@ -13,7 +13,7 @@
|
||||
# various suported unicode encodings (UTF-8, UTF-16, UTF-16le and
|
||||
# UTF-16be).
|
||||
#
|
||||
# $Id: enc.test,v 1.1 2004/05/22 08:16:11 danielk1977 Exp $
|
||||
# $Id: enc.test,v 1.2 2004/06/18 04:24:56 danielk1977 Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -74,7 +74,7 @@ proc swap_byte_order {utf16} {
|
||||
proc test_conversion {testname str} {
|
||||
|
||||
# Step 1.
|
||||
set utf16le_sqlite [sqlite_utf8to16le $str]
|
||||
set utf16le_sqlite [test_translate $str UTF8 UTF16LE]
|
||||
set utf16le_tcl [encoding convertto unicode $str]
|
||||
append utf16le_tcl "\x00\x00"
|
||||
if { $::tcl_platform(byteOrder)!="littleEndian" } {
|
||||
@ -84,7 +84,7 @@ proc test_conversion {testname str} {
|
||||
set utf16le $utf16le_tcl
|
||||
|
||||
# Step 2.
|
||||
set utf16be_sqlite [sqlite_utf8to16be $str]
|
||||
set utf16be_sqlite [test_translate $str UTF8 UTF16BE]
|
||||
set utf16be_tcl [encoding convertto unicode $str]
|
||||
append utf16be_tcl "\x00\x00"
|
||||
if { $::tcl_platform(byteOrder)=="littleEndian" } {
|
||||
@ -99,40 +99,42 @@ proc test_conversion {testname str} {
|
||||
} else {
|
||||
set utf16 $utf16be
|
||||
}
|
||||
set utf8_sqlite [sqlite_utf16to8 $utf16]
|
||||
set utf8_sqlite [test_translate $utf16 UTF16 UTF8]
|
||||
do_bincmp_test $testname.3 $utf8_sqlite [binarize $str]
|
||||
|
||||
# Step 4 (little endian).
|
||||
append utf16le_bom "\xFF\xFE" $utf16le
|
||||
set utf8_sqlite [sqlite_utf16to8 $utf16le_bom]
|
||||
set utf8_sqlite [test_translate $utf16le_bom UTF16 UTF8]
|
||||
do_bincmp_test $testname.4.le $utf8_sqlite [binarize $str]
|
||||
|
||||
# Step 4 (big endian).
|
||||
append utf16be_bom "\xFE\xFF" $utf16be
|
||||
set utf8_sqlite [sqlite_utf16to8 $utf16be_bom]
|
||||
set utf8_sqlite [test_translate $utf16be_bom UTF16 UTF8]
|
||||
do_bincmp_test $testname.4.be $utf8_sqlite [binarize $str]
|
||||
|
||||
# Step 5 (little endian to little endian).
|
||||
set utf16_sqlite [sqlite_utf16to16le $utf16le_bom]
|
||||
set utf16_sqlite [test_translate $utf16le_bom UTF16LE UTF16LE]
|
||||
do_bincmp_test $testname.5.le.le $utf16_sqlite $utf16le
|
||||
|
||||
# Step 5 (big endian to big endian).
|
||||
set utf16_sqlite [sqlite_utf16to16be $utf16be_bom]
|
||||
set utf16_sqlite [test_translate $utf16be_bom UTF16 UTF16BE]
|
||||
do_bincmp_test $testname.5.be.be $utf16_sqlite $utf16be
|
||||
|
||||
# Step 5 (big endian to little endian).
|
||||
set utf16_sqlite [sqlite_utf16to16le $utf16be_bom]
|
||||
set utf16_sqlite [test_translate $utf16be_bom UTF16 UTF16LE]
|
||||
do_bincmp_test $testname.5.be.le $utf16_sqlite $utf16le
|
||||
|
||||
# Step 5 (little endian to big endian).
|
||||
set utf16_sqlite [sqlite_utf16to16be $utf16le_bom]
|
||||
set utf16_sqlite [test_translate $utf16le_bom UTF16 UTF16BE]
|
||||
do_bincmp_test $testname.5.le.be $utf16_sqlite $utf16be
|
||||
}
|
||||
|
||||
translate_selftest
|
||||
|
||||
test_conversion enc-1 "hello world"
|
||||
test_conversion enc-2 "sqlite"
|
||||
test_conversion enc-3 ""
|
||||
test_conversion enc-X "\u0100"
|
||||
test_conversion enc-4 "\u1234"
|
||||
test_conversion enc-5 "\u4321abc"
|
||||
test_conversion enc-6 "\u4321\u1234"
|
||||
@ -144,4 +146,3 @@ finish_test
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user