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