OLD | NEW |
| (Empty) |
1 # 2014 May 7 | |
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 # This file implements regression tests for SQLite library. The | |
12 # focus of this script is testing the FTS3 module. | |
13 # | |
14 | |
15 set testdir [file dirname $argv0] | |
16 source $testdir/tester.tcl | |
17 set testprefix fts3expr4 | |
18 | |
19 # If SQLITE_ENABLE_FTS3 is defined, omit this file. | |
20 ifcapable !fts3||!icu { | |
21 finish_test | |
22 return | |
23 } | |
24 | |
25 set sqlite_fts3_enable_parentheses 1 | |
26 | |
27 proc test_fts3expr {tokenizer expr} { | |
28 db one {SELECT fts3_exprtest($tokenizer, $expr, 'a', 'b', 'c')} | |
29 } | |
30 | |
31 proc do_icu_expr_test {tn expr res} { | |
32 uplevel [list do_test $tn [list test_fts3expr icu $expr] [list {*}$res]] | |
33 } | |
34 | |
35 proc do_simple_expr_test {tn expr res} { | |
36 uplevel [list do_test $tn [list test_fts3expr simple $expr] [list {*}$res]] | |
37 } | |
38 | |
39 #------------------------------------------------------------------------- | |
40 # | |
41 do_icu_expr_test 1.1 "abcd" {PHRASE 3 0 abcd} | |
42 do_icu_expr_test 1.2 " tag " {PHRASE 3 0 tag} | |
43 do_icu_expr_test 1.3 {"x y z"} {PHRASE 3 0 x y z} | |
44 do_icu_expr_test 1.4 {x OR y} {OR {PHRASE 3 0 x} {PHRASE 3 0 y}} | |
45 do_icu_expr_test 1.5 {(x OR y)} {OR {PHRASE 3 0 x} {PHRASE 3 0 y}} | |
46 do_icu_expr_test 1.6 { "(x OR y)" } {PHRASE 3 0 ( x or y )} | |
47 | |
48 # In "col:word", if "col" is not the name of a column, the entire thing | |
49 # is passed to the tokenizer. | |
50 # | |
51 do_icu_expr_test 1.7 {a:word} {PHRASE 0 0 word} | |
52 do_icu_expr_test 1.8 {d:word} {PHRASE 3 0 d:word} | |
53 | |
54 set sqlite_fts3_enable_parentheses 0 | |
55 | |
56 do_icu_expr_test 2.1 { | |
57 f (e NEAR/2 a) | |
58 } {AND {AND {AND {PHRASE 3 0 f} {PHRASE 3 0 (}} {NEAR/2 {PHRASE 3 0 e} {PHRASE 3
0 a}}} {PHRASE 3 0 )}} | |
59 | |
60 #------------------------------------------------------------------------- | |
61 # | |
62 do_simple_expr_test 3.1 {*lOl* *h4h*} { | |
63 AND {PHRASE 3 0 lol+} {PHRASE 3 0 h4h+} | |
64 } | |
65 | |
66 do_icu_expr_test 3.2 {*lOl* *h4h*} { | |
67 AND {AND {AND {PHRASE 3 0 *} {PHRASE 3 0 lol+}} {PHRASE 3 0 *}} {PHRASE 3 0 h4
h+} | |
68 } | |
69 | |
70 do_simple_expr_test 3.3 { * } { } | |
71 do_simple_expr_test 3.4 { *a } { PHRASE 3 0 a } | |
72 do_simple_expr_test 3.5 { a*b } { AND {PHRASE 3 0 a+} {PHRASE 3 0 b} } | |
73 do_simple_expr_test 3.6 { *a*b } { AND {PHRASE 3 0 a+} {PHRASE 3 0 b} } | |
74 do_simple_expr_test 3.7 { *"abc" } { PHRASE 3 0 abc } | |
75 do_simple_expr_test 3.8 { "abc"* } { PHRASE 3 0 abc } | |
76 do_simple_expr_test 3.8 { "ab*c" } { PHRASE 3 0 ab+ c } | |
77 | |
78 do_icu_expr_test 3.9 { "ab*c" } { PHRASE 3 0 ab+ * c } | |
79 do_icu_expr_test 3.10 { ab*c } { AND {PHRASE 3 0 ab+} {PHRASE 3 0 c}} | |
80 | |
81 finish_test | |
82 | |
OLD | NEW |