--- /dev/null
+#!/usr/bin/perl -w
+
+use C4::Search;
+
+my @SEARCH = (
+ { operators => [
+ 'and',
+ 'and'
+ ],
+ operands => [
+ 'shakespeare, "(william)"',
+ 'dream'
+ ],
+ indexes => [
+ 'au,wrdl',
+ 'ti',
+ 'kw'
+ ],
+ limits => [
+ 'yr,st-numeric=2000-'
+ ],
+ sort_by => [
+ 'relevance'
+ ],
+ lang => 'en',
+ },
+);
+
+
+foreach ( @SEARCH ) {
+ my ($expected, @mismatch);
+ my( $error,
+ $query,
+ $simple_query,
+ $query_cgi,
+ $query_desc,
+ $limit,
+ $limit_cgi,
+ $limit_desc,
+ $stopwords_removed,
+ $query_type )
+ = buildQuery( $_->{operators}, $_->{operands}, $_->{indexes}, $_->{limits}, $_->{sort_by}, 0, $_->{lang} );
+
+ die $error if $error;
+
+ $expected = $_->{query};
+ push @mismatch, "Query: $query (not: $expected)" unless $query eq $expected;
+
+ $expected = $_->{simple_query};
+ push @mismatch, "Simple Query: $simple_query (not: $expected)" unless $simple_query eq $expected;
+
+ $expected = $_->{query_cgi};
+ push @mismatch, "Query CGI: $query_cgi (not: $expected)" unless $query_cgi eq $expected;
+
+ $expected = $_->{query_desc};
+ push @mismatch, "Query desc: $query_desc (not: $expected)" unless $query_desc eq $expected;
+
+ $expected = $_->{limit};
+ push @mismatch, "Limit: $limit (not: $expected)" unless $limit eq $expected;
+
+ $expected = $_->{limit_cgi};
+ push @mismatch, "Limit CGI: $limit_cgi (not: $expected)" unless $limit_cgi eq $expected;
+
+ $expected = $_->{limit_desc};
+ push @mismatch, "Limit desc: $limit_desc (not: $expected)" unless $limit_desc eq $expected;
+
+ $expected = $_->{stopwords_removed};
+ push @mismatch, "Stopwords removed: $stopwords_removed (not: $expected)" unless $stopwords_removed eq $expected;
+
+ $expected = $_->{query_type};
+ push @mismatch, "Query Type: $query_type (not: $expected)" unless $query_type eq $expected;
+
+ die map "$_\n", @mismatch if @mismatch;
+}