modernc.org/cc@v1.0.1/v2/testdata/_sqlite/ext/fts5/test/fts5af.test (about) 1 # 2014 June 17 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 FTS5 module. 13 # 14 # More specifically, the tests in this file focus on the built-in 15 # snippet() function. 16 # 17 18 source [file join [file dirname [info script]] fts5_common.tcl] 19 set testprefix fts5af 20 21 # If SQLITE_ENABLE_FTS5 is defined, omit this file. 22 ifcapable !fts5 { 23 finish_test 24 return 25 } 26 27 foreach_detail_mode $testprefix { 28 29 do_execsql_test 1.0 { 30 CREATE VIRTUAL TABLE t1 USING fts5(x, y, detail=%DETAIL%); 31 } 32 33 proc do_snippet_test {tn doc match res} { 34 35 uplevel #0 [list set v1 $doc] 36 uplevel #0 [list set v2 $match] 37 38 do_execsql_test $tn.1 { 39 DELETE FROM t1; 40 INSERT INTO t1 VALUES($v1, NULL); 41 SELECT snippet(t1, -1, '[', ']', '...', 7) FROM t1 WHERE t1 MATCH $v2; 42 } [list $res] 43 44 do_execsql_test $tn.2 { 45 DELETE FROM t1; 46 INSERT INTO t1 VALUES(NULL, $v1); 47 SELECT snippet(t1, -1, '[', ']', '...', 7) FROM t1 WHERE t1 MATCH $v2; 48 } [list $res] 49 50 do_execsql_test $tn.3 { 51 DELETE FROM t1; 52 INSERT INTO t1 VALUES($v1, NULL); 53 SELECT snippet(t1, -1, '[', ']', '...', 7) FROM t1 WHERE t1 MATCH $v2 54 ORDER BY rank DESC; 55 } [list $res] 56 57 58 } 59 60 61 foreach {tn doc res} { 62 63 1.1 {X o o o o o o} {[X] o o o o o o} 64 1.2 {o X o o o o o} {o [X] o o o o o} 65 1.3 {o o X o o o o} {o o [X] o o o o} 66 1.4 {o o o X o o o} {o o o [X] o o o} 67 1.5 {o o o o X o o} {o o o o [X] o o} 68 1.6 {o o o o o X o} {o o o o o [X] o} 69 1.7 {o o o o o o X} {o o o o o o [X]} 70 71 2.1 {X o o o o o o o} {[X] o o o o o o...} 72 2.2 {o X o o o o o o} {o [X] o o o o o...} 73 2.3 {o o X o o o o o} {o o [X] o o o o...} 74 2.4 {o o o X o 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...} 76 2.6 {o o o o o X o 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]...} 78 2.8 {o o o o o o o X} {...o o o o o o [X]} 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 86 3.1 {X o o o o o o o o} {[X] o o o o o o...} 87 3.2 {o X o o o o o o o} {o [X] o o o o o...} 88 3.3 {o o X o o o o o o} {o o [X] o o o o...} 89 3.4 {o o o X o o o o o} {o o o [X] o o o...} 90 91 3.5 {o o o o o o o X o o o o} {...o o o [X] o o o...} 92 3.6 {o o o o o o o o X o o o} {...o o o [X] o o o} 93 3.7 {o o o o o o o o o X o o} {...o o o o [X] o o} 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]} 96 97 4.1 {X o o o o o X o 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]...} 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]} 100 101 5.1 {X o o o o X o 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...} 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} 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]} 105 106 6.1 {X o o o X o o o} {[X] o o o [X] o o...} 107 6.2 {o X o o o X o 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...} 109 6.4 {o o o o o o o o X o o o X o} {...o [X] o o o [X] o} 110 6.5 {o o o o o o o o o X o o o X} {...o o [X] o o o [X]} 111 112 7.1 {X o o X o o o o o} {[X] o o [X] o o o...} 113 7.2 {o X o o X o 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...} 115 7.4 {o o o o o o o o X o o X o o} {...o [X] o o [X] o 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} 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...} 125 } { 126 do_snippet_test 1.$tn $doc X $res 127 } 128 129 if {[detail_is_full]} { 130 foreach {tn doc res} { 131 1.1 {X Y o o o o o} {[X Y] o o o o o} 132 1.2 {o X Y o o o o} {o [X Y] o o o o} 133 1.3 {o o X Y o o o} {o o [X Y] o o o} 134 1.4 {o o o X Y o o} {o o o [X Y] o o} 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]} 137 138 2.1 {X Y o o o o o o} {[X Y] o o o o o...} 139 2.2 {o X Y o o o o o} {o [X Y] o o o o...} 140 2.3 {o o X Y o 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} 142 2.5 {o o o o o o o o X Y o o} {...o o o [X Y] o o} 143 2.6 {o o o o o o o o o X Y o} {...o o o o [X Y] o} 144 2.7 {o o o o o o o o o o X Y} {...o o o o o [X Y]} 145 146 3.1 {X Y o o o o o o o} {[X Y] o o o o o...} 147 3.2 {o X Y o o o o o o} {o [X Y] o o o o...} 148 3.3 {o o X Y o 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...} 150 3.5 {o o o o o o o o X Y o o o} {...o o [X Y] o 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} 152 3.7 {o o o o o o o o o o X Y o} {...o o o o [X Y] o} 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 } 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'); 163 } { 164 {1 2 3 4 5...} 165 } 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 180 finish_test