#!/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;
}
