more query language parser tests

This commit is contained in:
Jean-Francois Dockes 2016-01-29 13:40:05 +01:00
parent 3f32131c63
commit c7ddb07149
2 changed files with 80 additions and 0 deletions

View File

@ -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

View File

@ -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: (((<alldocuments> AND_NOT the:(wqf=11)) AND b:(wqf=11)))
Query: A -B -> Recoll query: ((a:(wqf=11) AND (<alldocuments> AND_NOT b:(wqf=11))))
Query: mime:text/plain -> Recoll query: ((<alldocuments> FILTER Ttext/plain))
Query: size>10k -> Recoll query: ((<alldocuments> FILTER VALUE_GE 2 000000010000))
Query: date:3000-01-01 -> Recoll query: ((<alldocuments> 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 (<alldocuments> AND_NOT b:(wqf=11))))
Query: A -title:B -> Recoll query: ((a:(wqf=11) AND (<alldocuments> AND_NOT Sb:(wqf=11))))