diff options
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/fts2g.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/fts2g.test | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/fts2g.test b/libraries/sqlite/unix/sqlite-3.5.1/test/fts2g.test new file mode 100644 index 0000000..e2caca2 --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/fts2g.test | |||
@@ -0,0 +1,87 @@ | |||
1 | # 2006 October 19 | ||
2 | # | ||
3 | # The author disclaims copyright to this source code. | ||
4 | # | ||
5 | #************************************************************************* | ||
6 | # This file implements regression tests for SQLite library. The focus | ||
7 | # of this script is testing handling of edge cases for various doclist | ||
8 | # merging functions in the FTS2 module query logic. | ||
9 | # | ||
10 | # $Id: fts2g.test,v 1.2 2007/04/19 18:36:32 shess 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 | db eval { | ||
23 | CREATE VIRTUAL TABLE t1 USING fts2(content); | ||
24 | INSERT INTO t1 (rowid, content) VALUES(1, 'this is a test'); | ||
25 | INSERT INTO t1 (rowid, content) VALUES(2, 'also a test'); | ||
26 | } | ||
27 | |||
28 | # No hits at all. Returns empty doclists from termSelect(). | ||
29 | do_test fts2g-1.1 { | ||
30 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something'} | ||
31 | } {} | ||
32 | |||
33 | # Empty left in docListExceptMerge(). | ||
34 | do_test fts2g-1.2 { | ||
35 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH '-this something'} | ||
36 | } {} | ||
37 | |||
38 | # Empty right in docListExceptMerge(). | ||
39 | do_test fts2g-1.3 { | ||
40 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this -something'} | ||
41 | } {1} | ||
42 | |||
43 | # Empty left in docListPhraseMerge(). | ||
44 | do_test fts2g-1.4 { | ||
45 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH '"this something"'} | ||
46 | } {} | ||
47 | |||
48 | # Empty right in docListPhraseMerge(). | ||
49 | do_test fts2g-1.5 { | ||
50 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH '"something is"'} | ||
51 | } {} | ||
52 | |||
53 | # Empty left in docListOrMerge(). | ||
54 | do_test fts2g-1.6 { | ||
55 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something OR this'} | ||
56 | } {1} | ||
57 | |||
58 | # Empty right in docListOrMerge(). | ||
59 | do_test fts2g-1.7 { | ||
60 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this OR something'} | ||
61 | } {1} | ||
62 | |||
63 | # Empty left in docListAndMerge(). | ||
64 | do_test fts2g-1.8 { | ||
65 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something this'} | ||
66 | } {} | ||
67 | |||
68 | # Empty right in docListAndMerge(). | ||
69 | do_test fts2g-1.9 { | ||
70 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this something'} | ||
71 | } {} | ||
72 | |||
73 | # No support for all-except queries. | ||
74 | do_test fts2g-1.10 { | ||
75 | catchsql {SELECT rowid FROM t1 WHERE t1 MATCH '-this -something'} | ||
76 | } {1 {SQL logic error or missing database}} | ||
77 | |||
78 | # Test that docListOrMerge() correctly handles reaching the end of one | ||
79 | # doclist before it reaches the end of the other. | ||
80 | do_test fts2g-1.11 { | ||
81 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this OR also'} | ||
82 | } {1 2} | ||
83 | do_test fts2g-1.12 { | ||
84 | execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'also OR this'} | ||
85 | } {1 2} | ||
86 | |||
87 | finish_test | ||