reformat grammar integ tests w/ R"""()""" strings where there's escapes
This commit is contained in:
parent
f714d7f1a7
commit
3c64db18d7
1 changed files with 130 additions and 164 deletions
|
@ -508,7 +508,7 @@ static void test_json_schema() {
|
||||||
)""",
|
)""",
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"{}",
|
R"""({})""",
|
||||||
R"""({"foo": "bar"})""",
|
R"""({"foo": "bar"})""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
|
@ -516,7 +516,7 @@ static void test_json_schema() {
|
||||||
"",
|
"",
|
||||||
"[]",
|
"[]",
|
||||||
"null",
|
"null",
|
||||||
"\"\"",
|
R"""("")""",
|
||||||
"true",
|
"true",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -524,16 +524,14 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"exotic formats (list)",
|
"exotic formats (list)",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
|
||||||
"items": [
|
"items": [
|
||||||
{ "format": "date" },
|
{ "format": "date" },
|
||||||
{ "format": "uuid" },
|
{ "format": "uuid" },
|
||||||
{ "format": "time" },
|
{ "format": "time" },
|
||||||
{ "format": "date-time" }
|
{ "format": "date-time" }
|
||||||
]
|
]
|
||||||
}
|
})""",
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
// "{}", // NOTE: This string passes for this schema on https://www.jsonschemavalidator.net/ -- should it?
|
// "{}", // NOTE: This string passes for this schema on https://www.jsonschemavalidator.net/ -- should it?
|
||||||
|
@ -552,125 +550,113 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"string",
|
"string",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"type": "string"
|
||||||
"type": "string"
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"\"foo\"",
|
R"""("foo")""",
|
||||||
"\"bar\"",
|
R"""("bar")""",
|
||||||
"\"\"",
|
R"""("")""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"{}",
|
R"""({})""",
|
||||||
"\"foo\": \"bar\"",
|
R"""("foo": "bar")""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"string w/ min length 1",
|
"string w/ min length 1",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"type": "string",
|
||||||
"type": "string",
|
"minLength": 1
|
||||||
"minLength": 1
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"\"foo\"",
|
R"""("foo")""",
|
||||||
"\"bar\"",
|
R"""("bar")""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"\"\"",
|
R"""("")""",
|
||||||
"{}",
|
R"""({})""",
|
||||||
"\"foo\": \"bar\"",
|
R"""("foo": "bar")""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"string w/ min length 3",
|
"string w/ min length 3",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"minLength": 3
|
"minLength": 3
|
||||||
}
|
})""",
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"\"foo\"",
|
R"""("foo")""",
|
||||||
"\"bar\"",
|
R"""("bar")""",
|
||||||
"\"foobar\"",
|
R"""("foobar")""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"\"\"",
|
R"""("")""",
|
||||||
"\"f\"",
|
R"""("f")""",
|
||||||
"\"fo\"",
|
R"""("fo")""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"string w/ max length",
|
"string w/ max length",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"type": "string",
|
||||||
"type": "string",
|
"maxLength": 3
|
||||||
"maxLength": 3
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"\"foo\"",
|
R"""("foo")""",
|
||||||
"\"bar\"",
|
R"""("bar")""",
|
||||||
"\"\"",
|
R"""("")""",
|
||||||
"\"f\"",
|
R"""("f")""",
|
||||||
"\"fo\"",
|
R"""("fo")""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"\"foobar\"",
|
R"""("foobar")""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"string w/ min & max length",
|
"string w/ min & max length",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"type": "string",
|
||||||
"type": "string",
|
"minLength": 1,
|
||||||
"minLength": 1,
|
"maxLength": 4
|
||||||
"maxLength": 4
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"\"foo\"",
|
R"""("foo")""",
|
||||||
"\"bar\"",
|
R"""("bar")""",
|
||||||
"\"f\"",
|
R"""("f")""",
|
||||||
"\"barf\"",
|
R"""("barf")""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"\"\"",
|
R"""("")""",
|
||||||
"\"barfo\"",
|
R"""("barfo")""",
|
||||||
"\"foobar\"",
|
R"""("foobar")""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"boolean",
|
"boolean",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"type": "boolean"
|
||||||
"type": "boolean"
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"true",
|
"true",
|
||||||
|
@ -678,96 +664,88 @@ static void test_json_schema() {
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"\"\"",
|
R"""("")""",
|
||||||
"\"true\"",
|
R"""("true")""",
|
||||||
"True",
|
R"""(True)""",
|
||||||
"FALSE",
|
R"""(FALSE)""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"integer",
|
"integer",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"type": "integer"
|
||||||
"type": "integer"
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"0",
|
R"""(0)""",
|
||||||
"12345",
|
R"""(12345)""",
|
||||||
"1234567890123456"
|
R"""(1234567890123456)""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"",
|
R"""()""",
|
||||||
"01",
|
R"""(01)""",
|
||||||
"007",
|
R"""(007)""",
|
||||||
"12345678901234567"
|
R"""(12345678901234567 )""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"string const",
|
"string const",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"const": "foo"
|
||||||
"const": "foo"
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"\"foo\"",
|
R"""("foo")""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"foo",
|
R"""(foo)""",
|
||||||
"\"bar\"",
|
R"""("bar")""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"non-string const",
|
"non-string const",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"const": true
|
||||||
"const": true
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"true",
|
R"""(true)""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"",
|
R"""()""",
|
||||||
"foo",
|
R"""(foo)""",
|
||||||
"\"true\"",
|
R"""("true")""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
test_schema(
|
test_schema(
|
||||||
"non-string const",
|
"non-string const",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"enum": ["red", "amber", "green", null, 42, ["foo"]]
|
||||||
"enum": ["red", "amber", "green", null, 42, ["foo"]]
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"\"red\"",
|
R"""("red")""",
|
||||||
"null",
|
R"""(null)""",
|
||||||
"42",
|
R"""(42)""",
|
||||||
"[\"foo\"]",
|
R"""(["foo"])""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"",
|
R"""()""",
|
||||||
"420",
|
R"""(420)""",
|
||||||
"true",
|
R"""(true)""",
|
||||||
"foo",
|
R"""(foo)""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -775,26 +753,24 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"min+max items",
|
"min+max items",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"items": {
|
||||||
"items": {
|
"type": ["number", "integer"]
|
||||||
"type": ["number", "integer"]
|
},
|
||||||
},
|
"minItems": 3,
|
||||||
"minItems": 3,
|
"maxItems": 5
|
||||||
"maxItems": 5
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"[1, 2, 3]",
|
R"""([1, 2, 3])""",
|
||||||
"[1, 2, 3, 4]",
|
R"""([1, 2, 3, 4])""",
|
||||||
"[1, 2, 3, 4, 5]",
|
R"""([1, 2, 3, 4, 5])""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"[1, 2]",
|
R"""([1, 2])""",
|
||||||
"[1, 2, 3, 4, 5, 6]",
|
R"""([1, 2, 3, 4, 5, 6])""",
|
||||||
"1"
|
R"""(1)""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -802,16 +778,14 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"object properties",
|
"object properties",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"number": { "type": "number" },
|
"number": { "type": "number" },
|
||||||
"street_name": { "type": "string" },
|
"street_name": { "type": "string" },
|
||||||
"street_type": { "enum": ["Street", "Avenue", "Boulevard"] }
|
"street_type": { "enum": ["Street", "Avenue", "Boulevard"] }
|
||||||
}
|
}
|
||||||
}
|
})""",
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
R"""({ "number": 1600, "street_name": "Pennsylvania", "street_type":"Avenue"})""",
|
R"""({ "number": 1600, "street_name": "Pennsylvania", "street_type":"Avenue"})""",
|
||||||
|
@ -846,16 +820,16 @@ static void test_json_schema() {
|
||||||
})""",
|
})""",
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
"{\"a\": 42}",
|
R"""({"a": 42})""",
|
||||||
"{\"c\": \"\"}",
|
R"""({"c": ""})""",
|
||||||
"{\"a\": 42, \"c\": \"\"}",
|
R"""({"a": 42, "c": ""})""",
|
||||||
"{\"a_\": \"\"}",
|
R"""({"a_": ""})""",
|
||||||
},
|
},
|
||||||
// Failing strings
|
// Failing strings
|
||||||
{
|
{
|
||||||
"",
|
R"""()""",
|
||||||
"{\"a\": \"\"}",
|
R"""({"a": ""})""",
|
||||||
"{\"a\": \"\", \"b\": \"\"}",
|
R"""({"a": "", "b": ""})""",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -863,8 +837,7 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"object properties, additionalProperties: true",
|
"object properties, additionalProperties: true",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"number": { "type": "number" },
|
"number": { "type": "number" },
|
||||||
|
@ -872,8 +845,7 @@ static void test_json_schema() {
|
||||||
"street_type": { "enum": ["Street", "Avenue", "Boulevard"] }
|
"street_type": { "enum": ["Street", "Avenue", "Boulevard"] }
|
||||||
},
|
},
|
||||||
"additionalProperties": true
|
"additionalProperties": true
|
||||||
}
|
})""",
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
// "By extension, even an empty object is valid"
|
// "By extension, even an empty object is valid"
|
||||||
|
@ -899,8 +871,7 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"required + optional props each in original order",
|
"required + optional props each in original order",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"number": { "type": "number" },
|
"number": { "type": "number" },
|
||||||
|
@ -908,8 +879,7 @@ static void test_json_schema() {
|
||||||
"street_type": { "enum": ["Street", "Avenue", "Boulevard"] }
|
"street_type": { "enum": ["Street", "Avenue", "Boulevard"] }
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
}
|
})""",
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
R"""({ "street_name": "Pennsylvania" })""",
|
R"""({ "street_name": "Pennsylvania" })""",
|
||||||
|
@ -931,18 +901,16 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"required + optional props each in original order",
|
"required + optional props each in original order",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
"properties": {
|
||||||
"properties": {
|
"b": {"type": "string"},
|
||||||
"b": {"type": "string"},
|
"a": {"type": "string"},
|
||||||
"a": {"type": "string"},
|
"d": {"type": "string"},
|
||||||
"d": {"type": "string"},
|
"c": {"type": "string"}
|
||||||
"c": {"type": "string"}
|
},
|
||||||
},
|
"required": ["a", "b"],
|
||||||
"required": ["a", "b"],
|
"additionalProperties": false
|
||||||
"additionalProperties": false
|
})""",
|
||||||
}
|
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
R"""({"b": "foo", "a": "bar"})""",
|
R"""({"b": "foo", "a": "bar"})""",
|
||||||
|
@ -962,8 +930,7 @@ static void test_json_schema() {
|
||||||
test_schema(
|
test_schema(
|
||||||
"required props",
|
"required props",
|
||||||
// Schema
|
// Schema
|
||||||
R"""(
|
R"""({
|
||||||
{
|
|
||||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
"$id": "https://example.com/product.schema.json",
|
"$id": "https://example.com/product.schema.json",
|
||||||
"title": "Product",
|
"title": "Product",
|
||||||
|
@ -1009,8 +976,7 @@ static void test_json_schema() {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [ "productId", "productName", "price" ]
|
"required": [ "productId", "productName", "price" ]
|
||||||
}
|
})""",
|
||||||
)""",
|
|
||||||
// Passing strings
|
// Passing strings
|
||||||
{
|
{
|
||||||
R"""({"productId": 1, "productName": "A green door", "price": 12.50})""",
|
R"""({"productId": 1, "productName": "A green door", "price": 12.50})""",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue