blob: c834c2b54793a07ed1188d96aec5a5a661bb0af0 [file] [log] [blame]
Akronb0094002017-01-02 18:01:03 +01001use Test::More;
2use Test::Krawfish;
3use strict;
4use warnings;
5
6use_ok('Krawfish::Index');
7use_ok('Krawfish::Koral::Query::Builder');
Akrone9d59c82017-05-12 19:33:43 +02008use_ok('Krawfish::Result::Segment::Aggregate');
9use_ok('Krawfish::Result::Segment::Aggregate::Length');
Akronb0094002017-01-02 18:01:03 +010010
11my $index = Krawfish::Index->new;
12
13ok_index($index, {
14 docID => 7
Akron2a53f5d2017-04-05 14:32:31 +020015} => '<1:s>[Der][hey]</1>', 'Add complex document');
Akronb0094002017-01-02 18:01:03 +010016ok_index($index, {
17 docID => 3,
Akron2a53f5d2017-04-05 14:32:31 +020018} => '<1:s>[Der]</1>[Baum]', 'Add complex document');
Akronb0094002017-01-02 18:01:03 +010019ok_index($index, {
20 docID => 1,
Akron2a53f5d2017-04-05 14:32:31 +020021} => '<1:s>[Der]</1><2:s>[alte][graue][Baum]</2>', 'Add complex document');
Akronb0094002017-01-02 18:01:03 +010022
23
24my $kq = Krawfish::Koral::Query::Builder->new;
25
Akron2a53f5d2017-04-05 14:32:31 +020026my $query = $kq->span('s');
Akronb0094002017-01-02 18:01:03 +010027
Akrone9d59c82017-05-12 19:33:43 +020028my $length = Krawfish::Result::Segment::Aggregate::Length->new;
Akronb0094002017-01-02 18:01:03 +010029
Akron2a53f5d2017-04-05 14:32:31 +020030# Get length object
Akrone9d59c82017-05-12 19:33:43 +020031ok(my $aggr = Krawfish::Result::Segment::Aggregate->new(
Akronb0094002017-01-02 18:01:03 +010032 $query->prepare_for($index),
Akron2a53f5d2017-04-05 14:32:31 +020033 [$length]
34), 'Create length object');
Akronb0094002017-01-02 18:01:03 +010035
Akron2a53f5d2017-04-05 14:32:31 +020036is($aggr->to_string, q!aggregate([length]:'<>s')!, 'Stringification');
37
38ok($aggr->next, 'Next');
39ok($aggr->next, 'Next');
Akronb0094002017-01-02 18:01:03 +010040ok($aggr->next, 'Next');
41ok($aggr->next, 'Next');
42ok(!$aggr->next, 'No more nexts');
43
Akronb0094002017-01-02 18:01:03 +010044is_deeply($aggr->result, {
Akron2a53f5d2017-04-05 14:32:31 +020045 length => {
46 avg => 1.75,
47 min => 1,
48 max => 3,
49 sum => 7
Akronb0094002017-01-02 18:01:03 +010050 }
Akron2a53f5d2017-04-05 14:32:31 +020051}, 'Get aggregation results');
52
Akronb0094002017-01-02 18:01:03 +010053
54done_testing;
55__END__