json_schemer 0.2.6 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +22 -0
  3. data/Gemfile.lock +1 -1
  4. data/JSON-Schema-Test-Suite/.gitignore +1 -0
  5. data/JSON-Schema-Test-Suite/.travis.yml +8 -0
  6. data/JSON-Schema-Test-Suite/LICENSE +19 -0
  7. data/JSON-Schema-Test-Suite/README.md +181 -0
  8. data/JSON-Schema-Test-Suite/bin/jsonschema_suite +295 -0
  9. data/JSON-Schema-Test-Suite/index.js +45 -0
  10. data/JSON-Schema-Test-Suite/package.json +28 -0
  11. data/JSON-Schema-Test-Suite/remotes/folder/folderInteger.json +3 -0
  12. data/JSON-Schema-Test-Suite/remotes/integer.json +3 -0
  13. data/JSON-Schema-Test-Suite/remotes/name-defs.json +11 -0
  14. data/JSON-Schema-Test-Suite/remotes/name.json +11 -0
  15. data/JSON-Schema-Test-Suite/remotes/subSchemas.json +8 -0
  16. data/JSON-Schema-Test-Suite/test-schema.json +59 -0
  17. data/JSON-Schema-Test-Suite/tests/draft2019-08/additionalItems.json +87 -0
  18. data/JSON-Schema-Test-Suite/tests/draft2019-08/additionalProperties.json +133 -0
  19. data/JSON-Schema-Test-Suite/tests/draft2019-08/allOf.json +218 -0
  20. data/JSON-Schema-Test-Suite/tests/draft2019-08/anyOf.json +189 -0
  21. data/JSON-Schema-Test-Suite/tests/draft2019-08/boolean_schema.json +104 -0
  22. data/JSON-Schema-Test-Suite/tests/draft2019-08/const.json +170 -0
  23. data/JSON-Schema-Test-Suite/tests/draft2019-08/contains.json +95 -0
  24. data/JSON-Schema-Test-Suite/tests/draft2019-08/default.json +49 -0
  25. data/JSON-Schema-Test-Suite/tests/draft2019-08/defs.json +24 -0
  26. data/JSON-Schema-Test-Suite/tests/draft2019-08/dependencies.json +268 -0
  27. data/JSON-Schema-Test-Suite/tests/draft2019-08/enum.json +179 -0
  28. data/JSON-Schema-Test-Suite/tests/draft2019-08/exclusiveMaximum.json +30 -0
  29. data/JSON-Schema-Test-Suite/tests/draft2019-08/exclusiveMinimum.json +30 -0
  30. data/JSON-Schema-Test-Suite/tests/draft2019-08/if-then-else.json +188 -0
  31. data/JSON-Schema-Test-Suite/tests/draft2019-08/items.json +250 -0
  32. data/JSON-Schema-Test-Suite/tests/draft2019-08/maxItems.json +28 -0
  33. data/JSON-Schema-Test-Suite/tests/draft2019-08/maxLength.json +33 -0
  34. data/JSON-Schema-Test-Suite/tests/draft2019-08/maxProperties.json +38 -0
  35. data/JSON-Schema-Test-Suite/tests/draft2019-08/maximum.json +28 -0
  36. data/JSON-Schema-Test-Suite/tests/draft2019-08/minItems.json +28 -0
  37. data/JSON-Schema-Test-Suite/tests/draft2019-08/minLength.json +33 -0
  38. data/JSON-Schema-Test-Suite/tests/draft2019-08/minProperties.json +38 -0
  39. data/JSON-Schema-Test-Suite/tests/draft2019-08/minimum.json +59 -0
  40. data/JSON-Schema-Test-Suite/tests/draft2019-08/multipleOf.json +60 -0
  41. data/JSON-Schema-Test-Suite/tests/draft2019-08/not.json +117 -0
  42. data/JSON-Schema-Test-Suite/tests/draft2019-08/oneOf.json +206 -0
  43. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/bignum.json +105 -0
  44. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/content.json +77 -0
  45. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/ecmascript-regex.json +13 -0
  46. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/date-time.json +53 -0
  47. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/date.json +23 -0
  48. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/email.json +18 -0
  49. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/hostname.json +33 -0
  50. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/idn-email.json +18 -0
  51. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/idn-hostname.json +28 -0
  52. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/ipv4.json +33 -0
  53. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/ipv6.json +28 -0
  54. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/iri-reference.json +43 -0
  55. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/iri.json +53 -0
  56. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/json-pointer.json +168 -0
  57. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/regex.json +18 -0
  58. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/relative-json-pointer.json +33 -0
  59. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/time.json +23 -0
  60. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/uri-reference.json +43 -0
  61. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/uri-template.json +28 -0
  62. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/format/uri.json +103 -0
  63. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/zeroTerminatedFloats.json +15 -0
  64. data/JSON-Schema-Test-Suite/tests/draft2019-08/pattern.json +34 -0
  65. data/JSON-Schema-Test-Suite/tests/draft2019-08/patternProperties.json +151 -0
  66. data/JSON-Schema-Test-Suite/tests/draft2019-08/properties.json +167 -0
  67. data/JSON-Schema-Test-Suite/tests/draft2019-08/propertyNames.json +78 -0
  68. data/JSON-Schema-Test-Suite/tests/draft2019-08/ref.json +443 -0
  69. data/JSON-Schema-Test-Suite/tests/draft2019-08/refRemote.json +167 -0
  70. data/JSON-Schema-Test-Suite/tests/draft2019-08/required.json +105 -0
  71. data/JSON-Schema-Test-Suite/tests/draft2019-08/type.json +464 -0
  72. data/JSON-Schema-Test-Suite/tests/draft2019-08/uniqueItems.json +89 -0
  73. data/JSON-Schema-Test-Suite/tests/draft3/additionalItems.json +82 -0
  74. data/JSON-Schema-Test-Suite/tests/draft3/additionalProperties.json +133 -0
  75. data/JSON-Schema-Test-Suite/tests/draft3/default.json +49 -0
  76. data/JSON-Schema-Test-Suite/tests/draft3/dependencies.json +118 -0
  77. data/JSON-Schema-Test-Suite/tests/draft3/disallow.json +80 -0
  78. data/JSON-Schema-Test-Suite/tests/draft3/divisibleBy.json +60 -0
  79. data/JSON-Schema-Test-Suite/tests/draft3/enum.json +71 -0
  80. data/JSON-Schema-Test-Suite/tests/draft3/extends.json +94 -0
  81. data/JSON-Schema-Test-Suite/tests/draft3/items.json +46 -0
  82. data/JSON-Schema-Test-Suite/tests/draft3/maxItems.json +28 -0
  83. data/JSON-Schema-Test-Suite/tests/draft3/maxLength.json +33 -0
  84. data/JSON-Schema-Test-Suite/tests/draft3/maximum.json +42 -0
  85. data/JSON-Schema-Test-Suite/tests/draft3/minItems.json +28 -0
  86. data/JSON-Schema-Test-Suite/tests/draft3/minLength.json +33 -0
  87. data/JSON-Schema-Test-Suite/tests/draft3/minimum.json +73 -0
  88. data/JSON-Schema-Test-Suite/tests/draft3/optional/bignum.json +107 -0
  89. data/JSON-Schema-Test-Suite/tests/draft3/optional/format.json +227 -0
  90. data/JSON-Schema-Test-Suite/tests/draft3/optional/jsregex.json +18 -0
  91. data/JSON-Schema-Test-Suite/tests/draft3/optional/zeroTerminatedFloats.json +15 -0
  92. data/JSON-Schema-Test-Suite/tests/draft3/pattern.json +34 -0
  93. data/JSON-Schema-Test-Suite/tests/draft3/patternProperties.json +115 -0
  94. data/JSON-Schema-Test-Suite/tests/draft3/properties.json +97 -0
  95. data/JSON-Schema-Test-Suite/tests/draft3/ref.json +192 -0
  96. data/JSON-Schema-Test-Suite/tests/draft3/refRemote.json +74 -0
  97. data/JSON-Schema-Test-Suite/tests/draft3/required.json +53 -0
  98. data/JSON-Schema-Test-Suite/tests/draft3/type.json +489 -0
  99. data/JSON-Schema-Test-Suite/tests/draft3/uniqueItems.json +79 -0
  100. data/JSON-Schema-Test-Suite/tests/draft4/additionalItems.json +87 -0
  101. data/JSON-Schema-Test-Suite/tests/draft4/additionalProperties.json +133 -0
  102. data/JSON-Schema-Test-Suite/tests/draft4/allOf.json +185 -0
  103. data/JSON-Schema-Test-Suite/tests/draft4/anyOf.json +156 -0
  104. data/JSON-Schema-Test-Suite/tests/draft4/default.json +49 -0
  105. data/JSON-Schema-Test-Suite/tests/draft4/definitions.json +32 -0
  106. data/JSON-Schema-Test-Suite/tests/draft4/dependencies.json +194 -0
  107. data/JSON-Schema-Test-Suite/tests/draft4/enum.json +179 -0
  108. data/JSON-Schema-Test-Suite/tests/draft4/items.json +195 -0
  109. data/JSON-Schema-Test-Suite/tests/draft4/maxItems.json +28 -0
  110. data/JSON-Schema-Test-Suite/tests/draft4/maxLength.json +33 -0
  111. data/JSON-Schema-Test-Suite/tests/draft4/maxProperties.json +38 -0
  112. data/JSON-Schema-Test-Suite/tests/draft4/maximum.json +73 -0
  113. data/JSON-Schema-Test-Suite/tests/draft4/minItems.json +28 -0
  114. data/JSON-Schema-Test-Suite/tests/draft4/minLength.json +33 -0
  115. data/JSON-Schema-Test-Suite/tests/draft4/minProperties.json +38 -0
  116. data/JSON-Schema-Test-Suite/tests/draft4/minimum.json +104 -0
  117. data/JSON-Schema-Test-Suite/tests/draft4/multipleOf.json +60 -0
  118. data/JSON-Schema-Test-Suite/tests/draft4/not.json +96 -0
  119. data/JSON-Schema-Test-Suite/tests/draft4/oneOf.json +162 -0
  120. data/JSON-Schema-Test-Suite/tests/draft4/optional/bignum.json +107 -0
  121. data/JSON-Schema-Test-Suite/tests/draft4/optional/ecmascript-regex.json +13 -0
  122. data/JSON-Schema-Test-Suite/tests/draft4/optional/format.json +253 -0
  123. data/JSON-Schema-Test-Suite/tests/draft4/optional/zeroTerminatedFloats.json +15 -0
  124. data/JSON-Schema-Test-Suite/tests/draft4/pattern.json +34 -0
  125. data/JSON-Schema-Test-Suite/tests/draft4/patternProperties.json +120 -0
  126. data/JSON-Schema-Test-Suite/tests/draft4/properties.json +136 -0
  127. data/JSON-Schema-Test-Suite/tests/draft4/ref.json +411 -0
  128. data/JSON-Schema-Test-Suite/tests/draft4/refRemote.json +171 -0
  129. data/JSON-Schema-Test-Suite/tests/draft4/required.json +89 -0
  130. data/JSON-Schema-Test-Suite/tests/draft4/type.json +464 -0
  131. data/JSON-Schema-Test-Suite/tests/draft4/uniqueItems.json +89 -0
  132. data/JSON-Schema-Test-Suite/tests/draft6/additionalItems.json +87 -0
  133. data/JSON-Schema-Test-Suite/tests/draft6/additionalProperties.json +133 -0
  134. data/JSON-Schema-Test-Suite/tests/draft6/allOf.json +218 -0
  135. data/JSON-Schema-Test-Suite/tests/draft6/anyOf.json +189 -0
  136. data/JSON-Schema-Test-Suite/tests/draft6/boolean_schema.json +104 -0
  137. data/JSON-Schema-Test-Suite/tests/draft6/const.json +170 -0
  138. data/JSON-Schema-Test-Suite/tests/draft6/contains.json +100 -0
  139. data/JSON-Schema-Test-Suite/tests/draft6/default.json +49 -0
  140. data/JSON-Schema-Test-Suite/tests/draft6/definitions.json +32 -0
  141. data/JSON-Schema-Test-Suite/tests/draft6/dependencies.json +268 -0
  142. data/JSON-Schema-Test-Suite/tests/draft6/enum.json +179 -0
  143. data/JSON-Schema-Test-Suite/tests/draft6/exclusiveMaximum.json +30 -0
  144. data/JSON-Schema-Test-Suite/tests/draft6/exclusiveMinimum.json +30 -0
  145. data/JSON-Schema-Test-Suite/tests/draft6/items.json +250 -0
  146. data/JSON-Schema-Test-Suite/tests/draft6/maxItems.json +28 -0
  147. data/JSON-Schema-Test-Suite/tests/draft6/maxLength.json +33 -0
  148. data/JSON-Schema-Test-Suite/tests/draft6/maxProperties.json +38 -0
  149. data/JSON-Schema-Test-Suite/tests/draft6/maximum.json +28 -0
  150. data/JSON-Schema-Test-Suite/tests/draft6/minItems.json +28 -0
  151. data/JSON-Schema-Test-Suite/tests/draft6/minLength.json +33 -0
  152. data/JSON-Schema-Test-Suite/tests/draft6/minProperties.json +38 -0
  153. data/JSON-Schema-Test-Suite/tests/draft6/minimum.json +59 -0
  154. data/JSON-Schema-Test-Suite/tests/draft6/multipleOf.json +60 -0
  155. data/JSON-Schema-Test-Suite/tests/draft6/not.json +117 -0
  156. data/JSON-Schema-Test-Suite/tests/draft6/oneOf.json +206 -0
  157. data/JSON-Schema-Test-Suite/tests/draft6/optional/bignum.json +105 -0
  158. data/JSON-Schema-Test-Suite/tests/draft6/optional/ecmascript-regex.json +13 -0
  159. data/JSON-Schema-Test-Suite/tests/draft6/optional/format.json +491 -0
  160. data/JSON-Schema-Test-Suite/tests/draft6/optional/zeroTerminatedFloats.json +15 -0
  161. data/JSON-Schema-Test-Suite/tests/draft6/pattern.json +34 -0
  162. data/JSON-Schema-Test-Suite/tests/draft6/patternProperties.json +151 -0
  163. data/JSON-Schema-Test-Suite/tests/draft6/properties.json +167 -0
  164. data/JSON-Schema-Test-Suite/tests/draft6/propertyNames.json +78 -0
  165. data/JSON-Schema-Test-Suite/tests/draft6/ref.json +443 -0
  166. data/JSON-Schema-Test-Suite/tests/draft6/refRemote.json +171 -0
  167. data/JSON-Schema-Test-Suite/tests/draft6/required.json +105 -0
  168. data/JSON-Schema-Test-Suite/tests/draft6/type.json +464 -0
  169. data/JSON-Schema-Test-Suite/tests/draft6/uniqueItems.json +89 -0
  170. data/JSON-Schema-Test-Suite/tests/draft7/additionalItems.json +87 -0
  171. data/JSON-Schema-Test-Suite/tests/draft7/additionalProperties.json +133 -0
  172. data/JSON-Schema-Test-Suite/tests/draft7/allOf.json +218 -0
  173. data/JSON-Schema-Test-Suite/tests/draft7/anyOf.json +189 -0
  174. data/JSON-Schema-Test-Suite/tests/draft7/boolean_schema.json +104 -0
  175. data/JSON-Schema-Test-Suite/tests/draft7/const.json +170 -0
  176. data/JSON-Schema-Test-Suite/tests/draft7/contains.json +100 -0
  177. data/JSON-Schema-Test-Suite/tests/draft7/default.json +49 -0
  178. data/JSON-Schema-Test-Suite/tests/draft7/definitions.json +32 -0
  179. data/JSON-Schema-Test-Suite/tests/draft7/dependencies.json +268 -0
  180. data/JSON-Schema-Test-Suite/tests/draft7/enum.json +179 -0
  181. data/JSON-Schema-Test-Suite/tests/draft7/exclusiveMaximum.json +30 -0
  182. data/JSON-Schema-Test-Suite/tests/draft7/exclusiveMinimum.json +30 -0
  183. data/JSON-Schema-Test-Suite/tests/draft7/if-then-else.json +188 -0
  184. data/JSON-Schema-Test-Suite/tests/draft7/items.json +250 -0
  185. data/JSON-Schema-Test-Suite/tests/draft7/maxItems.json +28 -0
  186. data/JSON-Schema-Test-Suite/tests/draft7/maxLength.json +33 -0
  187. data/JSON-Schema-Test-Suite/tests/draft7/maxProperties.json +38 -0
  188. data/JSON-Schema-Test-Suite/tests/draft7/maximum.json +28 -0
  189. data/JSON-Schema-Test-Suite/tests/draft7/minItems.json +28 -0
  190. data/JSON-Schema-Test-Suite/tests/draft7/minLength.json +33 -0
  191. data/JSON-Schema-Test-Suite/tests/draft7/minProperties.json +38 -0
  192. data/JSON-Schema-Test-Suite/tests/draft7/minimum.json +59 -0
  193. data/JSON-Schema-Test-Suite/tests/draft7/multipleOf.json +60 -0
  194. data/JSON-Schema-Test-Suite/tests/draft7/not.json +117 -0
  195. data/JSON-Schema-Test-Suite/tests/draft7/oneOf.json +206 -0
  196. data/JSON-Schema-Test-Suite/tests/draft7/optional/bignum.json +105 -0
  197. data/JSON-Schema-Test-Suite/tests/draft7/optional/content.json +77 -0
  198. data/JSON-Schema-Test-Suite/tests/draft7/optional/ecmascript-regex.json +13 -0
  199. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/date-time.json +53 -0
  200. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/date.json +23 -0
  201. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/email.json +18 -0
  202. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/hostname.json +33 -0
  203. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/idn-email.json +18 -0
  204. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/idn-hostname.json +28 -0
  205. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/ipv4.json +33 -0
  206. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/ipv6.json +28 -0
  207. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/iri-reference.json +43 -0
  208. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/iri.json +53 -0
  209. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/json-pointer.json +168 -0
  210. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/regex.json +18 -0
  211. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/relative-json-pointer.json +33 -0
  212. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/time.json +23 -0
  213. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/uri-reference.json +43 -0
  214. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/uri-template.json +28 -0
  215. data/JSON-Schema-Test-Suite/tests/draft7/optional/format/uri.json +103 -0
  216. data/JSON-Schema-Test-Suite/tests/draft7/optional/zeroTerminatedFloats.json +15 -0
  217. data/JSON-Schema-Test-Suite/tests/draft7/pattern.json +34 -0
  218. data/JSON-Schema-Test-Suite/tests/draft7/patternProperties.json +151 -0
  219. data/JSON-Schema-Test-Suite/tests/draft7/properties.json +167 -0
  220. data/JSON-Schema-Test-Suite/tests/draft7/propertyNames.json +78 -0
  221. data/JSON-Schema-Test-Suite/tests/draft7/ref.json +443 -0
  222. data/JSON-Schema-Test-Suite/tests/draft7/refRemote.json +171 -0
  223. data/JSON-Schema-Test-Suite/tests/draft7/required.json +105 -0
  224. data/JSON-Schema-Test-Suite/tests/draft7/type.json +464 -0
  225. data/JSON-Schema-Test-Suite/tests/draft7/uniqueItems.json +89 -0
  226. data/JSON-Schema-Test-Suite/tox.ini +8 -0
  227. data/README.md +1 -1
  228. data/lib/json_schemer/schema/base.rb +2 -2
  229. data/lib/json_schemer/version.rb +1 -1
  230. metadata +226 -4
  231. data/.gitmodules +0 -4
  232. data/.travis.yml +0 -10
@@ -0,0 +1,179 @@
1
+ [
2
+ {
3
+ "description": "simple enum validation",
4
+ "schema": {"enum": [1, 2, 3]},
5
+ "tests": [
6
+ {
7
+ "description": "one of the enum is valid",
8
+ "data": 1,
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "something else is invalid",
13
+ "data": 4,
14
+ "valid": false
15
+ }
16
+ ]
17
+ },
18
+ {
19
+ "description": "heterogeneous enum validation",
20
+ "schema": {"enum": [6, "foo", [], true, {"foo": 12}]},
21
+ "tests": [
22
+ {
23
+ "description": "one of the enum is valid",
24
+ "data": [],
25
+ "valid": true
26
+ },
27
+ {
28
+ "description": "something else is invalid",
29
+ "data": null,
30
+ "valid": false
31
+ },
32
+ {
33
+ "description": "objects are deep compared",
34
+ "data": {"foo": false},
35
+ "valid": false
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "description": "enums in properties",
41
+ "schema": {
42
+ "type":"object",
43
+ "properties": {
44
+ "foo": {"enum":["foo"]},
45
+ "bar": {"enum":["bar"]}
46
+ },
47
+ "required": ["bar"]
48
+ },
49
+ "tests": [
50
+ {
51
+ "description": "both properties are valid",
52
+ "data": {"foo":"foo", "bar":"bar"},
53
+ "valid": true
54
+ },
55
+ {
56
+ "description": "missing optional property is valid",
57
+ "data": {"bar":"bar"},
58
+ "valid": true
59
+ },
60
+ {
61
+ "description": "missing required property is invalid",
62
+ "data": {"foo":"foo"},
63
+ "valid": false
64
+ },
65
+ {
66
+ "description": "missing all properties is invalid",
67
+ "data": {},
68
+ "valid": false
69
+ }
70
+ ]
71
+ },
72
+ {
73
+ "description": "enum with escaped characters",
74
+ "schema": {
75
+ "enum": ["foo\nbar", "foo\rbar"]
76
+ },
77
+ "tests": [
78
+ {
79
+ "description": "member 1 is valid",
80
+ "data": "foo\nbar",
81
+ "valid": true
82
+ },
83
+ {
84
+ "description": "member 2 is valid",
85
+ "data": "foo\rbar",
86
+ "valid": true
87
+ },
88
+ {
89
+ "description": "another string is invalid",
90
+ "data": "abc",
91
+ "valid": false
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "description": "enum with false does not match 0",
97
+ "schema": {"enum": [false]},
98
+ "tests": [
99
+ {
100
+ "description": "false is valid",
101
+ "data": false,
102
+ "valid": true
103
+ },
104
+ {
105
+ "description": "integer zero is invalid",
106
+ "data": 0,
107
+ "valid": false
108
+ },
109
+ {
110
+ "description": "float zero is invalid",
111
+ "data": 0.0,
112
+ "valid": false
113
+ }
114
+ ]
115
+ },
116
+ {
117
+ "description": "enum with true does not match 1",
118
+ "schema": {"enum": [true]},
119
+ "tests": [
120
+ {
121
+ "description": "true is valid",
122
+ "data": true,
123
+ "valid": true
124
+ },
125
+ {
126
+ "description": "integer one is invalid",
127
+ "data": 1,
128
+ "valid": false
129
+ },
130
+ {
131
+ "description": "float one is invalid",
132
+ "data": 1.0,
133
+ "valid": false
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "description": "enum with 0 does not match false",
139
+ "schema": {"enum": [0]},
140
+ "tests": [
141
+ {
142
+ "description": "false is invalid",
143
+ "data": false,
144
+ "valid": false
145
+ },
146
+ {
147
+ "description": "integer zero is valid",
148
+ "data": 0,
149
+ "valid": true
150
+ },
151
+ {
152
+ "description": "float zero is valid",
153
+ "data": 0.0,
154
+ "valid": true
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "description": "enum with 1 does not match true",
160
+ "schema": {"enum": [1]},
161
+ "tests": [
162
+ {
163
+ "description": "true is invalid",
164
+ "data": true,
165
+ "valid": false
166
+ },
167
+ {
168
+ "description": "integer one is valid",
169
+ "data": 1,
170
+ "valid": true
171
+ },
172
+ {
173
+ "description": "float one is valid",
174
+ "data": 1.0,
175
+ "valid": true
176
+ }
177
+ ]
178
+ }
179
+ ]
@@ -0,0 +1,30 @@
1
+ [
2
+ {
3
+ "description": "exclusiveMaximum validation",
4
+ "schema": {
5
+ "exclusiveMaximum": 3.0
6
+ },
7
+ "tests": [
8
+ {
9
+ "description": "below the exclusiveMaximum is valid",
10
+ "data": 2.2,
11
+ "valid": true
12
+ },
13
+ {
14
+ "description": "boundary point is invalid",
15
+ "data": 3.0,
16
+ "valid": false
17
+ },
18
+ {
19
+ "description": "above the exclusiveMaximum is invalid",
20
+ "data": 3.5,
21
+ "valid": false
22
+ },
23
+ {
24
+ "description": "ignores non-numbers",
25
+ "data": "x",
26
+ "valid": true
27
+ }
28
+ ]
29
+ }
30
+ ]
@@ -0,0 +1,30 @@
1
+ [
2
+ {
3
+ "description": "exclusiveMinimum validation",
4
+ "schema": {
5
+ "exclusiveMinimum": 1.1
6
+ },
7
+ "tests": [
8
+ {
9
+ "description": "above the exclusiveMinimum is valid",
10
+ "data": 1.2,
11
+ "valid": true
12
+ },
13
+ {
14
+ "description": "boundary point is invalid",
15
+ "data": 1.1,
16
+ "valid": false
17
+ },
18
+ {
19
+ "description": "below the exclusiveMinimum is invalid",
20
+ "data": 0.6,
21
+ "valid": false
22
+ },
23
+ {
24
+ "description": "ignores non-numbers",
25
+ "data": "x",
26
+ "valid": true
27
+ }
28
+ ]
29
+ }
30
+ ]
@@ -0,0 +1,188 @@
1
+ [
2
+ {
3
+ "description": "ignore if without then or else",
4
+ "schema": {
5
+ "if": {
6
+ "const": 0
7
+ }
8
+ },
9
+ "tests": [
10
+ {
11
+ "description": "valid when valid against lone if",
12
+ "data": 0,
13
+ "valid": true
14
+ },
15
+ {
16
+ "description": "valid when invalid against lone if",
17
+ "data": "hello",
18
+ "valid": true
19
+ }
20
+ ]
21
+ },
22
+ {
23
+ "description": "ignore then without if",
24
+ "schema": {
25
+ "then": {
26
+ "const": 0
27
+ }
28
+ },
29
+ "tests": [
30
+ {
31
+ "description": "valid when valid against lone then",
32
+ "data": 0,
33
+ "valid": true
34
+ },
35
+ {
36
+ "description": "valid when invalid against lone then",
37
+ "data": "hello",
38
+ "valid": true
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ "description": "ignore else without if",
44
+ "schema": {
45
+ "else": {
46
+ "const": 0
47
+ }
48
+ },
49
+ "tests": [
50
+ {
51
+ "description": "valid when valid against lone else",
52
+ "data": 0,
53
+ "valid": true
54
+ },
55
+ {
56
+ "description": "valid when invalid against lone else",
57
+ "data": "hello",
58
+ "valid": true
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ "description": "if and then without else",
64
+ "schema": {
65
+ "if": {
66
+ "exclusiveMaximum": 0
67
+ },
68
+ "then": {
69
+ "minimum": -10
70
+ }
71
+ },
72
+ "tests": [
73
+ {
74
+ "description": "valid through then",
75
+ "data": -1,
76
+ "valid": true
77
+ },
78
+ {
79
+ "description": "invalid through then",
80
+ "data": -100,
81
+ "valid": false
82
+ },
83
+ {
84
+ "description": "valid when if test fails",
85
+ "data": 3,
86
+ "valid": true
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ "description": "if and else without then",
92
+ "schema": {
93
+ "if": {
94
+ "exclusiveMaximum": 0
95
+ },
96
+ "else": {
97
+ "multipleOf": 2
98
+ }
99
+ },
100
+ "tests": [
101
+ {
102
+ "description": "valid when if test passes",
103
+ "data": -1,
104
+ "valid": true
105
+ },
106
+ {
107
+ "description": "valid through else",
108
+ "data": 4,
109
+ "valid": true
110
+ },
111
+ {
112
+ "description": "invalid through else",
113
+ "data": 3,
114
+ "valid": false
115
+ }
116
+ ]
117
+ },
118
+ {
119
+ "description": "validate against correct branch, then vs else",
120
+ "schema": {
121
+ "if": {
122
+ "exclusiveMaximum": 0
123
+ },
124
+ "then": {
125
+ "minimum": -10
126
+ },
127
+ "else": {
128
+ "multipleOf": 2
129
+ }
130
+ },
131
+ "tests": [
132
+ {
133
+ "description": "valid through then",
134
+ "data": -1,
135
+ "valid": true
136
+ },
137
+ {
138
+ "description": "invalid through then",
139
+ "data": -100,
140
+ "valid": false
141
+ },
142
+ {
143
+ "description": "valid through else",
144
+ "data": 4,
145
+ "valid": true
146
+ },
147
+ {
148
+ "description": "invalid through else",
149
+ "data": 3,
150
+ "valid": false
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ "description": "non-interference across combined schemas",
156
+ "schema": {
157
+ "allOf": [
158
+ {
159
+ "if": {
160
+ "exclusiveMaximum": 0
161
+ }
162
+ },
163
+ {
164
+ "then": {
165
+ "minimum": -10
166
+ }
167
+ },
168
+ {
169
+ "else": {
170
+ "multipleOf": 2
171
+ }
172
+ }
173
+ ]
174
+ },
175
+ "tests": [
176
+ {
177
+ "description": "valid, but would have been invalid through then",
178
+ "data": -100,
179
+ "valid": true
180
+ },
181
+ {
182
+ "description": "valid, but would have been invalid through else",
183
+ "data": 3,
184
+ "valid": true
185
+ }
186
+ ]
187
+ }
188
+ ]
@@ -0,0 +1,250 @@
1
+ [
2
+ {
3
+ "description": "a schema given for items",
4
+ "schema": {
5
+ "items": {"type": "integer"}
6
+ },
7
+ "tests": [
8
+ {
9
+ "description": "valid items",
10
+ "data": [ 1, 2, 3 ],
11
+ "valid": true
12
+ },
13
+ {
14
+ "description": "wrong type of items",
15
+ "data": [1, "x"],
16
+ "valid": false
17
+ },
18
+ {
19
+ "description": "ignores non-arrays",
20
+ "data": {"foo" : "bar"},
21
+ "valid": true
22
+ },
23
+ {
24
+ "description": "JavaScript pseudo-array is valid",
25
+ "data": {
26
+ "0": "invalid",
27
+ "length": 1
28
+ },
29
+ "valid": true
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "description": "an array of schemas for items",
35
+ "schema": {
36
+ "items": [
37
+ {"type": "integer"},
38
+ {"type": "string"}
39
+ ]
40
+ },
41
+ "tests": [
42
+ {
43
+ "description": "correct types",
44
+ "data": [ 1, "foo" ],
45
+ "valid": true
46
+ },
47
+ {
48
+ "description": "wrong types",
49
+ "data": [ "foo", 1 ],
50
+ "valid": false
51
+ },
52
+ {
53
+ "description": "incomplete array of items",
54
+ "data": [ 1 ],
55
+ "valid": true
56
+ },
57
+ {
58
+ "description": "array with additional items",
59
+ "data": [ 1, "foo", true ],
60
+ "valid": true
61
+ },
62
+ {
63
+ "description": "empty array",
64
+ "data": [ ],
65
+ "valid": true
66
+ },
67
+ {
68
+ "description": "JavaScript pseudo-array is valid",
69
+ "data": {
70
+ "0": "invalid",
71
+ "1": "valid",
72
+ "length": 2
73
+ },
74
+ "valid": true
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "description": "items with boolean schema (true)",
80
+ "schema": {"items": true},
81
+ "tests": [
82
+ {
83
+ "description": "any array is valid",
84
+ "data": [ 1, "foo", true ],
85
+ "valid": true
86
+ },
87
+ {
88
+ "description": "empty array is valid",
89
+ "data": [],
90
+ "valid": true
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "description": "items with boolean schema (false)",
96
+ "schema": {"items": false},
97
+ "tests": [
98
+ {
99
+ "description": "any non-empty array is invalid",
100
+ "data": [ 1, "foo", true ],
101
+ "valid": false
102
+ },
103
+ {
104
+ "description": "empty array is valid",
105
+ "data": [],
106
+ "valid": true
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "description": "items with boolean schemas",
112
+ "schema": {
113
+ "items": [true, false]
114
+ },
115
+ "tests": [
116
+ {
117
+ "description": "array with one item is valid",
118
+ "data": [ 1 ],
119
+ "valid": true
120
+ },
121
+ {
122
+ "description": "array with two items is invalid",
123
+ "data": [ 1, "foo" ],
124
+ "valid": false
125
+ },
126
+ {
127
+ "description": "empty array is valid",
128
+ "data": [],
129
+ "valid": true
130
+ }
131
+ ]
132
+ },
133
+ {
134
+ "description": "items and subitems",
135
+ "schema": {
136
+ "definitions": {
137
+ "item": {
138
+ "type": "array",
139
+ "additionalItems": false,
140
+ "items": [
141
+ { "$ref": "#/definitions/sub-item" },
142
+ { "$ref": "#/definitions/sub-item" }
143
+ ]
144
+ },
145
+ "sub-item": {
146
+ "type": "object",
147
+ "required": ["foo"]
148
+ }
149
+ },
150
+ "type": "array",
151
+ "additionalItems": false,
152
+ "items": [
153
+ { "$ref": "#/definitions/item" },
154
+ { "$ref": "#/definitions/item" },
155
+ { "$ref": "#/definitions/item" }
156
+ ]
157
+ },
158
+ "tests": [
159
+ {
160
+ "description": "valid items",
161
+ "data": [
162
+ [ {"foo": null}, {"foo": null} ],
163
+ [ {"foo": null}, {"foo": null} ],
164
+ [ {"foo": null}, {"foo": null} ]
165
+ ],
166
+ "valid": true
167
+ },
168
+ {
169
+ "description": "too many items",
170
+ "data": [
171
+ [ {"foo": null}, {"foo": null} ],
172
+ [ {"foo": null}, {"foo": null} ],
173
+ [ {"foo": null}, {"foo": null} ],
174
+ [ {"foo": null}, {"foo": null} ]
175
+ ],
176
+ "valid": false
177
+ },
178
+ {
179
+ "description": "too many sub-items",
180
+ "data": [
181
+ [ {"foo": null}, {"foo": null}, {"foo": null} ],
182
+ [ {"foo": null}, {"foo": null} ],
183
+ [ {"foo": null}, {"foo": null} ]
184
+ ],
185
+ "valid": false
186
+ },
187
+ {
188
+ "description": "wrong item",
189
+ "data": [
190
+ {"foo": null},
191
+ [ {"foo": null}, {"foo": null} ],
192
+ [ {"foo": null}, {"foo": null} ]
193
+ ],
194
+ "valid": false
195
+ },
196
+ {
197
+ "description": "wrong sub-item",
198
+ "data": [
199
+ [ {}, {"foo": null} ],
200
+ [ {"foo": null}, {"foo": null} ],
201
+ [ {"foo": null}, {"foo": null} ]
202
+ ],
203
+ "valid": false
204
+ },
205
+ {
206
+ "description": "fewer items is valid",
207
+ "data": [
208
+ [ {"foo": null} ],
209
+ [ {"foo": null} ]
210
+ ],
211
+ "valid": true
212
+ }
213
+ ]
214
+ },
215
+ {
216
+ "description": "nested items",
217
+ "schema": {
218
+ "type": "array",
219
+ "items": {
220
+ "type": "array",
221
+ "items": {
222
+ "type": "array",
223
+ "items": {
224
+ "type": "array",
225
+ "items": {
226
+ "type": "number"
227
+ }
228
+ }
229
+ }
230
+ }
231
+ },
232
+ "tests": [
233
+ {
234
+ "description": "valid nested array",
235
+ "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]],
236
+ "valid": true
237
+ },
238
+ {
239
+ "description": "nested array with invalid type",
240
+ "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]],
241
+ "valid": false
242
+ },
243
+ {
244
+ "description": "not deep enough",
245
+ "data": [[[1], [2],[3]], [[4], [5], [6]]],
246
+ "valid": false
247
+ }
248
+ ]
249
+ }
250
+ ]