Skip to content

Commit 461f477

Browse files
committed
oneOf tests for success-caused failures
1 parent 671315b commit 461f477

1 file changed

Lines changed: 119 additions & 12 deletions

File tree

src/test-suite/tests/oneOf.json

Lines changed: 119 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66
{
77
"description": "oneOf",
88
"schema": {
9-
"oneOf": [
10-
{ "type": "string" },
11-
{ "type": "number" }
12-
]
9+
"oneOf": [{ "type": "string" }, { "type": "number" }]
1310
},
1411
"instance": null,
1512
"errors": [
@@ -46,10 +43,7 @@
4643
{
4744
"description": "oneOf more than one match",
4845
"schema": {
49-
"oneOf": [
50-
{ "type": "integer" },
51-
{ "type": "number" }
52-
]
46+
"oneOf": [{ "type": "integer" }, { "type": "number" }]
5347
},
5448
"instance": 1,
5549
"errors": [
@@ -66,13 +60,126 @@
6660
{
6761
"description": "oneOf pass",
6862
"schema": {
69-
"oneOf": [
70-
{ "type": "string" },
71-
{ "type": "number" }
72-
]
63+
"oneOf": [{ "type": "string" }, { "type": "number" }]
7364
},
7465
"instance": 42,
7566
"errors": []
67+
},
68+
{
69+
"description": "oneOf more than one match with success explanations",
70+
"schema": {
71+
"oneOf": [{ "type": "integer" }, { "type": "number" }]
72+
},
73+
"instance": 66,
74+
"errors": [
75+
{
76+
"messageId": "oneOf-message",
77+
"messageParams": { "matchCount": 2 },
78+
"alternatives": [
79+
[
80+
{
81+
"messageId": "type-success",
82+
"messageParams": {
83+
"actualType": "integer"
84+
},
85+
"instanceLocation": "#",
86+
"schemaLocations": ["#/oneOf/0/type"]
87+
}
88+
],
89+
[
90+
{
91+
"messageId": "type-success",
92+
"messageParams": {
93+
"actualType": "number"
94+
},
95+
"instanceLocation": "#",
96+
"schemaLocations": ["#/oneOf/1/type"]
97+
}
98+
]
99+
],
100+
"instanceLocation": "#",
101+
"schemaLocations": ["#/oneOf"]
102+
}
103+
]
104+
},
105+
{
106+
"description": "oneOf more than one match with failed alternatives ignored",
107+
"schema": {
108+
"oneOf": [
109+
{ "required": ["a"] },
110+
{ "required": ["b"] },
111+
{ "required": ["c"] }
112+
]
113+
},
114+
"instance": { "a": 1, "b": 2 },
115+
"errors": [
116+
{
117+
"messageId": "oneOf-message",
118+
"messageParams": { "matchCount": 2 },
119+
"alternatives": [
120+
[
121+
{
122+
"messageId": "required-success",
123+
"messageParams": {
124+
"property": "a"
125+
},
126+
"instanceLocation": "#",
127+
"schemaLocations": ["#/oneOf/0/required"]
128+
}
129+
],
130+
[
131+
{
132+
"messageId": "required-success",
133+
"messageParams": {
134+
"property": "b"
135+
},
136+
"instanceLocation": "#",
137+
"schemaLocations": ["#/oneOf/1/required"]
138+
}
139+
]
140+
],
141+
"instanceLocation": "#",
142+
"schemaLocations": ["#/oneOf"]
143+
}
144+
]
145+
},
146+
{
147+
"description": "nested oneOf producing multiple matches in inner oneOf",
148+
"schema": {
149+
"oneOf": [
150+
{
151+
"oneOf": [{ "required": ["a"] }, { "required": ["b"] }]
152+
},
153+
{ "required": ["c"] }
154+
]
155+
},
156+
"instance": { "a": 1, "b": 2 },
157+
"errors": [
158+
{
159+
"messageId": "oneOf-message",
160+
"messageParams": { "matchCount": 2 },
161+
"instanceLocation": "#",
162+
"schemaLocations": ["#/oneOf/0/oneOf"],
163+
"alternatives": [
164+
[
165+
{
166+
"messageId": "required-success",
167+
"messageParams": { "property": "a" },
168+
"instanceLocation": "#",
169+
"schemaLocations": ["#/oneOf/0/oneOf/0/required"]
170+
}
171+
],
172+
[
173+
{
174+
"messageId": "required-success",
175+
"messageParams": { "property": "b" },
176+
"instanceLocation": "#",
177+
"schemaLocations": ["#/oneOf/0/oneOf/1/required"]
178+
}
179+
]
180+
]
181+
}
182+
]
76183
}
77184
]
78185
}

0 commit comments

Comments
 (0)