diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/fts2i.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/fts2i.test | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/fts2i.test b/libraries/sqlite/unix/sqlite-3.5.1/test/fts2i.test new file mode 100644 index 0000000..e732e6a --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/fts2i.test | |||
@@ -0,0 +1,87 @@ | |||
1 | # 2007 January 17 | ||
2 | # | ||
3 | # The author disclaims copyright to this source code. | ||
4 | # | ||
5 | #************************************************************************* | ||
6 | # This file implements regression tests for SQLite fts2 library. The | ||
7 | # focus here is testing handling of UPDATE when using UTF-16-encoded | ||
8 | # databases. | ||
9 | # | ||
10 | # $Id: fts2i.test,v 1.2 2007/01/24 03:46:35 drh Exp $ | ||
11 | # | ||
12 | |||
13 | set testdir [file dirname $argv0] | ||
14 | source $testdir/tester.tcl | ||
15 | |||
16 | # If SQLITE_ENABLE_FTS2 is defined, omit this file. | ||
17 | ifcapable !fts2 { | ||
18 | finish_test | ||
19 | return | ||
20 | } | ||
21 | |||
22 | # Return the UTF-16 representation of the supplied UTF-8 string $str. | ||
23 | # If $nt is true, append two 0x00 bytes as a nul terminator. | ||
24 | # NOTE(shess) Copied from capi3.test. | ||
25 | proc utf16 {str {nt 1}} { | ||
26 | set r [encoding convertto unicode $str] | ||
27 | if {$nt} { | ||
28 | append r "\x00\x00" | ||
29 | } | ||
30 | return $r | ||
31 | } | ||
32 | |||
33 | db eval { | ||
34 | PRAGMA encoding = "UTF-16le"; | ||
35 | CREATE VIRTUAL TABLE t1 USING fts2(content); | ||
36 | } | ||
37 | |||
38 | do_test fts2i-1.0 { | ||
39 | execsql {PRAGMA encoding} | ||
40 | } {UTF-16le} | ||
41 | |||
42 | do_test fts2i-1.1 { | ||
43 | execsql {INSERT INTO t1 (rowid, content) VALUES(1, 'one')} | ||
44 | execsql {SELECT content FROM t1 WHERE rowid = 1} | ||
45 | } {one} | ||
46 | |||
47 | do_test fts2i-1.2 { | ||
48 | set sql "INSERT INTO t1 (rowid, content) VALUES(2, 'two')" | ||
49 | set STMT [sqlite3_prepare $DB $sql -1 TAIL] | ||
50 | sqlite3_step $STMT | ||
51 | sqlite3_finalize $STMT | ||
52 | execsql {SELECT content FROM t1 WHERE rowid = 2} | ||
53 | } {two} | ||
54 | |||
55 | do_test fts2i-1.3 { | ||
56 | set sql "INSERT INTO t1 (rowid, content) VALUES(3, 'three')" | ||
57 | set STMT [sqlite3_prepare $DB $sql -1 TAIL] | ||
58 | sqlite3_step $STMT | ||
59 | sqlite3_finalize $STMT | ||
60 | set sql "UPDATE t1 SET content = 'trois' WHERE rowid = 3" | ||
61 | set STMT [sqlite3_prepare $DB $sql -1 TAIL] | ||
62 | sqlite3_step $STMT | ||
63 | sqlite3_finalize $STMT | ||
64 | execsql {SELECT content FROM t1 WHERE rowid = 3} | ||
65 | } {trois} | ||
66 | |||
67 | do_test fts2i-1.4 { | ||
68 | set sql16 [utf16 {INSERT INTO t1 (rowid, content) VALUES(4, 'four')}] | ||
69 | set STMT [sqlite3_prepare16 $DB $sql16 -1 TAIL] | ||
70 | sqlite3_step $STMT | ||
71 | sqlite3_finalize $STMT | ||
72 | execsql {SELECT content FROM t1 WHERE rowid = 4} | ||
73 | } {four} | ||
74 | |||
75 | do_test fts2i-1.5 { | ||
76 | set sql16 [utf16 {INSERT INTO t1 (rowid, content) VALUES(5, 'five')}] | ||
77 | set STMT [sqlite3_prepare16 $DB $sql16 -1 TAIL] | ||
78 | sqlite3_step $STMT | ||
79 | sqlite3_finalize $STMT | ||
80 | set sql "UPDATE t1 SET content = 'cinq' WHERE rowid = 5" | ||
81 | set STMT [sqlite3_prepare $DB $sql -1 TAIL] | ||
82 | sqlite3_step $STMT | ||
83 | sqlite3_finalize $STMT | ||
84 | execsql {SELECT content FROM t1 WHERE rowid = 5} | ||
85 | } {cinq} | ||
86 | |||
87 | finish_test | ||