The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use Test::More tests => 5;
use Search::Odeum;
use File::Path qw(rmtree);

my $db = './t/04_query.db';
my @data = (
    {
        uri => 'http://example.com/1',
        document => 'apple',
    },
    {
        uri => 'http://example.com/2',
        document => 'orange apple',
    },
    {
        uri => 'http://example.com/3',
        document => 'strawberry orange',
    },
    {
        uri => 'http://example.com/4',
        document => 'strawberry orange apple',
    },
);

{
    my $odeum = Search::Odeum->new($db, OD_OCREAT|OD_OWRITER);
    ok($odeum->writable);
    for my $d(@data) {
        my $doc = Search::Odeum::Document->new($d->{uri});
        for my $word(split /\s+/, $d->{document}) {
            $doc->addword($word, $word);
        }
        $odeum->put($doc);
    }
    $odeum->close;
}

{
    my $odeum = Search::Odeum->new($db, OD_OREADER);
    {
        my $res = $odeum->query('orange & apple & strawberry');
        is($res->num, 1);
        my $doc = $res->next;
        if ($doc) {
            is($doc->uri, 'http://example.com/4');
        }
    }
    {
        my $res = $odeum->query('orange  ! apple');
        is($res->num, 1);
        my $doc = $res->next;
        is($doc->uri, 'http://example.com/3');
    }
    $odeum->close;
}

END {
    rmtree($db);
};

__END__