| # 2017 August 10 |
| # |
| # The author disclaims copyright to this source code. In place of |
| # a legal notice, here is a blessing: |
| # |
| # May you do good and not evil. |
| # May you find forgiveness for yourself and forgive others. |
| # May you share freely, never taking more than you give. |
| # |
| #*********************************************************************** |
| # |
| # The tests in this file focus on testing the fts5vocab module. |
| # |
| |
| source [file join [file dirname [info script]] fts5_common.tcl] |
| set testprefix fts5vocab2 |
| |
| # If SQLITE_ENABLE_FTS5 is defined, omit this file. |
| ifcapable !fts5 { |
| finish_test |
| return |
| } |
| |
| do_execsql_test 1.0 { |
| CREATE VIRTUAL TABLE t1 USING fts5(a, b); |
| CREATE VIRTUAL TABLE v1 USING fts5vocab(t1, instance); |
| |
| INSERT INTO t1 VALUES('one two', 'two three'); |
| INSERT INTO t1 VALUES('three four', 'four five five five'); |
| } |
| |
| do_execsql_test 1.1 { |
| SELECT * FROM v1; |
| } { |
| five 2 b 1 |
| five 2 b 2 |
| five 2 b 3 |
| four 2 a 1 |
| four 2 b 0 |
| one 1 a 0 |
| three 1 b 1 |
| three 2 a 0 |
| two 1 a 1 |
| two 1 b 0 |
| } |
| |
| do_execsql_test 1.2 { |
| SELECT * FROM v1 WHERE term='three'; |
| } { |
| three 1 b 1 |
| three 2 a 0 |
| } |
| |
| do_execsql_test 1.3 { |
| BEGIN; |
| DELETE FROM t1 WHERE rowid=2; |
| SELECT * FROM v1; |
| ROLLBACK; |
| } { |
| one 1 a 0 |
| three 1 b 1 |
| two 1 a 1 |
| two 1 b 0 |
| } |
| |
| do_execsql_test 1.4 { |
| BEGIN; |
| DELETE FROM t1 WHERE rowid=1; |
| SELECT * FROM v1; |
| ROLLBACK; |
| } { |
| five 2 b 1 |
| five 2 b 2 |
| five 2 b 3 |
| four 2 a 1 |
| four 2 b 0 |
| three 2 a 0 |
| } |
| |
| do_execsql_test 1.5 { |
| DELETE FROM t1; |
| SELECT * FROM v1; |
| } {} |
| |
| #------------------------------------------------------------------------- |
| # |
| do_execsql_test 2.0 { |
| DROP TABLE IF EXISTS t1; |
| DROP TABLE IF EXISTS v1; |
| |
| CREATE VIRTUAL TABLE t1 USING fts5(a, b, detail=column); |
| CREATE VIRTUAL TABLE v1 USING fts5vocab(t1, instance); |
| |
| INSERT INTO t1 VALUES('one two', 'two three'); |
| INSERT INTO t1 VALUES('three four', 'four five five five'); |
| } |
| |
| do_execsql_test 2.1 { |
| SELECT * FROM v1; |
| } { |
| five 2 b {} |
| four 2 a {} |
| four 2 b {} |
| one 1 a {} |
| three 1 b {} |
| three 2 a {} |
| two 1 a {} |
| two 1 b {} |
| } |
| |
| do_execsql_test 2.2 { |
| SELECT * FROM v1 WHERE term='three'; |
| } { |
| three 1 b {} |
| three 2 a {} |
| } |
| |
| do_execsql_test 2.3 { |
| BEGIN; |
| DELETE FROM t1 WHERE rowid=2; |
| SELECT * FROM v1; |
| ROLLBACK; |
| } { |
| one 1 a {} |
| three 1 b {} |
| two 1 a {} |
| two 1 b {} |
| } |
| |
| do_execsql_test 2.4 { |
| BEGIN; |
| DELETE FROM t1 WHERE rowid=1; |
| SELECT * FROM v1; |
| ROLLBACK; |
| } { |
| five 2 b {} |
| four 2 a {} |
| four 2 b {} |
| three 2 a {} |
| } |
| |
| do_execsql_test 2.5 { |
| DELETE FROM t1; |
| SELECT * FROM v1; |
| } {} |
| |
| #------------------------------------------------------------------------- |
| # |
| do_execsql_test 3.0 { |
| DROP TABLE IF EXISTS t1; |
| DROP TABLE IF EXISTS v1; |
| |
| CREATE VIRTUAL TABLE t1 USING fts5(a, b, detail=none); |
| CREATE VIRTUAL TABLE v1 USING fts5vocab(t1, instance); |
| |
| INSERT INTO t1 VALUES('one two', 'two three'); |
| INSERT INTO t1 VALUES('three four', 'four five five five'); |
| } |
| |
| do_execsql_test 3.1 { |
| SELECT * FROM v1; |
| } { |
| five 2 {} {} |
| four 2 {} {} |
| one 1 {} {} |
| three 1 {} {} |
| three 2 {} {} |
| two 1 {} {} |
| } |
| |
| do_execsql_test 3.2 { |
| SELECT * FROM v1 WHERE term='three'; |
| } { |
| three 1 {} {} |
| three 2 {} {} |
| } |
| |
| do_execsql_test 3.3 { |
| BEGIN; |
| DELETE FROM t1 WHERE rowid=2; |
| SELECT * FROM v1; |
| ROLLBACK; |
| } { |
| one 1 {} {} |
| three 1 {} {} |
| two 1 {} {} |
| } |
| |
| do_execsql_test 3.4 { |
| BEGIN; |
| DELETE FROM t1 WHERE rowid=1; |
| SELECT * FROM v1; |
| ROLLBACK; |
| } { |
| five 2 {} {} |
| four 2 {} {} |
| three 2 {} {} |
| } |
| |
| do_execsql_test 3.5 { |
| DELETE FROM t1; |
| SELECT * FROM v1; |
| } {} |
| |
| finish_test |