File Coverage

blib/lib/JSV/Result.pm
Criterion Covered Total %
statement 37 38 97.3
branch 8 10 80.0
condition 3 3 100.0
subroutine 11 11 100.0
pod 0 5 0.0
total 59 67 88.0


line stmt bran cond sub pod time code
1             package JSV::Result;
2              
3 49     49   46494 use strict;
  49         89  
  49         1338  
4 49     49   246 use warnings;
  49         84  
  49         2268  
5             use overload
6 49         455 'bool' => \&to_boolean,
7 49     49   3507 'eq' => \=
  49         2367  
8              
9 49     49   3376 use Carp;
  49         107  
  49         3132  
10 49     49   41260 use Hash::MultiValue;
  49         123581  
  49         1940  
11             use Class::Accessor::Lite (
12 49         440 new => 0,
13             rw => [qw/instance error errors/]
14 49     49   1914 );
  49         2372  
15              
16             sub new {
17 2022     2022 0 32706 my $class = shift;
18 2022 50       5981 my $args = ref $_[0] ? $_[0] : { @_ };
19              
20 2022         9468 %$args = (
21             errors => [],
22             error => "",
23             %$args,
24             );
25              
26 2022         7353 bless $args => $class;
27             }
28              
29              
30             sub equals {
31 757     757 0 6929 $_[0]->to_boolean == $_[1];
32             }
33              
34             sub to_boolean {
35 779     779 0 39537 my $self = shift;
36 779 100 100     2833 return (($self->errors && scalar @{ $self->errors }) || $self->error) ? 0 : 1;
37             }
38              
39             sub get_error {
40 16     16 0 69 my ($self, $pointer) = @_;
41              
42 16 100       46 if ( $self->error ) {
    50          
43 1         10 return $self->error;
44             }
45             elsif ( $self->errors ) {
46 15 100       202 if ( $pointer ) {
47 1         3 return grep { $_->{pointer} eq $pointer } @{ $self->errors };
  2         14  
  1         5  
48             }
49             else {
50 14         17 return @{ $self->errors };
  14         39  
51             }
52             }
53             }
54              
55             sub get_error_map {
56 1     1 0 1134 my $self = shift;
57 1         3 return Hash::MultiValue->new(map { $_->{pointer} => $_ } @{ $self->errors });
  0         0  
  1         4  
58             }
59              
60             1;