Annotation of embedaddon/sqlite3/test/badutf.test, revision 1.1

1.1     ! misho       1: # 2007 May 15
        !             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. 
        !            12: #
        !            13: # This file checks to make sure SQLite is able to gracefully
        !            14: # handle malformed UTF-8.
        !            15: #
        !            16: # $Id: badutf.test,v 1.2 2007/09/12 17:01:45 danielk1977 Exp $
        !            17: 
        !            18: set testdir [file dirname $argv0]
        !            19: source $testdir/tester.tcl
        !            20: 
        !            21: do_test badutf-1.1 {
        !            22:   db eval {PRAGMA encoding=UTF8}
        !            23:   sqlite3_exec db {SELECT hex('%80') AS x}
        !            24: } {0 {x 80}}
        !            25: do_test badutf-1.2 {
        !            26:   sqlite3_exec db {SELECT hex('%81') AS x}
        !            27: } {0 {x 81}}
        !            28: do_test badutf-1.3 {
        !            29:   sqlite3_exec db {SELECT hex('%bf') AS x}
        !            30: } {0 {x BF}}
        !            31: do_test badutf-1.4 {
        !            32:   sqlite3_exec db {SELECT hex('%c0') AS x}
        !            33: } {0 {x C0}}
        !            34: do_test badutf-1.5 {
        !            35:   sqlite3_exec db {SELECT hex('%e0') AS x}
        !            36: } {0 {x E0}}
        !            37: do_test badutf-1.6 {
        !            38:   sqlite3_exec db {SELECT hex('%f0') AS x}
        !            39: } {0 {x F0}}
        !            40: do_test badutf-1.7 {
        !            41:   sqlite3_exec db {SELECT hex('%ff') AS x}
        !            42: } {0 {x FF}}
        !            43: 
        !            44: sqlite3 db2 {}
        !            45: ifcapable utf16 {
        !            46:   do_test badutf-1.10 {
        !            47:     db2 eval {PRAGMA encoding=UTF16be}
        !            48:     sqlite3_exec db2 {SELECT hex('%80') AS x}
        !            49:   } {0 {x 0080}}
        !            50:   do_test badutf-1.11 {
        !            51:     sqlite3_exec db2 {SELECT hex('%81') AS x}
        !            52:   } {0 {x 0081}}
        !            53:   do_test badutf-1.12 {
        !            54:     sqlite3_exec db2 {SELECT hex('%bf') AS x}
        !            55:   } {0 {x 00BF}}
        !            56:   do_test badutf-1.13 {
        !            57:     sqlite3_exec db2 {SELECT hex('%c0') AS x}
        !            58:   } {0 {x FFFD}}
        !            59:   do_test badutf-1.14 {
        !            60:     sqlite3_exec db2 {SELECT hex('%c1') AS x}
        !            61:   } {0 {x FFFD}}
        !            62:   do_test badutf-1.15 {
        !            63:     sqlite3_exec db2 {SELECT hex('%c0%bf') AS x}
        !            64:   } {0 {x FFFD}}
        !            65:   do_test badutf-1.16 {
        !            66:     sqlite3_exec db2 {SELECT hex('%c1%bf') AS x}
        !            67:   } {0 {x FFFD}}
        !            68:   do_test badutf-1.17 {
        !            69:     sqlite3_exec db2 {SELECT hex('%c3%bf') AS x}
        !            70:   } {0 {x 00FF}}
        !            71:   do_test badutf-1.18 {
        !            72:     sqlite3_exec db2 {SELECT hex('%e0') AS x}
        !            73:   } {0 {x FFFD}}
        !            74:   do_test badutf-1.19 {
        !            75:     sqlite3_exec db2 {SELECT hex('%f0') AS x}
        !            76:   } {0 {x FFFD}}
        !            77:   do_test badutf-1.20 {
        !            78:     sqlite3_exec db2 {SELECT hex('%ff') AS x}
        !            79:   } {0 {x FFFD}}
        !            80: }
        !            81: 
        !            82: 
        !            83: ifcapable bloblit {
        !            84:   do_test badutf-2.1 {
        !            85:     sqlite3_exec db {SELECT '%80'=CAST(x'80' AS text) AS x}
        !            86:   } {0 {x 1}}
        !            87:   do_test badutf-2.2 {
        !            88:     sqlite3_exec db {SELECT CAST('%80' AS blob)=x'80' AS x}
        !            89:   } {0 {x 1}}
        !            90: }
        !            91: 
        !            92: do_test badutf-3.1 {
        !            93:   sqlite3_exec db {SELECT length('%80') AS x}
        !            94: } {0 {x 1}}
        !            95: do_test badutf-3.2 {
        !            96:   sqlite3_exec db {SELECT length('%61%62%63') AS x}
        !            97: } {0 {x 3}}
        !            98: do_test badutf-3.3 {
        !            99:   sqlite3_exec db {SELECT length('%7f%80%81') AS x}
        !           100: } {0 {x 3}}
        !           101: do_test badutf-3.4 {
        !           102:   sqlite3_exec db {SELECT length('%61%c0') AS x}
        !           103: } {0 {x 2}}
        !           104: do_test badutf-3.5 {
        !           105:   sqlite3_exec db {SELECT length('%61%c0%80%80%80%80%80%80%80%80%80%80') AS x}
        !           106: } {0 {x 2}}
        !           107: do_test badutf-3.6 {
        !           108:   sqlite3_exec db {SELECT length('%c0%80%80%80%80%80%80%80%80%80%80') AS x}
        !           109: } {0 {x 1}}
        !           110: do_test badutf-3.7 {
        !           111:   sqlite3_exec db {SELECT length('%80%80%80%80%80%80%80%80%80%80') AS x}
        !           112: } {0 {x 10}}
        !           113: do_test badutf-3.8 {
        !           114:   sqlite3_exec db {SELECT length('%80%80%80%80%80%f0%80%80%80%80') AS x}
        !           115: } {0 {x 6}}
        !           116: do_test badutf-3.9 {
        !           117:   sqlite3_exec db {SELECT length('%80%80%80%80%80%f0%80%80%80%ff') AS x}
        !           118: } {0 {x 7}}
        !           119: 
        !           120: do_test badutf-4.1 {
        !           121:   sqlite3_exec db {SELECT hex(trim('%80%80%80%f0%80%80%80%ff','%80%ff')) AS x}
        !           122: } {0 {x F0}}
        !           123: do_test badutf-4.2 {
        !           124:   sqlite3_exec db {SELECT hex(ltrim('%80%80%80%f0%80%80%80%ff','%80%ff')) AS x}
        !           125: } {0 {x F0808080FF}}
        !           126: do_test badutf-4.3 {
        !           127:   sqlite3_exec db {SELECT hex(rtrim('%80%80%80%f0%80%80%80%ff','%80%ff')) AS x}
        !           128: } {0 {x 808080F0}}
        !           129: do_test badutf-4.4 {
        !           130:   sqlite3_exec db {SELECT hex(trim('%80%80%80%f0%80%80%80%ff','%ff%80')) AS x}
        !           131: } {0 {x 808080F0808080FF}}
        !           132: do_test badutf-4.5 {
        !           133:   sqlite3_exec db {SELECT hex(trim('%ff%80%80%f0%80%80%80%ff','%ff%80')) AS x}
        !           134: } {0 {x 80F0808080FF}}
        !           135: do_test badutf-4.6 {
        !           136:   sqlite3_exec db {SELECT hex(trim('%ff%80%f0%80%80%80%ff','%ff%80')) AS x}
        !           137: } {0 {x F0808080FF}}
        !           138: do_test badutf-4.7 {
        !           139:   sqlite3_exec db {SELECT hex(trim('%ff%80%f0%80%80%80%ff','%ff%80%80')) AS x}
        !           140: } {0 {x FF80F0808080FF}}
        !           141: 
        !           142: db2 close
        !           143: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>