File Coverage

blib/lib/Test/Deep/Stack.pm
Criterion Covered Total %
statement 40 44 90.9
branch 4 6 66.6
condition 1 3 33.3
subroutine 11 12 91.6
pod 0 7 0.0
total 56 72 77.7


line stmt bran cond sub pod time code
1 40     40   282 use strict;
  40         169  
  40         1726  
2 40     40   276 use warnings;
  40         79  
  40         2864  
3              
4             package Test::Deep::Stack 1.205;
5              
6 40     40   238 use Carp qw( confess );
  40         115  
  40         2366  
7 40     40   234 use Scalar::Util;
  40         103  
  40         2191  
8              
9 40     40   18542 use Test::Deep::MM qw( new init Stack Arrow );
  40         133  
  40         190  
10              
11             sub init
12             {
13 905     905 0 1497 my $self = shift;
14              
15 905         3401 $self->SUPER::init(@_);
16              
17 905 50       2370 $self->setStack([]) unless $self->getStack;
18             }
19              
20             sub push
21             {
22 2234     2234 0 3597 my $self = shift;
23              
24 2234         3428 push(@{$self->getStack}, @_);
  2234         8961  
25             }
26              
27             sub pop
28             {
29 1288     1288 0 2111 my $self = shift;
30              
31 1288         1966 return pop @{$self->getStack};
  1288         2712  
32             }
33              
34             sub render
35             {
36 119     119 0 259 my $self = shift;
37 119         232 my $var = shift;
38              
39 119         445 my $stack = $self->getStack;
40              
41 119         606 $self->setArrow(0);
42              
43 119         304 foreach my $data (@$stack)
44             {
45 269         597 my $exp = $data->{exp};
46 269 50 33     1783 if (Scalar::Util::blessed($exp) and $exp->isa("Test::Deep::Cmp"))
47             {
48 269         1131 $var = $exp->render_stack($var, $data);
49              
50 269 100       988 $self->setArrow(0) if $exp->reset_arrow;
51             }
52             else
53             {
54 0         0 confess "Don't know how to render '$exp'";
55             }
56             }
57              
58 119         384 return $var;
59             }
60              
61             sub getLast
62             {
63 467     467 0 855 my $self = shift;
64              
65 467         1200 return $self->getStack->[-1];
66             }
67              
68             sub incArrow
69             {
70 35     35 0 74 my $self = shift;
71              
72 35         153 my $a = $self->getArrow;
73 35         139 $self->setArrow($a + 1);
74              
75 35         161 return $a;
76             }
77              
78             sub length
79             {
80 0     0 0   my $self = shift;
81              
82 0           return @{$self->getStack} + 0;
  0            
83             }
84              
85             1;
86              
87             __END__