Condition Coverage

lib/JSON/Structure/SchemaValidator.pm
Criterion Covered Total %
condition 61 231 26.4


and 3 conditions

line !l l&&!r l&&r condition
144 0 0 0 ref $schema eq "HASH" and exists $schema->{'$id'}
222 4 62 0 exists $doc->{'type'} and exists $doc->{'$root'}
258 63 3 0 $self->{'extended'} and not exists $doc->{'type'}
266 63 3 0 $self->{'extended'} && $self->_has_composition_keywords($doc)
341 15 4 0 exists $ALL_VALIDATION_KEYWORDS{$key} and not $has_uses
354 3 0 0 $type eq "array" and exists $schema->{'items'}
3 0 0 $type eq "map" and exists $schema->{'values'}
3 0 0 $type eq "tuple" and exists $schema->{'items'}
0 0 0 $type eq "tuple" and exists $schema->{'items'} and ref $schema->{'items'} eq "ARRAY"
363 0 0 0 exists $schema->{'properties'} and ref $schema->{'properties'} eq "HASH"
373 0 0 0 exists $schema->{'optionalProperties'} and ref $schema->{'optionalProperties'} eq "HASH"
397 9 0 0 exists $schema->{$comp_key} and ref $schema->{$comp_key} eq "ARRAY"
420 3 0 0 exists $schema->{'definitions'} and ref $schema->{'definitions'} eq "HASH"
459 4 60 2 exists $obj->{'type'} and not exists $obj->{'name'}
516 0 3 0 $self->{'extended'} and not exists $KNOWN_EXTENSIONS{$ext}
668 0 0 2 @segments and $segments[0] eq ""
726 0 0 0 ref $def->{$key} eq "HASH" and exists $def->{$key}{'type'} || exists $def->{$key}{'$ref'}
806 0 0 0 $self->{'extended'} and $self->_has_composition_keywords($schema)
1004 1 0 1 exists $schema->{'properties'} && exists $schema->{'tuple'}
1057 0 0 1 ref $target eq "HASH" and exists $target->{'type'}
1074 1 0 0 ref $type eq "HASH" and exists $type->{'$ref'}
1142 0 0 10 defined $properties and ref $properties eq "HASH"
1235 0 0 1 defined $properties and ref $properties eq "HASH"
1318 0 0 0 not $additional =~ /^[01]$/u || _is_json_bool($additional) and $additional ne "true"
0 0 0 not $additional =~ /^[01]$/u || _is_json_bool($additional) and $additional ne "true" and $additional ne "false"
1378 13 2 0 exists $schema->{$keyword} and not $is_numeric
1395 16 2 0 exists $schema->{$keyword} and not $is_string
1431 2 0 1 exists $schema->{'minimum'} and exists $schema->{'maximum'}
1438 3 0 0 exists $schema->{'minLength'} and exists $schema->{'maxLength'}
1445 3 0 0 exists $schema->{'minItems'} and exists $schema->{'maxItems'}
1455 0 0 0 defined $value and not ref $value
0 0 0 defined $value and not ref $value and $value =~ /^-?\d+$/u
0 0 0 defined $value and not ref $value and $value =~ /^-?\d+$/u and $value < 0
1468 0 0 0 defined $value and not ref $value
0 0 0 defined $value and not ref $value and $value =~ /^-?\d+$/u
0 0 0 defined $value and not ref $value and $value =~ /^-?\d+$/u and $value < 0
1482 0 0 0 defined $value and not ref $value
0 0 0 defined $value and not ref $value and $value =~ /^-?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?$/u
1540 0 0 0 defined $value and builtin::blessed($value)

or 2 conditions

line l !l condition
129 0 27 $args{'allow_dollar'} // 0
0 27 $args{'allow_import'} // 0
0 27 $args{'import_map'} // {}
1 26 $args{'extended'} // 0
0 27 $args{'warn_on_unused_extension_keywords'} // 1
0 27 $args{'max_validation_depth'} // 64
483 3 0 $doc->{'$schema'} // ""
484 3 0 $doc->{'$uses'} // []
1408 3 0 $type //= ""

or 3 conditions

line l !l&&r !l&&!r condition
268 62 0 4 $has_type or $has_root
0 0 4 $has_type or $has_root or $has_composition
468 0 0 120 not defined $value or ref $value
516 0 0 3 not defined $ext or ref $ext
541 0 0 0 not defined $ext or ref $ext
645 0 0 0 not defined $pointer or ref $pointer
665 0 0 2 $pointer eq "" or $pointer eq "/"
719 2 0 0 exists $def->{'type'} or exists $def->{'$ref'}
0 0 0 exists $def->{'type'} or exists $def->{'$ref'} or $self->_has_composition_keywords($def)
726 0 0 0 exists $def->{$key}{'type'} || exists $def->{$key}{'$ref'}
769 0 0 0 $schema eq 1 or $schema eq 0
0 0 0 $schema eq 1 or $schema eq 0 or _is_json_bool($schema)
0 0 0 $schema eq 1 or $schema eq 0 or _is_json_bool($schema) or $schema eq "true"
0 0 0 $schema eq 1 or $schema eq 0 or _is_json_bool($schema) or $schema eq "true" or $schema eq "false"
791 0 0 60 not defined $schema->{'name'} or ref $schema->{'name'}
0 0 60 not defined $schema->{'name'} or ref $schema->{'name'} or not $schema->{'name'} =~ /$id_regex/u
829 0 0 0 $has_defining or exists $schema->{'$ref'}
950 0 0 0 not defined $t or ref $t
991 3 0 93 $type eq "array" or $type eq "set"
992 2 0 1 exists $schema->{'items'} || exists $schema->{'contains'}
1021 0 0 2 not defined $ref or ref $ref
1132 0 0 10 not defined $prop or ref $prop
1238 0 0 2 not defined $prop or ref $prop
1318 0 0 0 $additional =~ /^[01]$/u || _is_json_bool($additional)
1337 0 0 0 not defined $extends or ref $extends
1417 0 0 2 not defined $value or ref $value
0 0 2 not defined $value or ref $value or not $value =~ /^-?\d+(?:\.\d+)?(?:[eE][-+]?\d+)?$/u
1499 0 0 2 not defined $pattern or ref $pattern
1555 0 0 0 $value eq "true" or $value eq "false"
1570 0 0 0 not defined $value or ref $value
1587 0 0 0 $key eq "\$import" or $key eq "\$importdefs"
1592 0 0 0 not defined $uri or ref $uri