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