File Coverage

blib/lib/ArangoDB/BindVars.pm
Criterion Covered Total %
statement 27 48 56.2
branch 0 8 0.0
condition 0 9 0.0
subroutine 9 15 60.0
pod 0 5 0.0
total 36 85 42.3


line stmt bran cond sub pod time code
1             package ArangoDB::BindVars;
2 8     8   49 use strict;
  8         17  
  8         362  
3 8     8   46 use warnings;
  8         17  
  8         196  
4 8     8   52 use utf8;
  8         19  
  8         56  
5 8     8   319 use 5.008001;
  8         27  
  8         3330  
6              
7             sub new {
8 0     0 0   my $class = shift;
9 0           my $self = bless { _values => +{} }, $class;
10 0           return $self;
11             }
12              
13             sub get_all {
14 0     0 0   $_[0]->{_values};
15             }
16              
17             sub get {
18 0     0 0   $_[0]->{_values}{ $_[1] };
19             }
20              
21             sub set {
22 0     0 0   my ( $self, $name, $val ) = @_;
23 0 0 0       if ( ArangoDB::BindVars::Validator::is_hash_ref($name) ) {
    0          
24 0           for my $value ( values %$name ) {
25 0           ArangoDB::BindVars::Validator::validate($value);
26             }
27 0           $self->{_values} = $name;
28             }
29             elsif ( ArangoDB::BindVars::Validator::is_integer($name) || ArangoDB::BindVars::Validator::is_string($name) ) {
30 0           ArangoDB::BindVars::Validator::validate($val);
31 0           $self->{_values}{$name} = $val;
32             }
33             }
34              
35             sub count {
36 0     0 0   return scalar keys %{ $_[0]->{_values} };
  0            
37             }
38              
39             {
40              
41             package #Hiding package
42             ArangoDB::BindVars::Validator;
43 8     8   51 use strict;
  8         19  
  8         273  
44 8     8   46 use warnings;
  8         25  
  8         3103  
45 8     8   59 use Scalar::Util qw(looks_like_number);
  8         13  
  8         823  
46 8     8   46 use Data::Util qw(:check);
  8         17  
  8         1922  
47 8     8   52 use ArangoDB::ClientException;
  8         12  
  8         1508  
48              
49             sub validate {
50 0     0     my $val = shift;
51 0 0 0       return if !defined($val) || is_string($val) || $val eq q{};
      0        
52 0 0         if ( is_array_ref($val) ) {
53 0           for my $v (@$val) {
54 0           validate($v);
55             }
56 0           return;
57             }
58 0           die ArangoDB::ClientException->new('Invalid bind parameter value');
59             }
60             }
61              
62             1;
63             __END__