OLD | NEW |
1 # 2014 June 17 | 1 # 2014 June 17 |
2 # | 2 # |
3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
5 # | 5 # |
6 # May you do good and not evil. | 6 # May you do good and not evil. |
7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
9 # | 9 # |
10 #************************************************************************* | 10 #************************************************************************* |
11 # This file implements regression tests for SQLite library. The | 11 # This file implements regression tests for SQLite library. The |
12 # focus of this script is testing the FTS5 module. | 12 # focus of this script is testing the FTS5 module. |
13 # | 13 # |
14 # More specifically, the tests in this file focus on the built-in | 14 # More specifically, the tests in this file focus on the built-in |
15 # snippet() function. | 15 # snippet() function. |
16 # | 16 # |
17 | 17 |
18 source [file join [file dirname [info script]] fts5_common.tcl] | 18 source [file join [file dirname [info script]] fts5_common.tcl] |
19 set testprefix fts5af | 19 set testprefix fts5af |
20 | 20 |
21 # If SQLITE_ENABLE_FTS5 is defined, omit this file. | 21 # If SQLITE_ENABLE_FTS5 is defined, omit this file. |
22 ifcapable !fts5 { | 22 ifcapable !fts5 { |
23 finish_test | 23 finish_test |
24 return | 24 return |
25 } | 25 } |
26 | 26 |
| 27 foreach_detail_mode $testprefix { |
27 | 28 |
28 do_execsql_test 1.0 { | 29 do_execsql_test 1.0 { |
29 CREATE VIRTUAL TABLE t1 USING fts5(x, y); | 30 CREATE VIRTUAL TABLE t1 USING fts5(x, y, detail=%DETAIL%); |
30 } | 31 } |
31 | 32 |
32 proc do_snippet_test {tn doc match res} { | 33 proc do_snippet_test {tn doc match res} { |
33 | 34 |
34 uplevel #0 [list set v1 $doc] | 35 uplevel #0 [list set v1 $doc] |
35 uplevel #0 [list set v2 $match] | 36 uplevel #0 [list set v2 $match] |
36 | 37 |
37 do_execsql_test $tn.1 { | 38 do_execsql_test $tn.1 { |
38 DELETE FROM t1; | 39 DELETE FROM t1; |
39 INSERT INTO t1 VALUES($v1, NULL); | 40 INSERT INTO t1 VALUES($v1, NULL); |
(...skipping 24 matching lines...) Expand all Loading... |
64 1.3 {o o X o o o o} {o o [X] o o o o} | 65 1.3 {o o X o o o o} {o o [X] o o o o} |
65 1.4 {o o o X o o o} {o o o [X] o o o} | 66 1.4 {o o o X o o o} {o o o [X] o o o} |
66 1.5 {o o o o X o o} {o o o o [X] o o} | 67 1.5 {o o o o X o o} {o o o o [X] o o} |
67 1.6 {o o o o o X o} {o o o o o [X] o} | 68 1.6 {o o o o o X o} {o o o o o [X] o} |
68 1.7 {o o o o o o X} {o o o o o o [X]} | 69 1.7 {o o o o o o X} {o o o o o o [X]} |
69 | 70 |
70 2.1 {X o o o o o o o} {[X] o o o o o o...} | 71 2.1 {X o o o o o o o} {[X] o o o o o o...} |
71 2.2 {o X o o o o o o} {o [X] o o o o o...} | 72 2.2 {o X o o o o o o} {o [X] o o o o o...} |
72 2.3 {o o X o o o o o} {o o [X] o o o o...} | 73 2.3 {o o X o o o o o} {o o [X] o o o o...} |
73 2.4 {o o o X o o o o} {o o o [X] o o o...} | 74 2.4 {o o o X o o o o} {o o o [X] o o o...} |
74 2.5 {o o o o X o o o} {...o o o [X] o o o} | 75 2.5 {o o o o X o o o} {o o o o [X] o o...} |
75 2.6 {o o o o o X o o} {...o o o o [X] o o} | 76 2.6 {o o o o o X o o} {o o o o o [X] o...} |
76 2.7 {o o o o o o X o} {...o o o o o [X] o} | 77 2.7 {o o o o o o X o} {o o o o o o [X]...} |
77 2.8 {o o o o o o o X} {...o o o o o o [X]} | 78 2.8 {o o o o o o o X} {...o o o o o o [X]} |
78 | 79 |
| 80 2.9 {o o o o o o o X o} {...o o o o o [X] o} |
| 81 2.10 {o o o o o o o X o o} {...o o o o [X] o o} |
| 82 2.11 {o o o o o o o X o o o} {...o o o [X] o o o} |
| 83 2.12 {o o o o o o o X o o o o} {...o o o [X] o o o...} |
| 84 |
| 85 |
79 3.1 {X o o o o o o o o} {[X] o o o o o o...} | 86 3.1 {X o o o o o o o o} {[X] o o o o o o...} |
80 3.2 {o X o o o o o o o} {o [X] o o o o o...} | 87 3.2 {o X o o o o o o o} {o [X] o o o o o...} |
81 3.3 {o o X o o o o o o} {o o [X] o o o o...} | 88 3.3 {o o X o o o o o o} {o o [X] o o o o...} |
82 3.4 {o o o X o o o o o} {o o o [X] o o o...} | 89 3.4 {o o o X o o o o o} {o o o [X] o o o...} |
83 3.5 {o o o o X o o o o} {...o o o [X] o o o...} | 90 |
84 3.6 {o o o o o X o o o} {...o o o [X] o o o} | 91 3.5 {o o o o o o o X o o o o} {...o o o [X] o o o...} |
85 3.7 {o o o o o o X o o} {...o o o o [X] o o} | 92 3.6 {o o o o o o o o X o o o} {...o o o [X] o o o} |
86 3.8 {o o o o o o o X o} {...o o o o o [X] o} | 93 3.7 {o o o o o o o o o X o o} {...o o o o [X] o o} |
87 3.9 {o o o o o o o o X} {...o o o o o o [X]} | 94 3.8 {o o o o o o o o o o X o} {...o o o o o [X] o} |
| 95 3.9 {o o o o o o o o o o o X} {...o o o o o o [X]} |
88 | 96 |
89 4.1 {X o o o o o X o o} {[X] o o o o o [X]...} | 97 4.1 {X o o o o o X o o} {[X] o o o o o [X]...} |
90 4.2 {o X o o o o o X o} {...[X] o o o o o [X]...} | 98 4.2 {o o o o o o o X o o o o o X o} {...[X] o o o o o [X]...} |
91 4.3 {o o X o o o o o X} {...[X] o o o o o [X]} | 99 4.3 {o o o o o o o o X o o o o o X} {...[X] o o o o o [X]} |
92 | 100 |
93 5.1 {X o o o o X o o o} {[X] o o o o [X] o...} | 101 5.1 {X o o o o X o o o} {[X] o o o o [X] o...} |
94 5.2 {o X o o o o X o o} {...[X] o o o o [X] o...} | 102 5.2 {o o o o o o o X o o o o X o o} {...[X] o o o o [X] o...} |
95 5.3 {o o X o o o o X o} {...[X] o o o o [X] o} | 103 5.3 {o o o o o o o o X o o o o X o} {...[X] o o o o [X] o} |
96 5.4 {o o o X o o o o X} {...o [X] o o o o [X]} | 104 5.4 {o o o o o o o o o X o o o o X} {...o [X] o o o o [X]} |
97 | 105 |
98 6.1 {X o o o X o o o} {[X] o o o [X] o o...} | 106 6.1 {X o o o X o o o} {[X] o o o [X] o o...} |
99 6.2 {o X o o o X o o o} {o [X] o o o [X] o...} | 107 6.2 {o X o o o X o o o} {o [X] o o o [X] o...} |
100 6.3 {o o X o o o X o o} {...o [X] o o o [X] o...} | 108 6.3 {o o o o o o o X o o o X o o} {...o [X] o o o [X] o...} |
101 6.4 {o o o X o o o X o} {...o [X] o o o [X] o} | 109 6.4 {o o o o o o o o X o o o X o} {...o [X] o o o [X] o} |
102 6.5 {o o o o X o o o X} {...o o [X] o o o [X]} | 110 6.5 {o o o o o o o o o X o o o X} {...o o [X] o o o [X]} |
103 | 111 |
104 7.1 {X o o X o o o o o} {[X] o o [X] o o o...} | 112 7.1 {X o o X o o o o o} {[X] o o [X] o o o...} |
105 7.2 {o X o o X o o o o} {o [X] o o [X] o o...} | 113 7.2 {o X o o X o o o o} {o [X] o o [X] o o...} |
106 7.3 {o o X o o X o o o} {...o [X] o o [X] o o...} | 114 7.3 {o o o o o o o X o o X o o o} {...o [X] o o [X] o o...} |
107 7.4 {o o o X o o X o o} {...o [X] o o [X] o o} | 115 7.4 {o o o o o o o o X o o X o o} {...o [X] o o [X] o o} |
108 7.5 {o o o o X o o X o} {...o o [X] o o [X] o} | 116 7.5 {o o o o o o o o o X o o X o} {...o o [X] o o [X] o} |
109 7.6 {o o o o o X o o X} {...o o o [X] o o [X]} | 117 7.6 {o o o o o o o o o o X o o X} {...o o o [X] o o [X]} |
| 118 |
| 119 8.1 {o o o o o o o o o X o o o o o o o o o o o o o o o o X X X o o o} |
| 120 {...o o [X] [X] [X] o o...} |
| 121 8.2 {o o o o o o o. o o X o o o o o o o o o o o o o o o o X X X o o o} |
| 122 {...o o [X] o o o o...} |
| 123 8.3 {o o o o X o o o o o o o o o o o o o o o o o o o o o X X X o o o} |
| 124 {o o o o [X] o o...} |
110 } { | 125 } { |
111 do_snippet_test 1.$tn $doc X $res | 126 do_snippet_test 1.$tn $doc X $res |
112 } | 127 } |
113 | 128 |
114 foreach {tn doc res} { | 129 if {[detail_is_full]} { |
115 1.1 {X Y o o o o o} {[X Y] o o o o o} | 130 foreach {tn doc res} { |
116 1.2 {o X Y o o o o} {o [X Y] o o o o} | 131 1.1 {X Y o o o o o} {[X Y] o o o o o} |
117 1.3 {o o X Y o o o} {o o [X Y] o o o} | 132 1.2 {o X Y o o o o} {o [X Y] o o o o} |
118 1.4 {o o o X Y o o} {o o o [X Y] o o} | 133 1.3 {o o X Y o o o} {o o [X Y] o o o} |
119 1.5 {o o o o X Y o} {o o o o [X Y] o} | 134 1.4 {o o o X Y o o} {o o o [X Y] o o} |
120 1.6 {o o o o o X Y} {o o o o o [X Y]} | 135 1.5 {o o o o X Y o} {o o o o [X Y] o} |
| 136 1.6 {o o o o o X Y} {o o o o o [X Y]} |
121 | 137 |
122 2.1 {X Y o o o o o o} {[X Y] o o o o o...} | 138 2.1 {X Y o o o o o o} {[X Y] o o o o o...} |
123 2.2 {o X Y o o o o o} {o [X Y] o o o o...} | 139 2.2 {o X Y o o o o o} {o [X Y] o o o o...} |
124 2.3 {o o X Y o o o o} {o o [X Y] o o o...} | 140 2.3 {o o X Y o o o o} {o o [X Y] o o o...} |
125 2.4 {o o o X Y o o o} {...o o [X Y] o o o} | 141 2.4 {o o o o o o o X Y o o o} {...o o [X Y] o o o} |
126 2.5 {o o o o X Y o o} {...o o o [X Y] o o} | 142 2.5 {o o o o o o o o X Y o o} {...o o o [X Y] o o} |
127 2.6 {o o o o o X Y o} {...o o o o [X Y] o} | 143 2.6 {o o o o o o o o o X Y o} {...o o o o [X Y] o} |
128 2.7 {o o o o o o X Y} {...o o o o o [X Y]} | 144 2.7 {o o o o o o o o o o X Y} {...o o o o o [X Y]} |
129 | 145 |
130 3.1 {X Y o o o o o o o} {[X Y] o o o o o...} | 146 3.1 {X Y o o o o o o o} {[X Y] o o o o o...} |
131 3.2 {o X Y o o o o o o} {o [X Y] o o o o...} | 147 3.2 {o X Y o o o o o o} {o [X Y] o o o o...} |
132 3.3 {o o X Y o o o o o} {o o [X Y] o o o...} | 148 3.3 {o o X Y o o o o o} {o o [X Y] o o o...} |
133 3.4 {o o o X Y o o o o} {...o o [X Y] o o o...} | 149 3.4 {o o o o o o o X Y o o o o} {...o o [X Y] o o o...} |
134 3.5 {o o o o X Y o o o} {...o o [X Y] o o o} | 150 3.5 {o o o o o o o o X Y o o o} {...o o [X Y] o o o} |
135 3.6 {o o o o o X Y o o} {...o o o [X Y] o o} | 151 3.6 {o o o o o o o o o X Y o o} {...o o o [X Y] o o} |
136 3.7 {o o o o o o X Y o} {...o o o o [X Y] o} | 152 3.7 {o o o o o o o o o o X Y o} {...o o o o [X Y] o} |
137 3.8 {o o o o o o o X Y} {...o o o o o [X Y]} | 153 3.8 {o o o o o o o o o o o X Y} {...o o o o o [X Y]} |
| 154 } { |
| 155 do_snippet_test 2.$tn $doc "X + Y" $res |
| 156 } |
| 157 } |
138 | 158 |
| 159 do_execsql_test 4.0 { |
| 160 CREATE VIRTUAL TABLE x1 USING fts5(a, b); |
| 161 INSERT INTO x1 VALUES('xyz', '1 2 3 4 5 6 7 8 9 10 11 12 13'); |
| 162 SELECT snippet(x1, 1, '[', ']', '...', 5) FROM x1('xyz'); |
139 } { | 163 } { |
140 do_snippet_test 2.$tn $doc "X + Y" $res | 164 {1 2 3 4 5...} |
141 } | 165 } |
142 | 166 |
| 167 do_execsql_test 5.0 { |
| 168 CREATE VIRTUAL TABLE p1 USING fts5(a, b); |
| 169 INSERT INTO p1 VALUES( |
| 170 'x a a a a a a a a a a', |
| 171 'a a a a a a a a a a a a a a a a a a a x' |
| 172 ); |
| 173 } |
| 174 do_execsql_test 5.1 { |
| 175 SELECT snippet(p1, 0, '[', ']', '...', 6) FROM p1('x'); |
| 176 } {{[x] a a a a a...}} |
| 177 |
| 178 } ;# foreach_detail_mode |
| 179 |
143 finish_test | 180 finish_test |
144 | 181 |
OLD | NEW |