Condition Coverage

blib/lib/JSON/Schema/Tiny.pm
Criterion Covered Total %
condition 251 308 81.4


and 3 conditions

line !l l&&!r l&&r condition
56 132 15 12084 &blessed($_[0]) and &blessed($_[0])->isa("JSON::Schema::Tiny")
62 12101 1 3 not $SPECIFICATION_VERSION =~ /^draft/u and &any(sub {
157 294 7098 12275 $spec_version && $spec_version =~ qr/^draft(7|2019-09)$/u
192 1625 134 30886 $keyword ne "\$ref" and $keyword ne "definitions"
1759 30355 531 $keyword ne "\$ref" and $keyword ne "definitions" and exists $schema->{'$ref'}
30355 516 15 $keyword ne "\$ref" and $keyword ne "definitions" and exists $schema->{'$ref'} and $spec_version eq "draft7"
204 22206 4421 3487 not $valid and $state->{'short_circuit'}
238 1 5180 1 defined $SPECIFICATION_VERSION and $SPECIFICATION_VERSION ne $spec_version
243 4898 282 1 exists $schema->{'$ref'} and $spec_version eq "draft7"
290 8 0 0 is_type("boolean", $subschema->{'$recursiveAnchor'}) and $subschema->{'$recursiveAnchor'}
346 6 0 6 !$state->{'spec_version'} || $state->{'spec_version'} eq 'draft2019-09' and ($schema->{'$anchor'} // "") =~ /^[A-Za-z][A-Za-z0-9_:.-]*$/u
0 0 6 !$state->{'spec_version'} || $state->{'spec_version'} eq 'draft2020-12' and ($schema->{'$anchor'} // "") =~ /^[A-Za-z_][A-Za-z0-9._-]*$/u
415 198 15 9 $_ eq "boolean" and $SCALARREF_BOOLEANS
15 7 2 $_ eq "boolean" and $SCALARREF_BOOLEANS and $type eq "reference to SCALAR"
221 1 0 $_ eq "number" and $type eq "integer"
427 819 126 188 $schema->{'type'} eq "number" and $type eq "integer"
830 106 9 $schema->{'type'} eq "boolean" and $SCALARREF_BOOLEANS
106 7 2 $schema->{'type'} eq "boolean" and $SCALARREF_BOOLEANS and $type eq "reference to SCALAR"
679 286 47 44 @valid > 1 and $state->{'short_circuit'}
846 88 12 75 $state->{'short_circuit'} and not exists $$schema{$state->{'keyword'} eq "prefixItems" ? "items" : ($state->{'keyword'} eq "items" ? "additionalItems" : die())}
861 561 80 26 is_type("boolean", $$schema{$state->{'keyword'}}) and $state->{'keyword'} eq "additionalItems"
900 201 42 142 $state->{'short_circuit'} and !exists $schema->{'maxContains'} || $state->{'_num_contains'} > $schema->{'maxContains'}
42 18 124 $state->{'short_circuit'} and !exists $schema->{'maxContains'} || $state->{'_num_contains'} > $schema->{'maxContains'} and $state->{'_num_contains'} >= ($schema->{'minContains'} // 1)
905 289 207 0 not $state->{'_num_contains'} and ($schema->{'minContains'} // 1) > 0 || $state->{'spec_version'} && $state->{'spec_version'} eq 'draft7'
980 325 67 110 exists $schema->{'properties'} and exists $schema->{'properties'}{$property}
982 245 60 87 exists $schema->{'patternProperties'} and &any(sub {
1052 689 0 15290 !XXX && $flags & 1024 && !($flags & 768)
1067 0 0 14 !&blessed($value) && ref $value eq $1
1084 7066 1 4464 $flags & 1024 and not $flags & 768
1085 1 0 7066 not $flags & 1024 and $flags & 768
1154 20980 9415 1 @extra_path and XXX
1169 9338 1 77 $uri eq "" and $keyword_location eq ""
855 392 8092 ($uri->fragment // "") eq $keyword_location and $uri->clone->fragment(undef) eq ""
1215 999 151 1129 $ref =~ /#/u and not $ref =~ /#$/u
1150 96 1033 $ref =~ /#/u and not $ref =~ /#$/u and not $ref =~ /#[A-Za-z][A-Za-z0-9_:.-]*$/u
247 1033 0 $ref =~ /#/u and not $ref =~ /#$/u and not $ref =~ /#[A-Za-z][A-Za-z0-9_:.-]*$/u and not $ref =~ m[#/(?:[^~]|~[01])*$]u
1229 5215 1 0 $string =~ /#/u and not $string =~ /#$/u
5216 0 0 $string =~ /#/u and not $string =~ /#$/u and not $string =~ /#[A-Za-z][A-Za-z0-9_:.-]*$/u
1 0 0 $string =~ /#/u and not $string =~ /#$/u and not $string =~ /#[A-Za-z][A-Za-z0-9_:.-]*$/u and not $string =~ m[#/(?:[^~]|~[01])*$]u

or 2 conditions

line l !l condition
155 19373 294 $state->{'spec_version'} // ""
254 1211 422 $uri->fragment // ""
260 350 1189 $state->{'root_schema'}{'$id'} // ""
262 1045 15 $uri->fragment // ""
278 52 0 $uri->fragment // ""
285 44 8 $state->{'root_schema'}{'$id'} // ""
313 585 9 $state->{'spec_version'} // ""
346 6 0 $schema->{'$anchor'} // ""
6 0 $schema->{'$anchor'} // ""
409 0 6 $type // "<null>"
1317 42 $type // ""
423 2 0 $schema->{'type'} // "<null>"
15821 0 $schema->{'type'} // ""
807 683 1 $state->{'spec_version'} // ""
812 84 516 $state->{'_last_items_index'} //= -1
900 40 102 $schema->{'minContains'} // 1
1096 579 5872 $state->{'path'} //= ""
1156 2507 27889 $uri->fragment // ""
1169 9338 1 $uri->fragment // ""

or 3 conditions

line l !l&&r !l&&!r condition
51 32 0 12199 $SCALARREF_BOOLEANS // $MOJO_BOOLEANS
56 0 0 12084 $_[0]{'boolean_result'} // $BOOLEAN_RESULT
6037 0 6047 $_[0]{'short_circuit'} // $SHORT_CIRCUIT
3 12081 0 $_[0]{'max_traversal_depth'} // $MAX_TRAVERSAL_DEPTH
0 0 12084 $_[0]{'scalarref_booleans'} // $SCALARREF_BOOLEANS
0 0 12084 ($_[0]{'scalarref_booleans'} // $SCALARREF_BOOLEANS) // $_[0]{'mojo_booleans'}
12081 0 3 $_[0]{'specification_version'} // $SPECIFICATION_VERSION
70 14 6040 6176 $BOOLEAN_RESULT || $SHORT_CIRCUIT
98 6038 6192 0 $valid or @{$state->{'errors'}}
149 373 0 415 $schema || E($state, 'subschema is false')
157 294 14472 4901 !$spec_version || $spec_version ne 'draft7'
294 7374 11999 !$spec_version || $spec_version eq 'draft2019-09'
294 7098 12275 !$spec_version || $spec_version eq 'draft2020-12'
294 7374 11999 !$spec_version || $spec_version eq 'draft2019-09'
294 7098 12275 !$spec_version || $spec_version eq 'draft2020-12'
294 14472 4901 !$spec_version || $spec_version ne 'draft7'
294 4901 14472 !$spec_version || $spec_version eq 'draft7'
294 14472 4901 !$spec_version || $spec_version ne 'draft7'
294 14472 4901 !$spec_version || $spec_version ne 'draft7'
294 4901 14472 !$spec_version || $spec_version eq 'draft7'
294 12275 7098 !$spec_version || $spec_version =~ qr/^draft(?:7|2019-09)$/u
294 14472 4901 !$spec_version || $spec_version ne 'draft7'
294 14472 4901 !$spec_version || $spec_version ne 'draft7'
294 14472 4901 !$spec_version || $spec_version ne 'draft7'
292 0 0 0 $state->{'recursive_anchor_uri'} // $state->{'initial_schema_uri'}
346 0 6 6 !$state->{'spec_version'} || $state->{'spec_version'} eq 'draft2019-09'
0 6 0 !$state->{'spec_version'} || $state->{'spec_version'} eq 'draft2020-12'
6 6 0 !$state->{'spec_version'} || $state->{'spec_version'} eq 'draft2019-09' and ($schema->{'$anchor'} // "") =~ /^[A-Za-z][A-Za-z0-9_:.-]*$/u or !$state->{'spec_version'} || $state->{'spec_version'} eq 'draft2020-12' and ($schema->{'$anchor'} // "") =~ /^[A-Za-z_][A-Za-z0-9._-]*$/u
353 28 13 39 not $schema->{'$recursiveAnchor'} or exists $state->{'recursive_anchor_uri'}
415 62 0 222 $type eq $_ or $_ eq "number" and $type eq "integer"
427 2279 188 945 $type eq $schema->{'type'} or $schema->{'type'} eq "number" and $type eq "integer"
188 20 925 $type eq $schema->{'type'} or $schema->{'type'} eq "number" and $type eq "integer" or $schema->{'type'} eq "boolean" and $SCALARREF_BOOLEANS and $type eq "reference to SCALAR"
457 30 18 586 ref($data) =~ /^Math::Big(?:Int|Float)$/u or ref($schema->{'multipleOf'}) =~ /^Math::Big(?:Int|Float)$/u
701 230 40 28 exists $schema->{'then'} or exists $schema->{'else'}
721 92 18 89 not exists $data->{$property} or _eval_subschema($data, $schema->{'dependentSchemas'}{$property}, {%$state, "schema_path", jsonp($state->{'schema_path'}, "dependentSchemas", $property)})
760 54 9 43 not exists $data->{$property} or _eval_subschema($data, $schema->{'dependencies'}{$property}, {%$state, "schema_path", jsonp($state->{'schema_path'}, "dependencies", $property)})
866 0 20 0 exists $schema->{'prefixItems'} || $state->{'keyword'} eq 'additionalItems'
881 17 36 144 exists $schema->{'prefixItems'} || $state->{'keyword'} eq 'additionalItems'
900 124 18 42 !exists $schema->{'maxContains'} || $state->{'_num_contains'} > $schema->{'maxContains'}
905 195 0 12 ($schema->{'minContains'} // 1) > 0 || $state->{'spec_version'} && $state->{'spec_version'} eq 'draft7'
1047 15993 6069 2887 $type eq "string" or $type eq "number"
22062 2869 18 $type eq "string" or $type eq "number" or $type eq "integer"
1056 357 4713 997 ref($value) =~ /^Math::Big(?:Int|Float)$/u || !($flags & 1024) && $flags & 768
1061 95 2727 45 ref($value) =~ /^Math::Big(?:Int|Float)$/u && $value->is_int || !($flags & 1024) && $flags & 768 && int $value == $value
1169 77 8747 592 $uri eq "" and $keyword_location eq "" or ($uri->fragment // "") eq $keyword_location and $uri->clone->fragment(undef) eq ""
1215 0 0 2279 fc "Mojo::URL"->new($ref)->to_unsafe_string ne fc $ref or $ref =~ /[^[:ascii:]]/u
0 0 2279 fc "Mojo::URL"->new($ref)->to_unsafe_string ne fc $ref or $ref =~ /[^[:ascii:]]/u or $ref =~ /#/u and not $ref =~ /#$/u and not $ref =~ /#[A-Za-z][A-Za-z0-9_:.-]*$/u and not $ref =~ m[#/(?:[^~]|~[01])*$]u
1226 4 5212 0 $override // $$schema{$state->{'keyword'}}
1229 0 0 5216 fc $uri->to_unsafe_string ne fc $string or $string =~ /[^[:ascii:]]/u
0 0 5216 fc $uri->to_unsafe_string ne fc $string or $string =~ /[^[:ascii:]]/u or not $uri->is_abs
0 0 5216 fc $uri->to_unsafe_string ne fc $string or $string =~ /[^[:ascii:]]/u or not $uri->is_abs or $string =~ /#/u and not $string =~ /#$/u and not $string =~ /#[A-Za-z][A-Za-z0-9_:.-]*$/u and not $string =~ m[#/(?:[^~]|~[01])*$]u