Annotation of embedaddon/sqlite3/test/fts2g.test, revision 1.1
1.1 ! misho 1: # 2006 October 19
! 2: #
! 3: # The author disclaims copyright to this source code.
! 4: #
! 5: #*************************************************************************
! 6: # This file implements regression tests for SQLite library. The focus
! 7: # of this script is testing handling of edge cases for various doclist
! 8: # merging functions in the FTS2 module query logic.
! 9: #
! 10: # $Id: fts2g.test,v 1.3 2007/11/16 00:23:08 shess Exp $
! 11: #
! 12:
! 13: set testdir [file dirname $argv0]
! 14: source $testdir/tester.tcl
! 15:
! 16: # If SQLITE_ENABLE_FTS2 is defined, omit this file.
! 17: ifcapable !fts2 {
! 18: finish_test
! 19: return
! 20: }
! 21:
! 22: db eval {
! 23: CREATE VIRTUAL TABLE t1 USING fts2(content);
! 24: INSERT INTO t1 (rowid, content) VALUES(1, 'this is a test');
! 25: INSERT INTO t1 (rowid, content) VALUES(2, 'also a test');
! 26: }
! 27:
! 28: # No hits at all. Returns empty doclists from termSelect().
! 29: do_test fts2g-1.1 {
! 30: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something'}
! 31: } {}
! 32:
! 33: # Empty left in docListExceptMerge().
! 34: do_test fts2g-1.2 {
! 35: execsql {SELECT rowid FROM t1 WHERE t1 MATCH '-this something'}
! 36: } {}
! 37:
! 38: # Empty right in docListExceptMerge().
! 39: do_test fts2g-1.3 {
! 40: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this -something'}
! 41: } {1}
! 42:
! 43: # Empty left in docListPhraseMerge().
! 44: do_test fts2g-1.4 {
! 45: execsql {SELECT rowid FROM t1 WHERE t1 MATCH '"this something"'}
! 46: } {}
! 47:
! 48: # Empty right in docListPhraseMerge().
! 49: do_test fts2g-1.5 {
! 50: execsql {SELECT rowid FROM t1 WHERE t1 MATCH '"something is"'}
! 51: } {}
! 52:
! 53: # Empty left in docListOrMerge().
! 54: do_test fts2g-1.6 {
! 55: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something OR this'}
! 56: } {1}
! 57:
! 58: # Empty right in docListOrMerge().
! 59: do_test fts2g-1.7 {
! 60: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this OR something'}
! 61: } {1}
! 62:
! 63: # Empty left in docListAndMerge().
! 64: do_test fts2g-1.8 {
! 65: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something this'}
! 66: } {}
! 67:
! 68: # Empty right in docListAndMerge().
! 69: do_test fts2g-1.9 {
! 70: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this something'}
! 71: } {}
! 72:
! 73: # No support for all-except queries.
! 74: do_test fts2g-1.10 {
! 75: catchsql {SELECT rowid FROM t1 WHERE t1 MATCH '-this -something'}
! 76: } {1 {SQL logic error or missing database}}
! 77:
! 78: # Test that docListOrMerge() correctly handles reaching the end of one
! 79: # doclist before it reaches the end of the other.
! 80: do_test fts2g-1.11 {
! 81: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'this OR also'}
! 82: } {1 2}
! 83: do_test fts2g-1.12 {
! 84: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'also OR this'}
! 85: } {1 2}
! 86:
! 87: # Empty left and right in docListOrMerge(). Each term matches neither
! 88: # row, and when combined there was an assertion failure.
! 89: do_test fts2g-1.13 {
! 90: execsql {SELECT rowid FROM t1 WHERE t1 MATCH 'something OR nothing'}
! 91: } {}
! 92:
! 93: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>