# 2012 December 17
#
# 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.
#
#*************************************************************************
#
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix fts5expr1
foreach {tn expr res} {
1 { abc } {"abc"}
2 { abc AND def } {"abc" AND "def"}
3 { (abc) } {"abc"}
4 { (((abc))) } {"abc"}
5 { one OR two AND three } {"one" OR ("two" AND "three")}
6 { one AND two OR three } {("one" AND "two") OR "three"}
7 { "abc def" } {"abc"+"def"}
8 { abc+def } {"abc"+"def"}
9 { "abc def" + ghi } {"abc"+"def"+"ghi"}
10 { one AND two OR three } {("one" AND "two") OR "three"}
11 { one AND (two OR three) } {"one" AND ("two" OR "three")}
12 { "abc""def" } {"abc"+"def"}
13 { "abc" "def" } {"abc" AND "def"}
14 { "abc" + "def" } {"abc"+"def"}
15 { a NOT b AND c OR d } {(("a" NOT "b") AND "c") OR "d"}
16 { a OR b AND c NOT d } {"a" OR ("b" AND ("c" NOT "d"))}
17 { (a OR b) AND c NOT d } {("a" OR "b") AND ("c" NOT "d")}
18 { a NEAR/10 b } {"a" NEAR/10 "b"}
19 { a NEAR b } {"a" NEAR/10 "b"}
20 { a AND b OR c + d NEAR/52 e } {("a" AND "b") OR ("c"+"d" NEAR/52 "e")}
} {
do_execsql_test 1.$tn {
SELECT fts5_parse_expr('simple', $expr, '')
} [list [string trim $res]]
}
do_execsql_test 2.0 {
CREATE TABLE t1(a, b, c);
}
foreach {tn expr res} {
1 { a : abc } {"a":"abc"}
2 { b : abc + def} {"b":"abc"+"def"}
} {
do_execsql_test 2.$tn {
SELECT fts5_parse_expr('simple', $expr, 't1')
} [list [string trim $res]]
}
breakpoint
foreach {tn expr res} {
1 { abc* } {"abc"*}
} {
do_execsql_test 3.$tn {
SELECT fts5_parse_expr('simple', $expr, 't1')
} [list [string trim $res]]
}
finish_test