From 4674c04cb80e0a50cde1b97464642e2778f9522f Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 24 Jul 2022 16:44:51 -0400 Subject: JSON schema: support multi-element array validation --- libtests/json.cc | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'libtests/json.cc') diff --git a/libtests/json.cc b/libtests/json.cc index a509c2be..ef9188c5 100644 --- a/libtests/json.cc +++ b/libtests/json.cc @@ -179,7 +179,11 @@ test_schema() "z": "ebra", "o": "ptional" } - } + }, + "four": [ + { "first": "first element" }, + { "second": "second element" } + ] } )"); @@ -227,17 +231,28 @@ test_schema() "else": { "z": "okay" } - } + }, + "four": [ + {"first": "missing second"} + ] } )"); check_schema(b, schema, 0, false, "missing items"); - check_schema(a, a, 0, false, "top-level schema array error"); - check_schema(b, b, 0, false, "lower-level schema array error"); JSON bad_schema = JSON::parse(R"({"a": true, "b": "potato?"})"); check_schema(bad_schema, bad_schema, 0, false, "bad schema field type"); + JSON c = JSON::parse(R"( +{ + "four": [ + { "first": 1 }, + { "oops": [2] } + ] +} +)"); + check_schema(c, schema, JSON::f_optional, false, "array element mismatch"); + // "two" exercises the case of the JSON containing a single // element where the schema has an array. JSON good = JSON::parse(R"( @@ -262,7 +277,11 @@ test_schema() "": { "z": "ebra" } - } + }, + "four": [ + { "first": 1 }, + { "second": [2] } + ] } )"); check_schema(good, schema, 0, false, "not optional"); -- cgit v1.2.3-54-g00ecf