xref: /freebsd/contrib/libucl/tests/schema/properties.json (revision 911f0260390e18cf85f3dbf2c719b593efdc1e3c)
1[
2    {
3        "description": "object properties validation",
4        "schema": {
5            "properties": {
6                "foo": {"type": "integer"},
7                "bar": {"type": "string"}
8            }
9        },
10        "tests": [
11            {
12                "description": "both properties present and valid is valid",
13                "data": {"foo": 1, "bar": "baz"},
14                "valid": true
15            },
16            {
17                "description": "one property invalid is invalid",
18                "data": {"foo": 1, "bar": {}},
19                "valid": false
20            },
21            {
22                "description": "both properties invalid is invalid",
23                "data": {"foo": [], "bar": {}},
24                "valid": false
25            },
26            {
27                "description": "doesn't invalidate other properties",
28                "data": {"quux": []},
29                "valid": true
30            },
31            {
32                "description": "ignores non-objects",
33                "data": [],
34                "valid": true
35            }
36        ]
37    },
38    {
39        "description":
40            "properties, patternProperties, additionalProperties interaction",
41        "schema": {
42            "properties": {
43                "foo": {"type": "array", "maxItems": 3},
44                "bar": {"type": "array"}
45            },
46            "patternProperties": {"f.o": {"minItems": 2}},
47            "additionalProperties": {"type": "integer"}
48        },
49        "tests": [
50            {
51                "description": "property validates property",
52                "data": {"foo": [1, 2]},
53                "valid": true
54            },
55            {
56                "description": "property invalidates property",
57                "data": {"foo": [1, 2, 3, 4]},
58                "valid": false
59            },
60            {
61                "description": "patternProperty invalidates property",
62                "data": {"foo": []},
63                "valid": false
64            },
65            {
66                "description": "patternProperty validates nonproperty",
67                "data": {"fxo": [1, 2]},
68                "valid": true
69            },
70            {
71                "description": "patternProperty invalidates nonproperty",
72                "data": {"fxo": []},
73                "valid": false
74            },
75            {
76                "description": "additionalProperty ignores property",
77                "data": {"bar": []},
78                "valid": true
79            },
80            {
81                "description": "additionalProperty validates others",
82                "data": {"quux": 3},
83                "valid": true
84            },
85            {
86                "description": "additionalProperty invalidates others",
87                "data": {"quux": "foo"},
88                "valid": false
89            }
90        ]
91    }
92]
93