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   2217 use strict;
  2         5  
  2         49  
4 2     2   9 use warnings;
  2         4  
  2         44  
5              
6 2     2   10 use App::RecordStream::Record;
  2         4  
  2         517  
7              
8             sub test_aggregator
9             {
10 4     4 0 44 my $aggr = shift;
11 4         9 my $field = shift;
12              
13 4         17 do_test($aggr, $field, 6, 'C', 'B', 'F', 'J', 'A', 'C', 'D', 'D');
14 4         1337 do_test($aggr, $field, 5, 'B', 'I', 'D', 'J', 'A', 'A', 'B');
15 4         1318 do_test($aggr, $field, 6, 'E', 'D', 'E', 'A', 'A', 'G', 'D', 'C', 'B');
16 4         1575 do_test($aggr, $field, 5, 'C', 'B', 'J', 'C', 'B', 'A', 'I');
17 4         1249 do_test($aggr, $field, 5, 'E', 'I', 'F', 'E', 'H', 'I', 'F', 'H', 'A');
18 4         1256 do_test($aggr, $field, 6, 'I', 'H', 'H', 'D', 'B', 'J', 'B', 'A', 'A');
19 4         1252 do_test($aggr, $field, 4, 'G', 'F', 'E', 'E', 'H', 'E', 'F');
20 4         1320 do_test($aggr, $field, 6, 'B', 'G', 'H', 'D', 'G', 'F', 'D', 'E');
21 4         1253 do_test($aggr, $field, 5, 'J', 'A', 'G', 'J', 'G', 'A', 'H', 'I');
22              
23             {
24 4         1239 my $cookie = $aggr->initial();
  4         16  
25              
26 4         12 foreach my $n ("baba", "zhaba", "zhaba", "tochak", "baba", "zhaba")
27             {
28 24         72 $cookie = $aggr->combine($cookie, App::RecordStream::Record->new($field => $n));
29             }
30              
31 4         13 my $value = $aggr->squish($cookie);
32              
33 4         15 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 88 my $aggr = shift;
40 36         58 my $field = shift;
41 36         63 my $ans = shift;
42 36         117 my @v = @_;
43              
44 36         110 my $cookie = $aggr->initial();
45              
46 36         82 foreach my $v (@v)
47             {
48 288         799 $cookie = $aggr->combine($cookie, App::RecordStream::Record->new($field => $v));
49             }
50              
51 36         103 my $value = $aggr->squish($cookie);
52              
53 36         163 Test::More::is($value, $ans, "distinct count of " . join(", ", @v));
54             }
55              
56             1;