diff --git a/tests/langparser1/langparser1.sh b/tests/langparser1/langparser1.sh new file mode 100755 index 00000000..62ce5144 --- /dev/null +++ b/tests/langparser1/langparser1.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +# langparser actually test queries. We only test the language parser, the tested reference is the Xapian query. + +topdir=`dirname $0`/.. +. $topdir/shared.sh + +initvariables $0 +xrun() +{ + echo $* + $* +} + +( + for Q in \ + 'A' \ + 'A B' \ + 'A AND B' \ + 'A OR B' \ + 'A OR B AND C' \ + 'A AND B OR C' \ + '(A AND B) OR (C AND D)' \ + '(A OR B) AND (C OR D)' \ + '-the B' \ + 'A -B' \ + 'mime:text/plain' \ + 'size>10k' \ + 'date:3000-01-01' \ + 'mime:text/plain A OR B mime:text/html' \ + 'mime:text/plain A AND B mime:text/html' \ + 'mime:text/plain mime:text/html (A B) ' \ + 'mime:text/plain OR mime:text/html OR (A B) ' \ + 'rclcat:media A' \ + 'rclcat:media rclcat:message A' \ + 'A size>10k' \ + 'size>10k A' \ + 'date:3000-01-01 A' \ + 'A OR B date:3000-01-01' \ + 'A OR B AND date:3000-01-01' \ + 'title:A B' \ + 'title:A -B' \ + 'A -title:B' \ + ; do + # The " $Q" is there to avoid issue with a query beginning with - + # (recollq does not grok --) + printf "%60s" "Query: $Q -> ";recollq -Q -q " $Q" + done +) 2> $mystderr | egrep -v 'results|^Query setup took' > $mystdout + +diff -w ${myname}.txt $mystdout > $mydiffs 2>&1 + +checkresult diff --git a/tests/langparser1/langparser1.txt b/tests/langparser1/langparser1.txt new file mode 100644 index 00000000..18335d11 --- /dev/null +++ b/tests/langparser1/langparser1.txt @@ -0,0 +1,27 @@ + Query: A -> Recoll query: (a:(wqf=11)) + Query: A B -> Recoll query: ((a:(wqf=11) AND b:(wqf=11))) + Query: A AND B -> Recoll query: ((a:(wqf=11) AND b:(wqf=11))) + Query: A OR B -> Recoll query: ((a:(wqf=11) OR b:(wqf=11))) + Query: A OR B AND C -> Recoll query: (((a:(wqf=11) OR b:(wqf=11)) AND c:(wqf=11))) + Query: A AND B OR C -> Recoll query: ((a:(wqf=11) AND (b:(wqf=11) OR c:(wqf=11)))) + Query: (A AND B) OR (C AND D) -> Recoll query: (((a:(wqf=11) AND b:(wqf=11)) OR (c:(wqf=11) AND d:(wqf=11)))) + Query: (A OR B) AND (C OR D) -> Recoll query: (((a:(wqf=11) OR b:(wqf=11)) AND (c:(wqf=11) OR d:(wqf=11)))) + Query: -the B -> Recoll query: ((( AND_NOT the:(wqf=11)) AND b:(wqf=11))) + Query: A -B -> Recoll query: ((a:(wqf=11) AND ( AND_NOT b:(wqf=11)))) + Query: mime:text/plain -> Recoll query: (( FILTER Ttext/plain)) + Query: size>10k -> Recoll query: (( FILTER VALUE_GE 2 000000010000)) + Query: date:3000-01-01 -> Recoll query: (( FILTER D30000101)) + Query: mime:text/plain A OR B mime:text/html -> Recoll query: (((a:(wqf=11) OR b:(wqf=11)) FILTER (Ttext/html OR Ttext/plain))) + Query: mime:text/plain A AND B mime:text/html -> Recoll query: (((a:(wqf=11) AND b:(wqf=11)) FILTER (Ttext/html OR Ttext/plain))) + Query: mime:text/plain mime:text/html (A B) -> Recoll query: (((a:(wqf=11) AND b:(wqf=11)) FILTER (Ttext/html OR Ttext/plain))) + Query: mime:text/plain OR mime:text/html OR (A B) -> Recoll query: (((a:(wqf=11) AND b:(wqf=11)) FILTER (Ttext/html OR Ttext/plain))) + Query: rclcat:media A -> Recoll query: ((a:(wqf=11) FILTER (Tapplication/ogg OR Tapplication/x-flac OR Taudio/mpeg OR Taudio/x-karaoke OR Timage/bmp OR Timage/gif OR Timage/jpeg OR Timage/png OR Timage/svg+xml OR Timage/tiff OR Timage/vnd.djvu OR Timage/x-icon OR Timage/x-xcf OR Timage/x-xpmi OR Tvideo/*))) + Query: rclcat:media rclcat:message A -> Recoll query: ((a:(wqf=11) FILTER (Tapplication/ogg OR Tapplication/x-flac OR Taudio/mpeg OR Taudio/x-karaoke OR Timage/bmp OR Timage/gif OR Timage/jpeg OR Timage/png OR Timage/svg+xml OR Timage/tiff OR Timage/vnd.djvu OR Timage/x-icon OR Timage/x-xcf OR Timage/x-xpmi OR Tmessage/rfc822 OR Ttext/x-gaim-log OR Ttext/x-mail OR Ttext/x-purple-html-log OR Ttext/x-purple-log OR Tvideo/*))) + Query: A size>10k -> Recoll query: ((a:(wqf=11) FILTER VALUE_GE 2 000000010000)) + Query: size>10k A -> Recoll query: ((a:(wqf=11) FILTER VALUE_GE 2 000000010000)) + Query: date:3000-01-01 A -> Recoll query: ((a:(wqf=11) FILTER D30000101)) + Query: A OR B date:3000-01-01 -> Recoll query: (((a:(wqf=11) OR b:(wqf=11)) FILTER D30000101)) + Query: A OR B AND date:3000-01-01 -> Recoll query: (((a:(wqf=11) OR b:(wqf=11)) FILTER D30000101)) + Query: title:A B -> Recoll query: ((Sa:(wqf=11) AND b:(wqf=11))) + Query: title:A -B -> Recoll query: ((Sa:(wqf=11) AND ( AND_NOT b:(wqf=11)))) + Query: A -title:B -> Recoll query: ((a:(wqf=11) AND ( AND_NOT Sb:(wqf=11))))