summaryrefslogtreecommitdiffstats
path: root/test/spellfix2.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/spellfix2.test')
-rw-r--r--test/spellfix2.test118
1 files changed, 118 insertions, 0 deletions
diff --git a/test/spellfix2.test b/test/spellfix2.test
new file mode 100644
index 0000000..d1a1328
--- /dev/null
+++ b/test/spellfix2.test
@@ -0,0 +1,118 @@
+# 2012 July 12
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+set testprefix spellfix2
+
+ifcapable !vtab { finish_test ; return }
+load_static_extension db spellfix nextchar
+
+do_execsql_test 1.0 {
+ CREATE VIRTUAL TABLE demo USING spellfix1;
+ INSERT INTO demo(word) VALUES ('amsterdam');
+ INSERT INTO demo(word) VALUES ('amsterdammetje');
+ INSERT INTO demo(word) VALUES ('amsterdamania');
+ INSERT INTO demo(word) VALUES ('amsterdamweg');
+ INSERT INTO demo(word) VALUES ('amsterdamsestraat');
+ INSERT INTO demo(word) VALUES ('amsterdamlaan');
+}
+
+do_execsql_test 1.1 {
+ SELECT word, distance, matchlen FROM demo
+ WHERE word MATCH 'amstedam*' AND top=3
+ ORDER BY +word;
+} {
+ amsterdam 100 9
+ amsterdamania 100 9
+ amsterdammetje 100 9
+}
+
+do_execsql_test 1.2 {
+ SELECT word, distance, matchlen FROM demo WHERE
+ word MATCH 'amstedam*' AND top=3 AND distance <= 100
+ ORDER BY +word;
+} {
+ amsterdam 100 9
+ amsterdamania 100 9
+ amsterdammetje 100 9
+}
+
+do_execsql_test 1.3 {
+ SELECT word, distance, matchlen FROM demo WHERE
+ word MATCH 'amstedam*' AND distance <= 100
+ ORDER BY +word;
+} {
+ amsterdam 100 9
+ amsterdamania 100 9
+ amsterdamlaan 100 9
+ amsterdammetje 100 9
+ amsterdamsestraat 100 9
+ amsterdamweg 100 9
+}
+
+do_test 1.4 {
+ foreach l {a b c d e f g h i j k l m n o p q r s t u v w x y z} {
+ execsql { INSERT INTO demo(word) VALUES ('amsterdam' || $l) }
+ }
+} {}
+
+do_execsql_test 1.5 {
+ SELECT count(*) FROM demo WHERE word MATCH 'amstedam*' AND distance <= 100;
+ SELECT count(*) FROM demo
+ WHERE word MATCH 'amstedam*' AND distance <= 100 AND top=20;
+} {
+ 32 20
+}
+
+do_execsql_test 1.6 {
+ SELECT word, distance, matchlen FROM demo
+ WHERE word MATCH 'amstedam*' AND distance <= 100
+ ORDER BY distance, word;
+} {
+ amsterdam 100 9 amsterdama 100 9
+ amsterdamania 100 9 amsterdamb 100 9
+ amsterdamc 100 9 amsterdamd 100 9
+ amsterdame 100 9 amsterdamf 100 9
+ amsterdamg 100 9 amsterdamh 100 9
+ amsterdami 100 9 amsterdamj 100 9
+ amsterdamk 100 9 amsterdaml 100 9
+ amsterdamlaan 100 9 amsterdamm 100 9
+ amsterdammetje 100 9 amsterdamn 100 9
+ amsterdamo 100 9 amsterdamp 100 9
+ amsterdamq 100 9 amsterdamr 100 9
+ amsterdams 100 9 amsterdamsestraat 100 9
+ amsterdamt 100 9 amsterdamu 100 9
+ amsterdamv 100 9 amsterdamw 100 9
+ amsterdamweg 100 9 amsterdamx 100 9
+ amsterdamy 100 9 amsterdamz 100 9
+}
+
+do_execsql_test 1.7 {
+ SELECT word, distance, matchlen FROM demo
+ WHERE word MATCH 'amstedam*' AND distance <= 100 AND top=20
+ ORDER BY distance, word;
+} {
+ amsterdam 100 9 amsterdama 100 9
+ amsterdamania 100 9 amsterdamb 100 9
+ amsterdamc 100 9 amsterdame 100 9
+ amsterdamf 100 9 amsterdamg 100 9
+ amsterdamh 100 9 amsterdami 100 9
+ amsterdamm 100 9 amsterdammetje 100 9
+ amsterdamn 100 9 amsterdamo 100 9
+ amsterdamp 100 9 amsterdamu 100 9
+ amsterdamv 100 9 amsterdamw 100 9
+ amsterdamweg 100 9 amsterdamy 100 9
+}
+
+
+finish_test