File Coverage

blib/lib/Data/Range/Compare/Stream/CallBack.pm
Criterion Covered Total %
statement 41 41 100.0
branch n/a
condition n/a
subroutine 17 17 100.0
pod 6 8 75.0
total 64 66 96.9


line stmt bran cond sub pod time code
1             package Data::Range::Compare::Stream::CallBack;
2              
3 1     1   31424 use strict;
  1         2  
  1         24  
4 1     1   5 use warnings;
  1         1  
  1         30  
5 1     1   5 use base qw(Data::Range::Compare::Stream Exporter);
  1         5  
  1         579  
6              
7 1     1   5 use constant NEW_FROM_CLASS=>'Data::Range::Compare::Stream::CallBack';
  1         2  
  1         48  
8              
9 1     1   5 use constant HELPER=>0;
  1         2  
  1         42  
10 1     1   5 use constant RANGE_START =>1;
  1         2  
  1         41  
11 1     1   5 use constant RANGE_END =>2;
  1         2  
  1         47  
12 1     1   5 use constant RANGE_DATA =>3;
  1         1  
  1         65  
13              
14             use overload
15 1         6 '""'=>\&to_string,
16             bool=>\&boolean,
17 1     1   5 fallback=>1;
  1         2  
18              
19             # global happy helper
20             our %HELPER=(
21             sub_one=>sub { $_[0] - 1 },
22             add_one=>sub { $_[0] + 1 },
23             cmp_values=>sub { $_[0] <=> $_[1] },
24             );
25              
26             our @EXPORT_OK=qw(%HELPER);
27              
28 14     14 1 4694 sub to_string { $_[0]->SUPER::to_string }
29              
30 1150     1150 0 3465 sub get_helper { $_[0]->[$_[0]->HELPER] }
31              
32 6     6 0 1007 sub boolean { $_[0]->SUPER::boolean }
33              
34             sub new {
35 137     137 1 1716 my ($class,@args)=@_;
36 137         471 return bless [@args],$class;
37             }
38              
39             sub factory {
40 128     128 1 252 my ($self,@args)=@_;
41 128         316 my $new=$self->NEW_FROM_CLASS->new($self->get_helper,@args);
42 128         357 return $new;
43             }
44              
45             sub sub_one {
46 57     57 1 796 my ($self,$value)=@_;
47 57         113 return $self->get_helper->{sub_one}->($value);
48             }
49              
50             sub add_one {
51 28     28 1 643 my ($self,$value)=@_;
52 28         57 return $self->get_helper->{add_one}->($value);
53             }
54              
55             sub cmp_values {
56 937     937 1 3455 my ($self,$value_a,$value_b)=@_;
57 937         2099 return $self->get_helper->{cmp_values}->($value_a,$value_b);
58             }
59              
60             1;