[ { "description": "uniqueItems validation", "database": { "types": [ { "name": "uniqueItems_0_0", "schemas": { "uniqueItems_0_0": { "uniqueItems": true, "extensible": true } } } ] }, "tests": [ { "description": "unique array of integers is valid", "data": [ 1, 2 ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of integers is invalid", "data": [ 1, 1 ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } }, { "description": "non-unique array of more than two integers is invalid", "data": [ 1, 2, 1 ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } }, { "description": "numbers are unique if mathematically unequal", "data": [ 1, 1, 1 ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } }, { "description": "false is not equal to zero", "data": [ 0, false ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": true } }, { "description": "true is not equal to one", "data": [ 1, true ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": true } }, { "description": "unique array of strings is valid", "data": [ "foo", "bar", "baz" ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of strings is invalid", "data": [ "foo", "bar", "foo" ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } }, { "description": "unique array of objects is valid", "data": [ { "foo": "bar" }, { "foo": "baz" } ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of objects is invalid", "data": [ { "foo": "bar" }, { "foo": "bar" } ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } }, { "description": "property order of array of objects is ignored", "data": [ { "foo": "bar", "bar": "foo" }, { "bar": "foo", "foo": "bar" } ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } }, { "description": "unique array of nested objects is valid", "data": [ { "foo": { "bar": { "baz": true } } }, { "foo": { "bar": { "baz": false } } } ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of nested objects is invalid", "data": [ { "foo": { "bar": { "baz": true } } }, { "foo": { "bar": { "baz": true } } } ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } }, { "description": "unique array of arrays is valid", "data": [ [ "foo" ], [ "bar" ] ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of arrays is invalid", "data": [ [ "foo" ], [ "foo" ] ], "schema_id": "uniqueItems_0_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_0_0" } } ] } } ] }, { "description": "uniqueItems=false validation", "database": { "types": [ { "name": "uniqueItems_3_0", "schemas": { "uniqueItems_3_0": { "uniqueItems": false, "extensible": true } } } ] }, "tests": [ { "description": "unique array of integers is valid", "data": [ 1, 2 ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of integers is valid", "data": [ 1, 1 ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "numbers are unique if mathematically unequal", "data": [ 1, 1, 1 ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "false is not equal to zero", "data": [ 0, false ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "true is not equal to one", "data": [ 1, true ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "unique array of objects is valid", "data": [ { "foo": "bar" }, { "foo": "baz" } ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of objects is valid", "data": [ { "foo": "bar" }, { "foo": "bar" } ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "unique array of nested objects is valid", "data": [ { "foo": { "bar": { "baz": true } } }, { "foo": { "bar": { "baz": false } } } ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of nested objects is valid", "data": [ { "foo": { "bar": { "baz": true } } }, { "foo": { "bar": { "baz": true } } } ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "unique array of arrays is valid", "data": [ [ "foo" ], [ "bar" ] ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique array of arrays is valid", "data": [ [ "foo" ], [ "foo" ] ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "1 and true are unique", "data": [ 1, true ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "0 and false are unique", "data": [ 0, false ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "unique heterogeneous types are valid", "data": [ {}, [ 1 ], true, null, 1 ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } }, { "description": "non-unique heterogeneous types are valid", "data": [ {}, [ 1 ], true, null, {}, 1 ], "schema_id": "uniqueItems_3_0", "action": "validate", "expect": { "success": true } } ] }, { "description": "extensible: true allows extra items in uniqueItems", "database": { "types": [ { "name": "uniqueItems_6_0", "schemas": { "uniqueItems_6_0": { "uniqueItems": true, "extensible": true } } } ] }, "tests": [ { "description": "extra items must be unique", "data": [ 1, 1 ], "schema_id": "uniqueItems_6_0", "action": "validate", "expect": { "success": false, "errors": [ { "code": "UNIQUE_ITEMS_VIOLATED", "details": { "path": "", "schema": "uniqueItems_6_0" } } ] } }, { "description": "extra unique items valid", "data": [ 1, 2 ], "schema_id": "uniqueItems_6_0", "action": "validate", "expect": { "success": true } } ] } ]