1
0
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:
danielk1977
2004-06-18 04:24:54 +00:00
parent a285422922
commit bfd6cce56b
15 changed files with 674 additions and 1027 deletions

View File

@ -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