OLD | NEW |
(Empty) | |
| 1 # 2016 Jan 15 |
| 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 |
| 13 source [file join [file dirname [info script]] fts5_common.tcl] |
| 14 ifcapable !fts5 { finish_test ; return } |
| 15 set ::testprefix fts5tok1 |
| 16 |
| 17 |
| 18 sqlite3_fts5_register_fts5tokenize db |
| 19 |
| 20 #------------------------------------------------------------------------- |
| 21 # Simple test cases. Using the default (ascii) tokenizer. |
| 22 # |
| 23 do_execsql_test 1.0 { |
| 24 CREATE VIRTUAL TABLE t1 USING fts5tokenize(ascii); |
| 25 CREATE VIRTUAL TABLE t2 USING fts5tokenize(); |
| 26 CREATE VIRTUAL TABLE t3 USING fts5tokenize( |
| 27 ascii, 'separators', 'xyz', tokenchars, '''' |
| 28 ); |
| 29 } |
| 30 |
| 31 foreach {tn tbl} {1 t1 2 t2 3 t3} { |
| 32 do_execsql_test 1.$tn.1 "SELECT input, * FROM $tbl ('one two three')" { |
| 33 {one two three} one 0 3 0 |
| 34 {one two three} two 4 7 1 |
| 35 {one two three} three 8 13 2 |
| 36 } |
| 37 |
| 38 do_execsql_test 1.$tn.2 " |
| 39 SELECT token FROM $tbl WHERE input = 'OnE tWo tHrEe' |
| 40 " { |
| 41 one two three |
| 42 } |
| 43 } |
| 44 |
| 45 do_execsql_test 1.4 { |
| 46 SELECT token FROM t3 WHERE input = '1x2x3x' |
| 47 } {1 2 3} |
| 48 |
| 49 do_execsql_test 1.5 { |
| 50 SELECT token FROM t1 WHERE input = '1x2x3x' |
| 51 } {1x2x3x} |
| 52 |
| 53 do_execsql_test 1.6 { |
| 54 SELECT token FROM t3 WHERE input = '1''2x3x' |
| 55 } {1'2 3} |
| 56 |
| 57 do_execsql_test 1.7 { |
| 58 SELECT token FROM t3 WHERE input = '' |
| 59 } {} |
| 60 |
| 61 do_execsql_test 1.8 { |
| 62 SELECT token FROM t3 WHERE input = NULL |
| 63 } {} |
| 64 |
| 65 do_execsql_test 1.9 { |
| 66 SELECT input, * FROM t3 WHERE input = 123 |
| 67 } {123 123 0 3 0} |
| 68 |
| 69 do_execsql_test 1.10 { |
| 70 SELECT input, * FROM t1 WHERE input = 'a b c' AND token = 'b'; |
| 71 } { |
| 72 {a b c} b 2 3 1 |
| 73 } |
| 74 |
| 75 do_execsql_test 1.11 { |
| 76 SELECT input, * FROM t1 WHERE token = 'b' AND input = 'a b c'; |
| 77 } { |
| 78 {a b c} b 2 3 1 |
| 79 } |
| 80 |
| 81 do_execsql_test 1.12 { |
| 82 SELECT input, * FROM t1 WHERE input < 'b' AND input = 'a b c'; |
| 83 } { |
| 84 {a b c} a 0 1 0 |
| 85 {a b c} b 2 3 1 |
| 86 {a b c} c 4 5 2 |
| 87 } |
| 88 |
| 89 do_execsql_test 1.13.1 { |
| 90 CREATE TABLE c1(x); |
| 91 INSERT INTO c1(x) VALUES('a b c'); |
| 92 INSERT INTO c1(x) VALUES('d e f'); |
| 93 } |
| 94 do_execsql_test 1.13.2 { |
| 95 SELECT c1.*, input, t1.* FROM c1, t1 WHERE input = x AND c1.rowid=t1.rowid; |
| 96 } { |
| 97 {a b c} {a b c} a 0 1 0 |
| 98 {d e f} {d e f} e 2 3 1 |
| 99 } |
| 100 |
| 101 |
| 102 #------------------------------------------------------------------------- |
| 103 # Error cases. |
| 104 # |
| 105 do_catchsql_test 2.0 { |
| 106 CREATE VIRTUAL TABLE tX USING fts5tokenize(nosuchtokenizer); |
| 107 } {1 {vtable constructor failed: tX}} |
| 108 |
| 109 do_catchsql_test 2.1 { |
| 110 CREATE VIRTUAL TABLE t4 USING fts5tokenize; |
| 111 SELECT * FROM t4; |
| 112 } {1 {SQL logic error or missing database}} |
| 113 |
| 114 |
| 115 finish_test |
OLD | NEW |