File Coverage

inc/Test/Deep/HashElements.pm
Criterion Covered Total %
statement 32 45 71.1
branch 4 10 40.0
condition n/a
subroutine 8 12 66.6
pod 0 5 0.0
total 44 72 61.1


line stmt bran cond sub pod time code
1 2     2   9 #line 1
  2         3  
  2         58  
2 2     2   9 use strict;
  2         3  
  2         47  
3             use warnings;
4              
5             package Test::Deep::HashElements;
6 2     2   9  
  2         4  
  2         16  
7             use Test::Deep::Ref;
8              
9             sub init
10 6     6 0 9 {
11             my $self = shift;
12 6         8  
13             my $val = shift;
14 6         178  
15             $self->{val} = $val;
16             }
17              
18             sub descend
19 6     6 0 11 {
20             my $self = shift;
21 6         8  
22             my $got = shift;
23 6         11  
24             my $exp = $self->{val};
25 6         22  
26             my $data = $self->data;
27 6         19  
28             my $master = $self->getMaster($got, $exp);
29 6         17  
30             foreach my $key (keys %$master)
31 8         14 {
32             $data->{index} = $key;
33 8 50       27  
34 8 50       24 my $got_elem = exists $got->{$key} ? $got->{$key} : $Test::Deep::DNE;
35             my $exp_elem = exists $exp->{$key} ? $exp->{$key} : $Test::Deep::DNE;
36 8 50       20  
37             next if Test::Deep::descend($got_elem, $exp_elem);
38 0         0  
39             return 0;
40             }
41 6         34  
42             return 1;
43             }
44              
45             sub getMaster
46 6     6 0 10 {
47             my $self = shift;
48 6         8  
49             my ($got, $exp) = @_;
50 6 50       23  
51             return keys %$got > keys %$exp ? $got : $exp;
52             }
53              
54             sub render_stack
55 0     0 0   {
56 0           my $self = shift;
57 0 0         my ($var, $data) = @_;
58 0           $var .= "->" unless $Test::Deep::Stack->incArrow;
59             $var .= '{"'.quotemeta($data->{index}).'"}';
60 0            
61             return $var;
62             }
63              
64             sub reset_arrow
65 0     0 0   {
66             return 0;
67             }
68              
69             package Test::Deep::SuperHashElements;
70 2     2   10  
  2         4  
  2         11  
71             use base 'Test::Deep::HashElements';
72              
73             sub getMaster
74 0     0     {
75             my $self = shift;
76 0            
77             my ($got, $exp) = @_;
78 0            
79             return $exp;
80             }
81              
82             package Test::Deep::SubHashElements;
83 2     2   9  
  2         8  
  2         8  
84             use base 'Test::Deep::HashElements';
85              
86             sub getMaster
87 0     0     {
88             my $self = shift;
89 0            
90             my ($got, $exp) = @_;
91 0            
92             return $got;
93             }
94              
95             1;