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,105 @@
1
+ [
2
+ {
3
+ "description": "required validation",
4
+ "schema": {
5
+ "properties": {
6
+ "foo": {},
7
+ "bar": {}
8
+ },
9
+ "required": ["foo"]
10
+ },
11
+ "tests": [
12
+ {
13
+ "description": "present required property is valid",
14
+ "data": {"foo": 1},
15
+ "valid": true
16
+ },
17
+ {
18
+ "description": "non-present required property is invalid",
19
+ "data": {"bar": 1},
20
+ "valid": false
21
+ },
22
+ {
23
+ "description": "ignores arrays",
24
+ "data": [],
25
+ "valid": true
26
+ },
27
+ {
28
+ "description": "ignores strings",
29
+ "data": "",
30
+ "valid": true
31
+ },
32
+ {
33
+ "description": "ignores other non-objects",
34
+ "data": 12,
35
+ "valid": true
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "description": "required default validation",
41
+ "schema": {
42
+ "properties": {
43
+ "foo": {}
44
+ }
45
+ },
46
+ "tests": [
47
+ {
48
+ "description": "not required by default",
49
+ "data": {},
50
+ "valid": true
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "description": "required with empty array",
56
+ "schema": {
57
+ "properties": {
58
+ "foo": {}
59
+ },
60
+ "required": []
61
+ },
62
+ "tests": [
63
+ {
64
+ "description": "property not required",
65
+ "data": {},
66
+ "valid": true
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "description": "required with escaped characters",
72
+ "schema": {
73
+ "required": [
74
+ "foo\nbar",
75
+ "foo\"bar",
76
+ "foo\\bar",
77
+ "foo\rbar",
78
+ "foo\tbar",
79
+ "foo\fbar"
80
+ ]
81
+ },
82
+ "tests": [
83
+ {
84
+ "description": "object with all properties present is valid",
85
+ "data": {
86
+ "foo\nbar": 1,
87
+ "foo\"bar": 1,
88
+ "foo\\bar": 1,
89
+ "foo\rbar": 1,
90
+ "foo\tbar": 1,
91
+ "foo\fbar": 1
92
+ },
93
+ "valid": true
94
+ },
95
+ {
96
+ "description": "object with some properties missing is invalid",
97
+ "data": {
98
+ "foo\nbar": "1",
99
+ "foo\"bar": "1"
100
+ },
101
+ "valid": false
102
+ }
103
+ ]
104
+ }
105
+ ]
@@ -0,0 +1,464 @@
1
+ [
2
+ {
3
+ "description": "integer type matches integers",
4
+ "schema": {"type": "integer"},
5
+ "tests": [
6
+ {
7
+ "description": "an integer is an integer",
8
+ "data": 1,
9
+ "valid": true
10
+ },
11
+ {
12
+ "description": "a float is not an integer",
13
+ "data": 1.1,
14
+ "valid": false
15
+ },
16
+ {
17
+ "description": "a string is not an integer",
18
+ "data": "foo",
19
+ "valid": false
20
+ },
21
+ {
22
+ "description": "a string is still not an integer, even if it looks like one",
23
+ "data": "1",
24
+ "valid": false
25
+ },
26
+ {
27
+ "description": "an object is not an integer",
28
+ "data": {},
29
+ "valid": false
30
+ },
31
+ {
32
+ "description": "an array is not an integer",
33
+ "data": [],
34
+ "valid": false
35
+ },
36
+ {
37
+ "description": "a boolean is not an integer",
38
+ "data": true,
39
+ "valid": false
40
+ },
41
+ {
42
+ "description": "null is not an integer",
43
+ "data": null,
44
+ "valid": false
45
+ }
46
+ ]
47
+ },
48
+ {
49
+ "description": "number type matches numbers",
50
+ "schema": {"type": "number"},
51
+ "tests": [
52
+ {
53
+ "description": "an integer is a number",
54
+ "data": 1,
55
+ "valid": true
56
+ },
57
+ {
58
+ "description": "a float is a number",
59
+ "data": 1.1,
60
+ "valid": true
61
+ },
62
+ {
63
+ "description": "a string is not a number",
64
+ "data": "foo",
65
+ "valid": false
66
+ },
67
+ {
68
+ "description": "a string is still not a number, even if it looks like one",
69
+ "data": "1",
70
+ "valid": false
71
+ },
72
+ {
73
+ "description": "an object is not a number",
74
+ "data": {},
75
+ "valid": false
76
+ },
77
+ {
78
+ "description": "an array is not a number",
79
+ "data": [],
80
+ "valid": false
81
+ },
82
+ {
83
+ "description": "a boolean is not a number",
84
+ "data": true,
85
+ "valid": false
86
+ },
87
+ {
88
+ "description": "null is not a number",
89
+ "data": null,
90
+ "valid": false
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "description": "string type matches strings",
96
+ "schema": {"type": "string"},
97
+ "tests": [
98
+ {
99
+ "description": "1 is not a string",
100
+ "data": 1,
101
+ "valid": false
102
+ },
103
+ {
104
+ "description": "a float is not a string",
105
+ "data": 1.1,
106
+ "valid": false
107
+ },
108
+ {
109
+ "description": "a string is a string",
110
+ "data": "foo",
111
+ "valid": true
112
+ },
113
+ {
114
+ "description": "a string is still a string, even if it looks like a number",
115
+ "data": "1",
116
+ "valid": true
117
+ },
118
+ {
119
+ "description": "an empty string is still a string",
120
+ "data": "",
121
+ "valid": true
122
+ },
123
+ {
124
+ "description": "an object is not a string",
125
+ "data": {},
126
+ "valid": false
127
+ },
128
+ {
129
+ "description": "an array is not a string",
130
+ "data": [],
131
+ "valid": false
132
+ },
133
+ {
134
+ "description": "a boolean is not a string",
135
+ "data": true,
136
+ "valid": false
137
+ },
138
+ {
139
+ "description": "null is not a string",
140
+ "data": null,
141
+ "valid": false
142
+ }
143
+ ]
144
+ },
145
+ {
146
+ "description": "object type matches objects",
147
+ "schema": {"type": "object"},
148
+ "tests": [
149
+ {
150
+ "description": "an integer is not an object",
151
+ "data": 1,
152
+ "valid": false
153
+ },
154
+ {
155
+ "description": "a float is not an object",
156
+ "data": 1.1,
157
+ "valid": false
158
+ },
159
+ {
160
+ "description": "a string is not an object",
161
+ "data": "foo",
162
+ "valid": false
163
+ },
164
+ {
165
+ "description": "an object is an object",
166
+ "data": {},
167
+ "valid": true
168
+ },
169
+ {
170
+ "description": "an array is not an object",
171
+ "data": [],
172
+ "valid": false
173
+ },
174
+ {
175
+ "description": "a boolean is not an object",
176
+ "data": true,
177
+ "valid": false
178
+ },
179
+ {
180
+ "description": "null is not an object",
181
+ "data": null,
182
+ "valid": false
183
+ }
184
+ ]
185
+ },
186
+ {
187
+ "description": "array type matches arrays",
188
+ "schema": {"type": "array"},
189
+ "tests": [
190
+ {
191
+ "description": "an integer is not an array",
192
+ "data": 1,
193
+ "valid": false
194
+ },
195
+ {
196
+ "description": "a float is not an array",
197
+ "data": 1.1,
198
+ "valid": false
199
+ },
200
+ {
201
+ "description": "a string is not an array",
202
+ "data": "foo",
203
+ "valid": false
204
+ },
205
+ {
206
+ "description": "an object is not an array",
207
+ "data": {},
208
+ "valid": false
209
+ },
210
+ {
211
+ "description": "an array is an array",
212
+ "data": [],
213
+ "valid": true
214
+ },
215
+ {
216
+ "description": "a boolean is not an array",
217
+ "data": true,
218
+ "valid": false
219
+ },
220
+ {
221
+ "description": "null is not an array",
222
+ "data": null,
223
+ "valid": false
224
+ }
225
+ ]
226
+ },
227
+ {
228
+ "description": "boolean type matches booleans",
229
+ "schema": {"type": "boolean"},
230
+ "tests": [
231
+ {
232
+ "description": "an integer is not a boolean",
233
+ "data": 1,
234
+ "valid": false
235
+ },
236
+ {
237
+ "description": "zero is not a boolean",
238
+ "data": 0,
239
+ "valid": false
240
+ },
241
+ {
242
+ "description": "a float is not a boolean",
243
+ "data": 1.1,
244
+ "valid": false
245
+ },
246
+ {
247
+ "description": "a string is not a boolean",
248
+ "data": "foo",
249
+ "valid": false
250
+ },
251
+ {
252
+ "description": "an empty string is not a boolean",
253
+ "data": "",
254
+ "valid": false
255
+ },
256
+ {
257
+ "description": "an object is not a boolean",
258
+ "data": {},
259
+ "valid": false
260
+ },
261
+ {
262
+ "description": "an array is not a boolean",
263
+ "data": [],
264
+ "valid": false
265
+ },
266
+ {
267
+ "description": "true is a boolean",
268
+ "data": true,
269
+ "valid": true
270
+ },
271
+ {
272
+ "description": "false is a boolean",
273
+ "data": false,
274
+ "valid": true
275
+ },
276
+ {
277
+ "description": "null is not a boolean",
278
+ "data": null,
279
+ "valid": false
280
+ }
281
+ ]
282
+ },
283
+ {
284
+ "description": "null type matches only the null object",
285
+ "schema": {"type": "null"},
286
+ "tests": [
287
+ {
288
+ "description": "an integer is not null",
289
+ "data": 1,
290
+ "valid": false
291
+ },
292
+ {
293
+ "description": "a float is not null",
294
+ "data": 1.1,
295
+ "valid": false
296
+ },
297
+ {
298
+ "description": "zero is not null",
299
+ "data": 0,
300
+ "valid": false
301
+ },
302
+ {
303
+ "description": "a string is not null",
304
+ "data": "foo",
305
+ "valid": false
306
+ },
307
+ {
308
+ "description": "an empty string is not null",
309
+ "data": "",
310
+ "valid": false
311
+ },
312
+ {
313
+ "description": "an object is not null",
314
+ "data": {},
315
+ "valid": false
316
+ },
317
+ {
318
+ "description": "an array is not null",
319
+ "data": [],
320
+ "valid": false
321
+ },
322
+ {
323
+ "description": "true is not null",
324
+ "data": true,
325
+ "valid": false
326
+ },
327
+ {
328
+ "description": "false is not null",
329
+ "data": false,
330
+ "valid": false
331
+ },
332
+ {
333
+ "description": "null is null",
334
+ "data": null,
335
+ "valid": true
336
+ }
337
+ ]
338
+ },
339
+ {
340
+ "description": "multiple types can be specified in an array",
341
+ "schema": {"type": ["integer", "string"]},
342
+ "tests": [
343
+ {
344
+ "description": "an integer is valid",
345
+ "data": 1,
346
+ "valid": true
347
+ },
348
+ {
349
+ "description": "a string is valid",
350
+ "data": "foo",
351
+ "valid": true
352
+ },
353
+ {
354
+ "description": "a float is invalid",
355
+ "data": 1.1,
356
+ "valid": false
357
+ },
358
+ {
359
+ "description": "an object is invalid",
360
+ "data": {},
361
+ "valid": false
362
+ },
363
+ {
364
+ "description": "an array is invalid",
365
+ "data": [],
366
+ "valid": false
367
+ },
368
+ {
369
+ "description": "a boolean is invalid",
370
+ "data": true,
371
+ "valid": false
372
+ },
373
+ {
374
+ "description": "null is invalid",
375
+ "data": null,
376
+ "valid": false
377
+ }
378
+ ]
379
+ },
380
+ {
381
+ "description": "type as array with one item",
382
+ "schema": {
383
+ "type": ["string"]
384
+ },
385
+ "tests": [
386
+ {
387
+ "description": "string is valid",
388
+ "data": "foo",
389
+ "valid": true
390
+ },
391
+ {
392
+ "description": "number is invalid",
393
+ "data": 123,
394
+ "valid": false
395
+ }
396
+ ]
397
+ },
398
+ {
399
+ "description": "type: array or object",
400
+ "schema": {
401
+ "type": ["array", "object"]
402
+ },
403
+ "tests": [
404
+ {
405
+ "description": "array is valid",
406
+ "data": [1,2,3],
407
+ "valid": true
408
+ },
409
+ {
410
+ "description": "object is valid",
411
+ "data": {"foo": 123},
412
+ "valid": true
413
+ },
414
+ {
415
+ "description": "number is invalid",
416
+ "data": 123,
417
+ "valid": false
418
+ },
419
+ {
420
+ "description": "string is invalid",
421
+ "data": "foo",
422
+ "valid": false
423
+ },
424
+ {
425
+ "description": "null is invalid",
426
+ "data": null,
427
+ "valid": false
428
+ }
429
+ ]
430
+ },
431
+ {
432
+ "description": "type: array, object or null",
433
+ "schema": {
434
+ "type": ["array", "object", "null"]
435
+ },
436
+ "tests": [
437
+ {
438
+ "description": "array is valid",
439
+ "data": [1,2,3],
440
+ "valid": true
441
+ },
442
+ {
443
+ "description": "object is valid",
444
+ "data": {"foo": 123},
445
+ "valid": true
446
+ },
447
+ {
448
+ "description": "null is valid",
449
+ "data": null,
450
+ "valid": true
451
+ },
452
+ {
453
+ "description": "number is invalid",
454
+ "data": 123,
455
+ "valid": false
456
+ },
457
+ {
458
+ "description": "string is invalid",
459
+ "data": "foo",
460
+ "valid": false
461
+ }
462
+ ]
463
+ }
464
+ ]