xref: /sqlite-3.40.0/test/spellfix2.test (revision 2c1023df)
1# 2012 July 12
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#
12
13set testdir [file dirname $argv0]
14source $testdir/tester.tcl
15set testprefix spellfix2
16
17ifcapable !vtab { finish_test ; return }
18load_static_extension db spellfix nextchar
19
20do_execsql_test 1.0 {
21  CREATE VIRTUAL TABLE demo USING spellfix1;
22  INSERT INTO demo(word) VALUES ('amsterdam');
23  INSERT INTO demo(word) VALUES ('amsterdammetje');
24  INSERT INTO demo(word) VALUES ('amsterdamania');
25  INSERT INTO demo(word) VALUES ('amsterdamweg');
26  INSERT INTO demo(word) VALUES ('amsterdamsestraat');
27  INSERT INTO demo(word) VALUES ('amsterdamlaan');
28}
29
30do_execsql_test 1.1 {
31  SELECT word, distance, matchlen FROM demo
32  WHERE word MATCH 'amstedam*' AND top=3
33  ORDER BY +word;
34} {
35   amsterdam      100 9
36   amsterdamania  100 9
37   amsterdammetje 100 9
38}
39
40do_execsql_test 1.2 {
41  SELECT word, distance, matchlen FROM demo WHERE
42  word MATCH 'amstedam*' AND top=3 AND distance <= 100
43  ORDER BY +word;
44} {
45   amsterdam      100 9
46   amsterdamania  100 9
47   amsterdammetje 100 9
48}
49
50do_execsql_test 1.3 {
51  SELECT word, distance, matchlen FROM demo WHERE
52  word MATCH 'amstedam*' AND distance <= 100
53  ORDER BY +word;
54} {
55   amsterdam         100 9
56   amsterdamania     100 9
57   amsterdamlaan     100 9
58   amsterdammetje    100 9
59   amsterdamsestraat 100 9
60   amsterdamweg      100 9
61}
62
63do_test 1.4 {
64  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} {
65    execsql { INSERT INTO demo(word) VALUES ('amsterdam' || $l) }
66  }
67} {}
68
69do_execsql_test 1.5 {
70  SELECT count(*) FROM demo WHERE word MATCH 'amstedam*' AND distance <= 100;
71  SELECT count(*) FROM demo
72  WHERE word MATCH 'amstedam*' AND distance <= 100 AND top=20;
73} {
74  32 20
75}
76
77do_execsql_test 1.6 {
78  SELECT word, distance, matchlen FROM demo
79  WHERE word MATCH 'amstedam*' AND distance <= 100;
80} {
81  amsterdam         100 9        amsterdamh        100 9
82  amsterdamm        100 9        amsterdamn        100 9
83  amsterdama        100 9        amsterdame        100 9
84  amsterdami        100 9        amsterdamo        100 9
85  amsterdamu        100 9        amsterdamy        100 9
86  amsterdammetje    100 9        amsterdamania     100 9
87  amsterdamb        100 9        amsterdamf        100 9
88  amsterdamp        100 9        amsterdamv        100 9
89  amsterdamw        100 9        amsterdamweg      100 9
90  amsterdamc        100 9        amsterdamg        100 9
91  amsterdamj        100 9        amsterdamk        100 9
92  amsterdamq        100 9        amsterdams        100 9
93  amsterdamx        100 9        amsterdamz        100 9
94  amsterdamsestraat 100 9        amsterdamd        100 9
95  amsterdamt        100 9        amsterdaml        100 9
96  amsterdamlaan     100 9        amsterdamr        100 9
97}
98
99do_execsql_test 1.7 {
100  SELECT word, distance, matchlen FROM demo
101  WHERE word MATCH 'amstedam*' AND distance <= 100 AND top=20;
102} {
103  amsterdam         100 9        amsterdamh        100 9
104  amsterdamm        100 9        amsterdamn        100 9
105  amsterdama        100 9        amsterdame        100 9
106  amsterdami        100 9        amsterdamo        100 9
107  amsterdamu        100 9        amsterdamy        100 9
108  amsterdammetje    100 9        amsterdamania     100 9
109  amsterdamb        100 9        amsterdamf        100 9
110  amsterdamp        100 9        amsterdamv        100 9
111  amsterdamw        100 9        amsterdamweg      100 9
112  amsterdamc        100 9        amsterdamg        100 9
113}
114
115
116finish_test
117