Skip to content

Commit dff69dc

Browse files
authored
Merge pull request #474 from marksparkza/unevaluatedItems-depends-on-contains
Add tests for unevaluatedItems interaction with contains
2 parents 51b4977 + 7cf7880 commit dff69dc

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

Diff for: tests/draft2020-12/unevaluatedItems.json

+108
Original file line numberDiff line numberDiff line change
@@ -485,5 +485,113 @@
485485
"valid": false
486486
}
487487
]
488+
},
489+
{
490+
"description": "unevaluatedItems depends on adjacent contains",
491+
"schema": {
492+
"prefixItems": [true],
493+
"contains": {"type": "string"},
494+
"unevaluatedItems": false
495+
},
496+
"tests": [
497+
{
498+
"description": "second item is evaluated by contains",
499+
"data": [ 1, "foo" ],
500+
"valid": true
501+
},
502+
{
503+
"description": "contains fails, second item is not evaluated",
504+
"data": [ 1, 2 ],
505+
"valid": false
506+
},
507+
{
508+
"description": "contains passes, second item is not evaluated",
509+
"data": [ 1, 2, "foo" ],
510+
"valid": false
511+
}
512+
]
513+
},
514+
{
515+
"description": "unevaluatedItems depends on multiple nested contains",
516+
"schema": {
517+
"allOf": [
518+
{ "contains": { "multipleOf": 2 } },
519+
{ "contains": { "multipleOf": 3 } }
520+
],
521+
"unevaluatedItems": { "multipleOf": 5 }
522+
},
523+
"tests": [
524+
{
525+
"description": "5 not evaluated, passes unevaluatedItems",
526+
"data": [ 2, 3, 4, 5, 6 ],
527+
"valid": true
528+
},
529+
{
530+
"description": "7 not evaluated, fails unevaluatedItems",
531+
"data": [ 2, 3, 4, 7, 8 ],
532+
"valid": false
533+
}
534+
]
535+
},
536+
{
537+
"description": "unevaluatedItems and contains interact to control item dependency relationship",
538+
"schema": {
539+
"if": {
540+
"contains": {"const": "a"}
541+
},
542+
"then": {
543+
"if": {
544+
"contains": {"const": "b"}
545+
},
546+
"then": {
547+
"if": {
548+
"contains": {"const": "c"}
549+
}
550+
}
551+
},
552+
"unevaluatedItems": false
553+
},
554+
"tests": [
555+
{
556+
"description": "empty array is valid",
557+
"data": [],
558+
"valid": true
559+
},
560+
{
561+
"description": "only a's are valid",
562+
"data": [ "a", "a" ],
563+
"valid": true
564+
},
565+
{
566+
"description": "a's and b's are valid",
567+
"data": [ "a", "b", "a", "b", "a" ],
568+
"valid": true
569+
},
570+
{
571+
"description": "a's, b's and c's are valid",
572+
"data": [ "c", "a", "c", "c", "b", "a" ],
573+
"valid": true
574+
},
575+
{
576+
"description": "only b's are invalid",
577+
"data": [ "b", "b" ],
578+
"valid": false
579+
},
580+
{
581+
"description": "only c's are invalid",
582+
"data": [ "c", "c" ],
583+
"valid": false
584+
},
585+
{
586+
"description": "only b's and c's are invalid",
587+
"data": [ "c", "b", "c", "b", "c" ],
588+
"valid": false
589+
},
590+
{
591+
"description": "only a's and c's are invalid",
592+
"data": [ "c", "a", "c", "a", "c" ],
593+
"valid": false
594+
}
595+
]
488596
}
489597
]

0 commit comments

Comments
 (0)