| # 2016 Jan 19 |
| # |
| # 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. |
| # |
| #************************************************************************* |
| # This file implements regression tests for SQLite library. The |
| # focus of this script is testing the FTS5 module. |
| # |
| |
| source [file join [file dirname [info script]] fts5_common.tcl] |
| set testprefix fts5bigtok |
| return_if_no_fts5 |
| |
| proc rndterm {} { |
| set L [list a b c d e f g h i j k l m n o p q r s t u v w x y z] |
| set l [lindex $L [expr int(rand() * [llength $L])]] |
| string repeat $l [expr int(rand() * 5) + 60] |
| } |
| |
| proc rnddoc {n} { |
| set res [list] |
| for {set i 0} {$i < $n} {incr i} { |
| lappend res [rndterm] |
| } |
| set res |
| } |
| |
| foreach_detail_mode $::testprefix { |
| db func rnddoc rnddoc |
| do_execsql_test 1.0 { |
| CREATE VIRTUAL TABLE t1 USING fts5(x, detail=%DETAIL%); |
| INSERT INTO t1(t1, rank) VALUES('pgsz', 32); |
| CREATE VIRTUAL TABLE t1vocab USING fts5vocab(t1, row); |
| |
| WITH s(i) AS ( SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<10 ) |
| INSERT INTO t1 SELECT rnddoc(3) FROM s; |
| |
| WITH s(i) AS ( SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<10 ) |
| INSERT INTO t1 SELECT rnddoc(3) FROM s; |
| } |
| |
| foreach v [db eval {SELECT term FROM t1vocab}] { |
| set res [db eval {SELECT rowid FROM t1($v)}] |
| do_execsql_test 1.[string range $v 0 0] { |
| SELECT rowid FROM t1($v) ORDER BY rowid DESC |
| } [lsort -integer -decr $res] |
| } |
| |
| do_execsql_test 2.0 { |
| INSERT INTO t1(t1) VALUES('optimize'); |
| } |
| |
| foreach v [db eval {SELECT term FROM t1vocab}] { |
| set res [db eval {SELECT rowid FROM t1($v)}] |
| do_execsql_test 2.[string range $v 0 0] { |
| SELECT rowid FROM t1($v) ORDER BY rowid DESC |
| } [lsort -integer -decr $res] |
| } |
| } |
| |
| finish_test |