CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
enc4.test138 linesDownload Raw Back to test
1# 2010 Sept 292#3# The author disclaims copyright to this source code.  In place of4# 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 of12# this file is testing the SQLite routines used for converting between the13# various suported unicode encodings (UTF-8, UTF-16, UTF-16le and14# UTF-16be).15#16# $Id: enc4.test,v 1.0 2010/09/29 08:29:32 shaneh Exp $17 18set testdir [file dirname $argv0]19source $testdir/tester.tcl20 21# If UTF16 support is disabled, ignore the tests in this file22#23ifcapable {!utf16} {24  finish_test25  return26}27 28db close29 30# The three unicode encodings understood by SQLite.31set encodings [list UTF-8 UTF-16le UTF-16be]32 33# initial value to use in SELECT34set inits [list 1 1.0 1. 1e0]35 36# vals37set vals [list\38"922337203685477580792233720368547758079223372036854775807"\39"100000000000000000000000000000000000000000000000000000000"\40"1.0000000000000000000000000000000000000000000000000000000"\41]42 43set i 144foreach enc $encodings {45 46  forcedelete test.db47  sqlite3 db test.db48  db eval "PRAGMA encoding = \"$enc\""49 50  do_test enc4-$i.1 {51    db eval {PRAGMA encoding}52  } $enc53 54  set j 155  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 $S60    } {0}61      62    set k 163    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 $S69          sqlite3_bind_text $S 1 $val $x70          sqlite3_step $S71          sqlite3_column_text $S 072        } [list $part]73        74        do_realnum_test enc4-$i.$j.$k.4.$x {75          sqlite3_reset $S76          sqlite3_bind_text16 $S 1 [encoding convertto unicode $val] [expr $x*2]77          sqlite3_step $S78          sqlite3_column_text $S 079        } [list $part]80      }81      82      incr k83    }84 85    do_test enc4-$i.$j.5 {86      sqlite3_finalize $S87    } {SQLITE_OK}88 89    incr j90  }91 92  db close93  incr i94}95 96forcedelete test.db97sqlite3 db test.db98 99do_test enc4-4.1 {100  db eval "select 1+1."101} {2.0}102 103do_test enc4-4.2.1 {104  set S [sqlite3_prepare_v2 db "SELECT 1+1." -1 dummy]105  sqlite3_step $S106  sqlite3_column_text $S 0107} {2.0}108 109do_test enc4-4.2.2 {110  sqlite3_finalize $S111} {SQLITE_OK}112 113do_test enc4-4.3.1 {114  set S [sqlite3_prepare_v2 db "SELECT 1+?" -1 dummy]115  sqlite3_bind_text $S 1 "1." 2116  sqlite3_step $S117  sqlite3_column_text $S 0118} {2.0}119 120do_test enc4-4.3.2 {121  sqlite3_finalize $S122} {SQLITE_OK}123 124do_test enc4-4.4.1 {125  set S [sqlite3_prepare_v2 db "SELECT 1+?" -1 dummy]126  sqlite3_bind_text $S 1 "1.0" 2127  sqlite3_step $S128  sqlite3_column_text $S 0129} {2.0}130 131do_test enc4-4.4.2 {132  sqlite3_finalize $S133} {SQLITE_OK}134 135db close136 137finish_test138