OLD | NEW |
| (Empty) |
1 # 2002 May 24 | |
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 # The focus of this file is testing of the proper handling of conversions | |
14 # to the native text representation. | |
15 # | |
16 # $Id: enc3.test,v 1.8 2008/01/22 01:48:09 drh Exp $ | |
17 | |
18 set testdir [file dirname $argv0] | |
19 source $testdir/tester.tcl | |
20 | |
21 ifcapable {utf16} { | |
22 do_test enc3-1.1 { | |
23 execsql { | |
24 PRAGMA encoding=utf16le; | |
25 PRAGMA encoding; | |
26 } | |
27 } {UTF-16le} | |
28 } | |
29 do_test enc3-1.2 { | |
30 execsql { | |
31 CREATE TABLE t1(x,y); | |
32 INSERT INTO t1 VALUES('abc''123',5); | |
33 SELECT * FROM t1 | |
34 } | |
35 } {abc'123 5} | |
36 do_test enc3-1.3 { | |
37 execsql { | |
38 SELECT quote(x) || ' ' || quote(y) FROM t1 | |
39 } | |
40 } {{'abc''123' 5}} | |
41 ifcapable {bloblit} { | |
42 do_test enc3-1.4 { | |
43 execsql { | |
44 DELETE FROM t1; | |
45 INSERT INTO t1 VALUES(x'616263646566',NULL); | |
46 SELECT * FROM t1 | |
47 } | |
48 } {abcdef {}} | |
49 do_test enc3-1.5 { | |
50 execsql { | |
51 SELECT quote(x) || ' ' || quote(y) FROM t1 | |
52 } | |
53 } {{X'616263646566' NULL}} | |
54 } | |
55 ifcapable {bloblit && utf16} { | |
56 do_test enc3-2.1 { | |
57 execsql { | |
58 PRAGMA encoding | |
59 } | |
60 } {UTF-16le} | |
61 do_test enc3-2.2 { | |
62 execsql { | |
63 CREATE TABLE t2(a); | |
64 INSERT INTO t2 VALUES(x'61006200630064006500'); | |
65 SELECT CAST(a AS text) FROM t2 WHERE a LIKE 'abc%'; | |
66 } | |
67 } {abcde} | |
68 do_test enc3-2.3 { | |
69 execsql { | |
70 SELECT CAST(x'61006200630064006500' AS text); | |
71 } | |
72 } {abcde} | |
73 do_test enc3-2.4 { | |
74 execsql { | |
75 SELECT rowid FROM t2 WHERE a LIKE x'610062002500'; | |
76 } | |
77 } {1} | |
78 } | |
79 | |
80 # Try to attach a database with a different encoding. | |
81 # | |
82 ifcapable {utf16 && shared_cache} { | |
83 db close | |
84 forcedelete test8.db test8.db-journal | |
85 set ::enable_shared_cache [sqlite3_enable_shared_cache 1] | |
86 sqlite3 dbaux test8.db | |
87 sqlite3 db test.db | |
88 db eval {SELECT 1 FROM sqlite_master LIMIT 1} | |
89 do_test enc3-3.1 { | |
90 dbaux eval { | |
91 PRAGMA encoding='utf8'; | |
92 CREATE TABLE t1(x); | |
93 PRAGMA encoding | |
94 } | |
95 } {UTF-8} | |
96 do_test enc3-3.2 { | |
97 catchsql { | |
98 ATTACH 'test.db' AS utf16; | |
99 SELECT 1 FROM utf16.sqlite_master LIMIT 1; | |
100 } dbaux | |
101 } {1 {attached databases must use the same text encoding as main database}} | |
102 dbaux close | |
103 forcedelete test8.db test8.db-journal | |
104 sqlite3_enable_shared_cache $::enable_shared_cache | |
105 } | |
106 | |
107 finish_test | |
OLD | NEW |