File Coverage

blib/lib/Valiemon/Attributes/MinItems.pm
Criterion Covered Total %
statement 23 23 100.0
branch 3 4 75.0
condition 2 3 66.6
subroutine 8 8 100.0
pod 0 2 0.0
total 36 40 90.0


line stmt bran cond sub pod time code
1             package Valiemon::Attributes::MinItems;
2 1     1   707 use strict;
  1         2  
  1         37  
3 1     1   6 use warnings;
  1         2  
  1         40  
4 1     1   7 use utf8;
  1         1  
  1         7  
5 1     1   644 use parent qw(Valiemon::Attributes);
  1         311  
  1         6  
6              
7 1     1   70 use Carp qw(croak);
  1         2  
  1         214  
8              
9 5     5 0 53 sub attr_name { 'minItems' }
10              
11             sub is_valid {
12 5     5 0 10 my ($class, $context, $schema, $data) = @_;
13              
14 5 50       19 return 1 unless ref $data eq 'ARRAY'; # ignore
15              
16 5         8 my $min_items = $schema->{minItems};
17             $context->in_attr($class, sub {
18 5 100 66 5   15 if (!$context->prims->is_integer($min_items) || !(0 <= $min_items)) {
19 2         9 croak sprintf '`minItems` must be an integer. This integer must be greater than, or equal to 0 at %s',
20             $context->position;
21             }
22 3         12 $min_items <= scalar @$data;
23 5         34 });
24             }
25              
26             1;