TEST(JSONSchemaTest, TestMinimumArrayItems) {
dynamic schema = dynamic::object("minItems", 3);
- ASSERT_TRUE(check(schema, {1, 2, 3, 4, 5}));
- ASSERT_TRUE(check(schema, {1, 2, 3}));
- ASSERT_FALSE(check(schema, {1}));
+ ASSERT_TRUE(check(schema, dynamic::array(1, 2, 3, 4, 5)));
+ ASSERT_TRUE(check(schema, dynamic::array(1, 2, 3)));
+ ASSERT_FALSE(check(schema, dynamic::array(1)));
}
TEST(JSONSchemaTest, TestMaximumArrayItems) {
dynamic schema = dynamic::object("maxItems", 3);
- ASSERT_FALSE(check(schema, {1, 2, 3, 4, 5}));
- ASSERT_TRUE(check(schema, {1, 2, 3}));
- ASSERT_TRUE(check(schema, {1}));
+ ASSERT_FALSE(check(schema, dynamic::array(1, 2, 3, 4, 5)));
+ ASSERT_TRUE(check(schema, dynamic::array(1, 2, 3)));
+ ASSERT_TRUE(check(schema, dynamic::array(1)));
ASSERT_TRUE(check(schema, "foobar"));
}
TEST(JSONSchemaTest, TestArrayUniqueItems) {
dynamic schema = dynamic::object("uniqueItems", true);
- ASSERT_TRUE(check(schema, {1, 2, 3}));
- ASSERT_FALSE(check(schema, {1, 2, 3, 1}));
- ASSERT_FALSE(check(schema, {"cat", "dog", 1, 2, "cat"}));
- ASSERT_TRUE(check(schema, {
- dynamic::object("foo", "bar"),
- dynamic::object("foo", "baz")
- }));
+ ASSERT_TRUE(check(schema, dynamic::array(1, 2, 3)));
+ ASSERT_FALSE(check(schema, dynamic::array(1, 2, 3, 1)));
+ ASSERT_FALSE(check(schema, dynamic::array("cat", "dog", 1, 2, "cat")));
+ ASSERT_TRUE(check(
+ schema,
+ dynamic::array(
+ dynamic::object("foo", "bar"), dynamic::object("foo", "baz"))));
schema = dynamic::object("uniqueItems", false);
- ASSERT_TRUE(check(schema, {1, 2, 3, 1}));
+ ASSERT_TRUE(check(schema, dynamic::array(1, 2, 3, 1)));
}
TEST(JSONSchemaTest, TestArrayItems) {
dynamic schema = dynamic::object("items", dynamic::object("minimum", 2));
- ASSERT_TRUE(check(schema, {2, 3, 4}));
- ASSERT_FALSE(check(schema, {3, 4, 1}));
+ ASSERT_TRUE(check(schema, dynamic::array(2, 3, 4)));
+ ASSERT_FALSE(check(schema, dynamic::array(3, 4, 1)));
}
TEST(JSONSchemaTest, TestArrayAdditionalItems) {
dynamic schema = dynamic::object(
- "items", {dynamic::object("minimum", 2), dynamic::object("minimum", 1)})(
+ "items",
+ dynamic::array(
+ dynamic::object("minimum", 2), dynamic::object("minimum", 1)))(
"additionalItems", dynamic::object("minimum", 3));
- ASSERT_TRUE(check(schema, {2, 1, 3, 3, 3, 3, 4}));
- ASSERT_FALSE(check(schema, {2, 1, 3, 3, 3, 3, 1}));
+ ASSERT_TRUE(check(schema, dynamic::array(2, 1, 3, 3, 3, 3, 4)));
+ ASSERT_FALSE(check(schema, dynamic::array(2, 1, 3, 3, 3, 3, 1)));
}
TEST(JSONSchemaTest, TestArrayNoAdditionalItems) {
- dynamic schema = dynamic::object("items", {dynamic::object("minimum", 2)})(
- "additionalItems", false);
- ASSERT_FALSE(check(schema, {3, 3, 3}));
+ dynamic schema =
+ dynamic::object("items", dynamic::array(dynamic::object("minimum", 2)))(
+ "additionalItems", false);
+ ASSERT_FALSE(check(schema, dynamic::array(3, 3, 3)));
}
TEST(JSONSchemaTest, TestArrayItemsNotPresent) {
dynamic schema = dynamic::object("additionalItems", false);
- ASSERT_TRUE(check(schema, {3, 3, 3}));
+ ASSERT_TRUE(check(schema, dynamic::array(3, 3, 3)));
}
TEST(JSONSchemaTest, TestRef) {
dynamic::object("positiveInteger",
dynamic::object("minimum", 1)("type", "integer")))(
"items", dynamic::object("$ref", "#/definitions/positiveInteger"));
- ASSERT_TRUE(check(schema, {1, 2, 3, 4}));
- ASSERT_FALSE(check(schema, {4, -5}));
+ ASSERT_TRUE(check(schema, dynamic::array(1, 2, 3, 4)));
+ ASSERT_FALSE(check(schema, dynamic::array(4, -5)));
}
TEST(JSONSchemaTest, TestRecursiveRef) {
TEST(JSONSchemaTest, TestInfinitelyRecursiveRef) {
dynamic schema = dynamic::object("not", dynamic::object("$ref", "#"));
auto validator = makeValidator(schema);
- ASSERT_THROW(validator->validate({1, 2}), std::runtime_error);
+ ASSERT_THROW(validator->validate(dynamic::array(1, 2)), std::runtime_error);
}
TEST(JSONSchemaTest, TestRequired) {
- dynamic schema = dynamic::object("required", {"foo", "bar"});
+ dynamic schema = dynamic::object("required", dynamic::array("foo", "bar"));
ASSERT_FALSE(check(schema, dynamic::object("foo", 123)));
ASSERT_FALSE(check(schema, dynamic::object("bar", 123)));
ASSERT_TRUE(check(schema, dynamic::object("bar", 123)("foo", 456)));
}
TEST(JSONSchemaTest, TestPropertyDependency) {
- dynamic schema =
- dynamic::object("dependencies", dynamic::object("p1", {"p2"}));
+ dynamic schema = dynamic::object(
+ "dependencies", dynamic::object("p1", dynamic::array("p2")));
ASSERT_TRUE(check(schema, dynamic::object));
ASSERT_TRUE(check(schema, dynamic::object("p1", 1)("p2", 1)));
ASSERT_FALSE(check(schema, dynamic::object("p1", 1)));
TEST(JSONSchemaTest, TestSchemaDependency) {
dynamic schema = dynamic::object(
"dependencies",
- dynamic::object("p1", dynamic::object("required", {"p2"})));
+ dynamic::object("p1", dynamic::object("required", dynamic::array("p2"))));
ASSERT_TRUE(check(schema, dynamic::object));
ASSERT_TRUE(check(schema, dynamic::object("p1", 1)("p2", 1)));
ASSERT_FALSE(check(schema, dynamic::object("p1", 1)));
}
TEST(JSONSchemaTest, TestEnum) {
- dynamic schema = dynamic::object("enum", {"a", 1});
+ dynamic schema = dynamic::object("enum", dynamic::array("a", 1));
ASSERT_TRUE(check(schema, "a"));
ASSERT_TRUE(check(schema, 1));
ASSERT_FALSE(check(schema, "b"));
}
TEST(JSONSchemaTest, TestTypeArray) {
- dynamic schema = dynamic::object("type", {"array", "number"});
+ dynamic schema = dynamic::object("type", dynamic::array("array", "number"));
ASSERT_TRUE(check(schema, dynamic(5)));
ASSERT_TRUE(check(schema, dynamic(1.1)));
ASSERT_FALSE(check(schema, dynamic::object));
TEST(JSONSchemaTest, TestAllOf) {
dynamic schema = dynamic::object(
"allOf",
- {dynamic::object("minimum", 1), dynamic::object("type", "integer")});
+ dynamic::array(
+ dynamic::object("minimum", 1), dynamic::object("type", "integer")));
ASSERT_TRUE(check(schema, 2));
ASSERT_FALSE(check(schema, 0));
ASSERT_FALSE(check(schema, 1.1));
TEST(JSONSchemaTest, TestAnyOf) {
dynamic schema = dynamic::object(
"anyOf",
- {dynamic::object("minimum", 1), dynamic::object("type", "integer")});
+ dynamic::array(
+ dynamic::object("minimum", 1), dynamic::object("type", "integer")));
ASSERT_TRUE(check(schema, 2)); // matches both
ASSERT_FALSE(check(schema, 0.1)); // matches neither
ASSERT_TRUE(check(schema, 1.1)); // matches first one
TEST(JSONSchemaTest, TestOneOf) {
dynamic schema = dynamic::object(
"oneOf",
- {dynamic::object("minimum", 1), dynamic::object("type", "integer")});
+ dynamic::array(
+ dynamic::object("minimum", 1), dynamic::object("type", "integer")));
ASSERT_FALSE(check(schema, 2)); // matches both
ASSERT_FALSE(check(schema, 0.1)); // matches neither
ASSERT_TRUE(check(schema, 1.1)); // matches first one