modernc.org/cc@v1.0.1/v2/testdata/_sqlite/ext/fts5/test/fts5ak.test (about)

     1  # 2014 November 24
     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  # Specifically, the auxiliary function "highlight".
    15  #
    16  
    17  source [file join [file dirname [info script]] fts5_common.tcl]
    18  set testprefix fts5ak
    19  
    20  # If SQLITE_ENABLE_FTS5 is defined, omit this file.
    21  ifcapable !fts5 {
    22    finish_test
    23    return
    24  }
    25  
    26  foreach_detail_mode $testprefix {
    27  
    28  do_execsql_test 1.1 {
    29    CREATE VIRTUAL TABLE ft1 USING fts5(x, detail=%DETAIL%);
    30    INSERT INTO ft1 VALUES('i d d a g i b g d d');
    31    INSERT INTO ft1 VALUES('h d b j c c g a c a');
    32    INSERT INTO ft1 VALUES('e j a e f h b f h h');
    33    INSERT INTO ft1 VALUES('j f h d g h i b d f');
    34    INSERT INTO ft1 VALUES('d c j d c j b c g e');
    35    INSERT INTO ft1 VALUES('i a d e g j g d a a');
    36    INSERT INTO ft1 VALUES('j f c e d a h j d b');
    37    INSERT INTO ft1 VALUES('i c c f a d g h j e');
    38    INSERT INTO ft1 VALUES('i d i g c d c h b f');
    39    INSERT INTO ft1 VALUES('g d a e h a b c f j');
    40  
    41    CREATE VIRTUAL TABLE ft2 USING fts5(x, detail=%DETAIL%);
    42    INSERT INTO ft2 VALUES('a b c d e f g h i j');
    43  }
    44  
    45  do_execsql_test 1.2 {
    46    SELECT highlight(ft1, 0, '[', ']') FROM ft1 WHERE ft1 MATCH 'e';
    47  } {
    48    {[e] j a [e] f h b f h h}
    49    {d c j d c j b c g [e]}
    50    {i a d [e] g j g d a a}
    51    {j f c [e] d a h j d b}
    52    {i c c f a d g h j [e]}
    53    {g d a [e] h a b c f j}
    54  }
    55  
    56  do_execsql_test 1.3 {
    57    SELECT highlight(ft1, 0, '[', ']') FROM ft1 WHERE ft1 MATCH 'e e e'
    58  } {
    59    {[e] j a [e] f h b f h h}
    60    {d c j d c j b c g [e]}
    61    {i a d [e] g j g d a a}
    62    {j f c [e] d a h j d b}
    63    {i c c f a d g h j [e]}
    64    {g d a [e] h a b c f j}
    65  }
    66  
    67  do_execsql_test 1.4 {
    68    SELECT highlight(ft2, 0, '[', ']') FROM ft2 WHERE ft2 MATCH 'f d'
    69  } {
    70    {a b c [d] e [f] g h i j}
    71  }
    72  
    73  do_execsql_test 1.5 {
    74    SELECT highlight(ft2, 0, '[', ']') FROM ft2 WHERE ft2 MATCH 'd f'
    75  } {
    76    {a b c [d] e [f] g h i j}
    77  }
    78  
    79  #-------------------------------------------------------------------------
    80  # Tests below this point require detail=full.
    81  #-------------------------------------------------------------------------
    82  if {[detail_is_full]==0} continue
    83  
    84  
    85  do_execsql_test 2.1 {
    86    SELECT highlight(ft1, 0, '[', ']') FROM ft1 WHERE ft1 MATCH 'h + d';
    87  } {
    88    {[h d] b j c c g a c a}
    89    {j f [h d] g h i b d f} 
    90  }
    91  
    92  do_execsql_test 2.2 {
    93    SELECT highlight(ft1, 0, '[', ']') FROM ft1 WHERE ft1 MATCH 'd + d';
    94  } {
    95    {i [d d] a g i b g [d d]}
    96  }
    97  
    98  do_execsql_test 2.3 {
    99    SELECT highlight(ft1, 0, '[', ']') FROM ft1 WHERE ft1 MATCH 'd + d d + d';
   100  } {
   101    {i [d d] a g i b g [d d]}
   102  }
   103  
   104  do_execsql_test 2.4 {
   105    SELECT highlight(ft2, 0, '[', ']') FROM ft2 WHERE ft2 MATCH 'b+c+d c+d+e'
   106  } {{a [b c d e] f g h i j}}
   107  
   108  do_execsql_test 2.5 {
   109    SELECT highlight(ft2, 0, '[', ']') FROM ft2 WHERE ft2 MATCH 'b+c+d e+f+g'
   110  } {
   111    {a [b c d] [e f g] h i j}
   112  }
   113  
   114  do_execsql_test 2.6 {
   115    SELECT highlight(ft2, 0, '[', ']') FROM ft2 WHERE ft2 MATCH 'b+c+d c'
   116  } {
   117    {a [b c d] e f g h i j}
   118  }
   119  
   120  do_execsql_test 2.7 {
   121    SELECT highlight(ft2, 0, '[', ']') FROM ft2 WHERE ft2 MATCH 'b+c c+d+e'
   122  } {
   123    {a [b c d e] f g h i j}
   124  }
   125  
   126  #-------------------------------------------------------------------------
   127  # The example from the docs.
   128  #
   129  do_execsql_test 3.1 {
   130    -- Assuming this:
   131    CREATE VIRTUAL TABLE ft USING fts5(a, detail=%DETAIL%);
   132    INSERT INTO ft VALUES('a b c x c d e');
   133    INSERT INTO ft VALUES('a b c c d e');
   134    INSERT INTO ft VALUES('a b c d e');
   135  
   136    -- The following SELECT statement returns these three rows:
   137    --   '[a b c] x [c d e]'
   138    --   '[a b c] [c d e]'
   139    --   '[a b c d e]'
   140    SELECT highlight(ft, 0, '[', ']') FROM ft WHERE ft MATCH 'a+b+c AND c+d+e';
   141  } {
   142    {[a b c] x [c d e]}
   143    {[a b c] [c d e]}
   144    {[a b c d e]}
   145  }
   146  
   147  }
   148  
   149  finish_test