ignore
[rersyncrecent.git] / t / 03-done.t
blobf44dc906d3c96e652fdc5b2c9a15e8bdf76cf3e6
1 use Data::Dumper;
2 use File::Rsync::Mirror::Recentfile::Done;
3 use List::Util qw(sum);
4 use Test::More;
5 use strict;
6 my $tests;
7 BEGIN { $tests = 0 }
8 use lib "lib";
10 my @recent_events = map { +{ epoch => $_ } }
11     (
12      "1216706557.63601",
13      "1216706557.5279",
14      "1216706557.23439",
15      "1216706555.44193",
16      "1216706555.17699",
17      "1216706554.23419",
18      "1216706554.12319",
19      "1216706553.47884",
20      "1216706552.9627",
21      "1216706552.661",
22     );
24 # lm = long mantissa
25 my @recent_events_lm = map { +{ epoch => $_ } }
26     (
27      "100.0000000000000001116606557906601",
28      "100.0000000000000001116606557806690",
29      "100.0000000000000001116606557706639",
30      "100.0000000000000001116606557606693",
31      "100.0000000000000001116606557506699",
32       "99.9999999999999991116606557406619",
33       "99.9999999999999991116606557306619",
34       "99.9999999999999991116606557206684",
35       "99.9999999999999991116606557106670",
36       "99.9999999999999991116606557006600",
37     );
40     my @t;
41     BEGIN {
42         @t =
43             (
44              [[0,1,2],[3,4,5],[6,7,8,9]],
45              [[9,8],[7,6,5],[4,3,2,1,0]],
46              [[0,1,5],[3,4],[2,6,7,8,9]],
47              [[1,5],[3,4,5,7],[2,0,6,7,9,8]],
48             );
49         my $sum = sum map { my @cnt = @$_; scalar @cnt; } @t;
50         $tests += 2 * $sum;
51     }
52     for my $t (@t) {
53         my $done = File::Rsync::Mirror::Recentfile::Done->new;
54         my $done_lm = File::Rsync::Mirror::Recentfile::Done->new;
55         my @sessions = @$t;
56         for my $i (0..$#sessions) {
57             my $session = $sessions[$i];
59             $done->register ( \@recent_events, $session );
60             my $boolean = $done->covered ( map {$_->{epoch}} @recent_events[0,-1] );
61             is 0+$boolean, $i==$#sessions ? 1 : 0, $recent_events[$session->[0]]{epoch} or
62                 die Dumper({boolean=>$boolean,i=>$i,done=>$done});
64             $done_lm->register ( \@recent_events_lm, $session );
65             my $boolean_lm = $done_lm->covered ( map {$_->{epoch}} @recent_events_lm[0,-1] );
66             is 0+$boolean_lm, $i==$#sessions ? 1 : 0, $recent_events_lm[$session->[0]]{epoch}  or
67                 die Dumper({boolean_lm=>$boolean_lm,i=>$i,done_lm=>$done_lm});
69         }
70     }
73 BEGIN { plan tests => $tests }
75 # Local Variables:
76 # mode: cperl
77 # cperl-indent-level: 4
78 # End: