File Coverage

blib/lib/Data/Range/Compare/Stream/Iterator/Stack.pm
Criterion Covered Total %
statement 21 21 100.0
branch 2 2 100.0
condition n/a
subroutine 7 7 100.0
pod 2 4 50.0
total 32 34 94.1


line stmt bran cond sub pod time code
1             package Data::Range::Compare::Stream::Iterator::Stack;
2              
3 3     3   735 use strict;
  3         5  
  3         84  
4 3     3   12 use warnings;
  3         6  
  3         79  
5 3     3   12 use base qw(Data::Range::Compare::Stream::Iterator::Base);
  3         5  
  3         752  
6              
7             sub new {
8 14     14 0 942 my ($class,%args)=@_;
9 14         108 my $self=$class->SUPER::new(stack=>[],%args);
10             }
11              
12             sub stack_push {
13 3     3 1 7 my ($self,$it)=@_;
14 3         4 push @{$self->{stack}},$it;
  3         9  
15             }
16              
17             sub has_next {
18 8264     8264 0 12361 my ($self)=@_;
19 8264         11565 my $stack=$self->{stack};
20 8264         18085 while($#$stack!=-1) {
21 8270 100       24416 return 1 if $stack->[0]->has_next;
22 22         92 shift @$stack;
23             }
24 16         70 return 0;
25             }
26              
27 8247     8247 1 25498 sub get_next { $_[0]->{stack}->[0]->get_next }
28              
29              
30             1;