Index: third_party/sqlite/sqlite-src-3080704/test/fts2i.test |
diff --git a/third_party/sqlite/sqlite-src-3080704/test/fts2i.test b/third_party/sqlite/sqlite-src-3080704/test/fts2i.test |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e732e6a8a9e46ee2fcfe7c494c4287427c74c4da |
--- /dev/null |
+++ b/third_party/sqlite/sqlite-src-3080704/test/fts2i.test |
@@ -0,0 +1,87 @@ |
+# 2007 January 17 |
+# |
+# The author disclaims copyright to this source code. |
+# |
+#************************************************************************* |
+# This file implements regression tests for SQLite fts2 library. The |
+# focus here is testing handling of UPDATE when using UTF-16-encoded |
+# databases. |
+# |
+# $Id: fts2i.test,v 1.2 2007/01/24 03:46:35 drh Exp $ |
+# |
+ |
+set testdir [file dirname $argv0] |
+source $testdir/tester.tcl |
+ |
+# If SQLITE_ENABLE_FTS2 is defined, omit this file. |
+ifcapable !fts2 { |
+ finish_test |
+ return |
+} |
+ |
+# Return the UTF-16 representation of the supplied UTF-8 string $str. |
+# If $nt is true, append two 0x00 bytes as a nul terminator. |
+# NOTE(shess) Copied from capi3.test. |
+proc utf16 {str {nt 1}} { |
+ set r [encoding convertto unicode $str] |
+ if {$nt} { |
+ append r "\x00\x00" |
+ } |
+ return $r |
+} |
+ |
+db eval { |
+ PRAGMA encoding = "UTF-16le"; |
+ CREATE VIRTUAL TABLE t1 USING fts2(content); |
+} |
+ |
+do_test fts2i-1.0 { |
+ execsql {PRAGMA encoding} |
+} {UTF-16le} |
+ |
+do_test fts2i-1.1 { |
+ execsql {INSERT INTO t1 (rowid, content) VALUES(1, 'one')} |
+ execsql {SELECT content FROM t1 WHERE rowid = 1} |
+} {one} |
+ |
+do_test fts2i-1.2 { |
+ set sql "INSERT INTO t1 (rowid, content) VALUES(2, 'two')" |
+ set STMT [sqlite3_prepare $DB $sql -1 TAIL] |
+ sqlite3_step $STMT |
+ sqlite3_finalize $STMT |
+ execsql {SELECT content FROM t1 WHERE rowid = 2} |
+} {two} |
+ |
+do_test fts2i-1.3 { |
+ set sql "INSERT INTO t1 (rowid, content) VALUES(3, 'three')" |
+ set STMT [sqlite3_prepare $DB $sql -1 TAIL] |
+ sqlite3_step $STMT |
+ sqlite3_finalize $STMT |
+ set sql "UPDATE t1 SET content = 'trois' WHERE rowid = 3" |
+ set STMT [sqlite3_prepare $DB $sql -1 TAIL] |
+ sqlite3_step $STMT |
+ sqlite3_finalize $STMT |
+ execsql {SELECT content FROM t1 WHERE rowid = 3} |
+} {trois} |
+ |
+do_test fts2i-1.4 { |
+ set sql16 [utf16 {INSERT INTO t1 (rowid, content) VALUES(4, 'four')}] |
+ set STMT [sqlite3_prepare16 $DB $sql16 -1 TAIL] |
+ sqlite3_step $STMT |
+ sqlite3_finalize $STMT |
+ execsql {SELECT content FROM t1 WHERE rowid = 4} |
+} {four} |
+ |
+do_test fts2i-1.5 { |
+ set sql16 [utf16 {INSERT INTO t1 (rowid, content) VALUES(5, 'five')}] |
+ set STMT [sqlite3_prepare16 $DB $sql16 -1 TAIL] |
+ sqlite3_step $STMT |
+ sqlite3_finalize $STMT |
+ set sql "UPDATE t1 SET content = 'cinq' WHERE rowid = 5" |
+ set STMT [sqlite3_prepare $DB $sql -1 TAIL] |
+ sqlite3_step $STMT |
+ sqlite3_finalize $STMT |
+ execsql {SELECT content FROM t1 WHERE rowid = 5} |
+} {cinq} |
+ |
+finish_test |