summaryrefslogtreecommitdiff
path: root/test/spellfix.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/spellfix.test')
-rw-r--r--test/spellfix.test66
1 files changed, 66 insertions, 0 deletions
diff --git a/test/spellfix.test b/test/spellfix.test
index dfa487a..21383c2 100644
--- a/test/spellfix.test
+++ b/test/spellfix.test
@@ -95,6 +95,9 @@ do_test 1.10 {
do_execsql_test 1.11 {
SELECT next_char('re','vocab','w');
} {a}
+do_execsql_test 1.11sub {
+ SELECT next_char('re','(SELECT w AS x FROM vocab)','x');
+} {a}
do_execsql_test 1.12 {
SELECT next_char('r','vocab','w');
} {ae}
@@ -105,6 +108,22 @@ do_test 1.14 {
catchsql {SELECT next_char('','xyzzy','a')}
} {1 {no such table: xyzzy}}
+do_execsql_test 1.20 {
+ CREATE TABLE vocab2(w TEXT);
+ CREATE INDEX vocab2w ON vocab2(w COLLATE nocase);
+ INSERT INTO vocab2 VALUES('abc'), ('ABD'), ('aBe'), ('AbF');
+ SELECT next_char('ab', 'vocab2', 'w', null, 'nocase');
+} {cDeF}
+do_execsql_test 1.21 {
+ SELECT next_char('ab','vocab2','w',null,null);
+} {c}
+do_execsql_test 1.22 {
+ SELECT next_char('AB','vocab2','w',null,'NOCASE');
+} {cDeF}
+do_execsql_test 1.23 {
+ SELECT next_char('ab','vocab2','w',null,'binary');
+} {c}
+
do_execsql_test 2.1 {
CREATE VIRTUAL TABLE t2 USING spellfix1;
INSERT INTO t2 (word, soundslike) VALUES('school', 'skuul');
@@ -202,6 +221,53 @@ foreach {tn word res} {
} $res
}
+#-------------------------------------------------------------------------
+# Try some queries by rowid.
+#
+do_execsql_test 6.1.1 {
+ SELECT word FROM t3 WHERE rowid = 10;
+} {keener}
+do_execsql_test 6.1.2 {
+ SELECT word, distance FROM t3 WHERE rowid = 10;
+} {keener {}}
+do_execsql_test 6.1.3 {
+ SELECT word, distance FROM t3 WHERE rowid = 10 AND word MATCH 'kiiner';
+} {keener 300}
+
+ifcapable trace {
+ proc trace_callback {sql} {
+ if {[string range $sql 0 2] == "-- "} {
+ lappend ::trace [string range $sql 3 end]
+ }
+ }
+
+ proc do_tracesql_test {tn sql {res {}}} {
+ set ::trace [list]
+ uplevel [list do_test $tn [subst -nocommands {
+ set vals [execsql {$sql}]
+ concat [set vals] [set ::trace]
+ }] [list {*}$res]]
+ }
+
+ db trace trace_callback
+ do_tracesql_test 6.2.1 {
+ SELECT word FROM t3 WHERE rowid = 10;
+ } {keener
+ {SELECT word, rank, NULL, langid, id FROM "main"."t3_vocab" WHERE rowid=?}
+ }
+ do_tracesql_test 6.2.2 {
+ SELECT word, distance FROM t3 WHERE rowid = 10;
+ } {keener {}
+ {SELECT word, rank, NULL, langid, id FROM "main"."t3_vocab" WHERE rowid=?}
+ }
+ do_tracesql_test 6.2.3 {
+ SELECT word, distance FROM t3 WHERE rowid = 10 AND word MATCH 'kiiner';
+ } {keener 300
+ {SELECT id, word, rank, k1 FROM "main"."t3_vocab" WHERE langid=0 AND k2>=?1 AND k2<?2}
+ }
+}
+
+
finish_test