File Coverage

blib/lib/App/RecordStream/Test/DistinctCountHelper.pm
Criterion Covered Total %
statement 35 35 100.0
branch n/a
condition n/a
subroutine 5 5 100.0
pod 0 2 0.0
total 40 42 95.2


line stmt bran cond sub pod time code
1             package App::RecordStream::Test::DistinctCountHelper;
2              
3 2     2   3156 use strict;
  2         5  
  2         56  
4 2     2   9 use warnings;
  2         4  
  2         53  
5              
6 2     2   10 use App::RecordStream::Record;
  2         5  
  2         558  
7              
8             sub test_aggregator
9             {
10 4     4 0 71 my $aggr = shift;
11 4         13 my $field = shift;
12              
13 4         24 do_test($aggr, $field, 6, 'C', 'B', 'F', 'J', 'A', 'C', 'D', 'D');
14 4         2763 do_test($aggr, $field, 5, 'B', 'I', 'D', 'J', 'A', 'A', 'B');
15 4         1574 do_test($aggr, $field, 6, 'E', 'D', 'E', 'A', 'A', 'G', 'D', 'C', 'B');
16 4         1601 do_test($aggr, $field, 5, 'C', 'B', 'J', 'C', 'B', 'A', 'I');
17 4         1664 do_test($aggr, $field, 5, 'E', 'I', 'F', 'E', 'H', 'I', 'F', 'H', 'A');
18 4         1680 do_test($aggr, $field, 6, 'I', 'H', 'H', 'D', 'B', 'J', 'B', 'A', 'A');
19 4         1595 do_test($aggr, $field, 4, 'G', 'F', 'E', 'E', 'H', 'E', 'F');
20 4         1629 do_test($aggr, $field, 6, 'B', 'G', 'H', 'D', 'G', 'F', 'D', 'E');
21 4         1590 do_test($aggr, $field, 5, 'J', 'A', 'G', 'J', 'G', 'A', 'H', 'I');
22              
23             {
24 4         1650 my $cookie = $aggr->initial();
  4         18  
25              
26 4         13 foreach my $n ("baba", "zhaba", "zhaba", "tochak", "baba", "zhaba")
27             {
28 24         68 $cookie = $aggr->combine($cookie, App::RecordStream::Record->new($field => $n));
29             }
30              
31 4         16 my $value = $aggr->squish($cookie);
32              
33 4         14 Test::More::is($value, 3, "dct of baba, zhaba, zhaba, tochak, baba, zhaba");
34             }
35             }
36              
37             sub do_test
38             {
39 36     36 0 71 my $aggr = shift;
40 36         61 my $field = shift;
41 36         55 my $ans = shift;
42 36         128 my @v = @_;
43              
44 36         115 my $cookie = $aggr->initial();
45              
46 36         73 foreach my $v (@v)
47             {
48 288         815 $cookie = $aggr->combine($cookie, App::RecordStream::Record->new($field => $v));
49             }
50              
51 36         117 my $value = $aggr->squish($cookie);
52              
53 36         191 Test::More::is($value, $ans, "distinct count of " . join(", ", @v));
54             }
55              
56             1;