File: | local/lib/perl5/Test/Deep/Cache.pm |
Coverage: | 78.0% |
line | stmt | bran | cond | sub | time | code |
---|---|---|---|---|---|---|
1 | 6 6 6 | 15 3 87 | use strict; | |||
2 | 6 6 6 | 10 5 84 | use warnings; | |||
3 | ||||||
4 | package Test::Deep::Cache; | |||||
5 | ||||||
6 | 6 6 6 | 776 7 843 | use Test::Deep::Cache::Simple; | |||
7 | ||||||
8 | sub new | |||||
9 | { | |||||
10 | 54 | 168 | my $pkg = shift; | |||
11 | ||||||
12 | 54 | 62 | my $self = bless {}, $pkg; | |||
13 | ||||||
14 | 54 | 95 | $self->{expects} = [Test::Deep::Cache::Simple->new]; | |||
15 | 54 | 68 | $self->{normal} = [Test::Deep::Cache::Simple->new]; | |||
16 | ||||||
17 | 54 | 61 | $self->local; | |||
18 | ||||||
19 | 54 | 60 | return $self; | |||
20 | } | |||||
21 | ||||||
22 | sub add | |||||
23 | { | |||||
24 | 132 | 64 | my $self = shift; | |||
25 | ||||||
26 | 132 | 103 | my $type = $self->type; | |||
27 | ||||||
28 | 132 | 171 | $self->{$type}->[-1]->add(@_); | |||
29 | } | |||||
30 | ||||||
31 | sub cmp | |||||
32 | { | |||||
33 | # go through all the caches to see if we know this one | |||||
34 | ||||||
35 | 132 | 76 | my $self = shift; | |||
36 | ||||||
37 | 132 | 96 | my $type = $self->type; | |||
38 | ||||||
39 | 132 132 | 79 109 | foreach my $cache (@{$self->{$type}}) | |||
40 | { | |||||
41 | 264 | 272 | return 1 if $cache->cmp(@_); | |||
42 | } | |||||
43 | ||||||
44 | 132 | 160 | return 0 | |||
45 | } | |||||
46 | ||||||
47 | sub local | |||||
48 | { | |||||
49 | 54 | 32 | my $self = shift; | |||
50 | ||||||
51 | 54 | 54 | foreach my $type (qw( expects normal )) | |||
52 | { | |||||
53 | 108 108 | 56 138 | push(@{$self->{$type}}, Test::Deep::Cache::Simple->new); | |||
54 | } | |||||
55 | } | |||||
56 | ||||||
57 | sub finish | |||||
58 | { | |||||
59 | 0 | 0 | my $self = shift; | |||
60 | ||||||
61 | 0 | 0 | my $keep = shift; | |||
62 | ||||||
63 | 0 | 0 | foreach my $type (qw( expects normal )) | |||
64 | { | |||||
65 | 0 | 0 | my $caches = $self->{$type}; | |||
66 | ||||||
67 | 0 | 0 | my $last = pop @$caches; | |||
68 | ||||||
69 | 0 | 0 | $caches->[-1]->absorb($last) if $keep; | |||
70 | } | |||||
71 | } | |||||
72 | ||||||
73 | sub type | |||||
74 | { | |||||
75 | 264 | 229 | return $Test::Deep::Expects ? "expects" : "normal"; | |||
76 | } | |||||
77 | ||||||
78 | 1; |