[
{
"description"
:
"ignore if without then or else"
,
"schema"
: {
"if"
: {
"const"
: 0
}
},
"tests"
: [
{
"description"
:
"valid when valid against lone if"
,
"data"
: 0,
"valid"
:
true
},
{
"description"
:
"valid when invalid against lone if"
,
"data"
:
"hello"
,
"valid"
:
true
}
]
},
{
"description"
:
"ignore then without if"
,
"schema"
: {
"then"
: {
"const"
: 0
}
},
"tests"
: [
{
"description"
:
"valid when valid against lone then"
,
"data"
: 0,
"valid"
:
true
},
{
"description"
:
"valid when invalid against lone then"
,
"data"
:
"hello"
,
"valid"
:
true
}
]
},
{
"description"
:
"ignore else without if"
,
"schema"
: {
"else"
: {
"const"
: 0
}
},
"tests"
: [
{
"description"
:
"valid when valid against lone else"
,
"data"
: 0,
"valid"
:
true
},
{
"description"
:
"valid when invalid against lone else"
,
"data"
:
"hello"
,
"valid"
:
true
}
]
},
{
"description"
:
"if and then without else"
,
"schema"
: {
"if"
: {
"exclusiveMaximum"
: 0
},
"then"
: {
"minimum"
: -10
}
},
"tests"
: [
{
"description"
:
"valid through then"
,
"data"
: -1,
"valid"
:
true
},
{
"description"
:
"invalid through then"
,
"data"
: -100,
"valid"
:
false
},
{
"description"
:
"valid when if test fails"
,
"data"
: 3,
"valid"
:
true
}
]
},
{
"description"
:
"if and else without then"
,
"schema"
: {
"if"
: {
"exclusiveMaximum"
: 0
},
"else"
: {
"multipleOf"
: 2
}
},
"tests"
: [
{
"description"
:
"valid when if test passes"
,
"data"
: -1,
"valid"
:
true
},
{
"description"
:
"valid through else"
,
"data"
: 4,
"valid"
:
true
},
{
"description"
:
"invalid through else"
,
"data"
: 3,
"valid"
:
false
}
]
},
{
"description"
:
"validate against correct branch, then vs else"
,
"schema"
: {
"if"
: {
"exclusiveMaximum"
: 0
},
"then"
: {
"minimum"
: -10
},
"else"
: {
"multipleOf"
: 2
}
},
"tests"
: [
{
"description"
:
"valid through then"
,
"data"
: -1,
"valid"
:
true
},
{
"description"
:
"invalid through then"
,
"data"
: -100,
"valid"
:
false
},
{
"description"
:
"valid through else"
,
"data"
: 4,
"valid"
:
true
},
{
"description"
:
"invalid through else"
,
"data"
: 3,
"valid"
:
false
}
]
},
{
"description"
:
"non-interference across combined schemas"
,
"schema"
: {
"allOf"
: [
{
"if"
: {
"exclusiveMaximum"
: 0
}
},
{
"then"
: {
"minimum"
: -10
}
},
{
"else"
: {
"multipleOf"
: 2
}
}
]
},
"tests"
: [
{
"description"
:
"valid, but would have been invalid through then"
,
"data"
: -100,
"valid"
:
true
},
{
"description"
:
"valid, but would have been invalid through else"
,
"data"
: 3,
"valid"
:
true
}
]
},
{
"description"
:
"if with boolean schema true"
,
"schema"
: {
"if"
:
true
,
"then"
: {
"const"
:
"then"
},
"else"
: {
"const"
:
"else"
}
},
"tests"
: [
{
"description"
:
"boolean schema true in if always chooses the then path (valid)"
,
"data"
:
"then"
,
"valid"
:
true
},
{
"description"
:
"boolean schema true in if always chooses the then path (invalid)"
,
"data"
:
"else"
,
"valid"
:
false
}
]
},
{
"description"
:
"if with boolean schema false"
,
"schema"
: {
"if"
:
false
,
"then"
: {
"const"
:
"then"
},
"else"
: {
"const"
:
"else"
}
},
"tests"
: [
{
"description"
:
"boolean schema false in if always chooses the else path (invalid)"
,
"data"
:
"then"
,
"valid"
:
false
},
{
"description"
:
"boolean schema false in if always chooses the else path (valid)"
,
"data"
:
"else"
,
"valid"
:
true
}
]
},
{
"description"
:
"if appears at the end when serialized (keyword processing sequence)"
,
"schema"
: {
"then"
: {
"const"
:
"yes"
},
"else"
: {
"const"
:
"other"
},
"if"
: {
"maxLength"
: 4 }
},
"tests"
: [
{
"description"
:
"yes redirects to then and passes"
,
"data"
:
"yes"
,
"valid"
:
true
},
{
"description"
:
"other redirects to else and passes"
,
"data"
:
"other"
,
"valid"
:
true
},
{
"description"
:
"no redirects to then and fails"
,
"data"
:
"no"
,
"valid"
:
false
},
{
"description"
:
"invalid redirects to else and fails"
,
"data"
:
"invalid"
,
"valid"
:
false
}
]
}
]