OK, let's see if this worked. Updated test suite.
Squashed commit of the following: commit b255d27aeca09583415fca8616e68eeaa2fd3eeb Author: Julian Berman <Julian@GrayVines.com> Date: Mon Dec 24 19:41:09 2012 -0500 Add tests for ignoring irrelevant types. commit 71a0d30e0cafce6876f23ab6cf25365d1244e0cd Merge: 2262a91 082e844 Author: Julian Berman <Julian@GrayVines.com> Date: Sun Dec 23 21:14:38 2012 -0500 Tag version 1.0.0. Closes #13 commit 082e8440ccbf29181b8ba6f440d89f4723b841df Author: Julian Berman <Julian@GrayVines.com> Date: Sun Dec 23 00:28:48 2012 -0500 Cleanup * Make errors in the tests be failures * Removed use of ErrorTree * Added another helper fn * Use fnmatch instead of glob commit e39d53703cbf4047b4fcd864dc55ad412c4c9d1d Author: Julian Berman <Julian@GrayVines.com> Date: Fri Dec 21 14:52:16 2012 -0500 Added tests differentiating between lexical and mathematical integers. Integer literals should be considered integers, while mathematical integers can be specified with divisibleBy. See: https://github.com/json-schema/json-schema/issues/27 Closes #2 commit 44540b712d330625379ab3a85fa33aca044b29cd Author: Julian Berman <Julian@GrayVines.com> Date: Fri Dec 21 14:47:26 2012 -0500 Added name to license. commit 646a9810aa69ca3a1fd14dc4282d4191cc222436 Author: Julian Berman <Julian@GrayVines.com> Date: Fri Dec 21 14:31:47 2012 -0500 Add a test for BigNum integers. Closes #12 commit d22c24ea996491f839f5f5c8447ad30f2087eebb Merge: e8bcd5a c0dbbb5 Author: Julian Berman <Julian@GrayVines.com> Date: Wed Dec 19 10:57:03 2012 -0800 Merge pull request #17 from gazpachoking/validate_suite_content Add sanity checks for actual format of test suites commit c0dbbb5320d33763b186ff40aa0292c6170588ef Author: Chase Sterling <chase.sterling@gmail.com> Date: Wed Dec 19 10:53:57 2012 -0500 Add back executable bit to suite_sanity_check commit 86f348605b35b9777691a0498f720c9dba2fb500 Author: Chase Sterling <chase.sterling@gmail.com> Date: Wed Dec 19 00:49:20 2012 -0500 Add sanity check to validate all suites against suite schema. Make sure optional test suites don't skip the sanity checks. commit e8bcd5a1f064eadd4acf4be16bf92412f9fd0e54 Author: Nick Lombard <github@jigsoft.co.za> Date: Wed Dec 19 06:38:00 2012 +0200 Update README.md Travis status for develop branch commit ca8f1071db80ce5f256927d3cad8af8404c768b9 Author: Nick Lombard <github@jigsoft.co.za> Date: Wed Dec 19 06:36:03 2012 +0200 Update README.md Added travis status image commit cf4597e140d1f713f9f7f34c2cb03da869a3224e Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Dec 18 23:27:13 2012 -0500 Minor formatting (and get travis to build) commit 5cb630c9ee5c8eecb06332d65f784538e451bc31 Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Dec 18 23:12:42 2012 -0500 Show number of tests found commit 7baea07ecbb64edf7bd4dab6f11139672298d3fd Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Dec 18 23:11:33 2012 -0500 Travis commit 2f320bb1c0e7514e7e03fe6049413c974fc844ec Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Dec 18 23:07:23 2012 -0500 Add sanity checker. commit 2262a9141c1f147c237adbeea540f66018349c5f Merge: 9cda89e a1ec588 Author: Julian Berman <Julian@GrayVines.com> Date: Tue Dec 18 13:22:23 2012 -0800 Merge pull request #15 from tdegrunt/patch-1 Update README.md commit a1ec58862c20ea4c98d5c6a26024e83145453b03 Author: Tom de Grunt <tom@degrunt.nl> Date: Tue Dec 18 22:10:48 2012 +0100 Update README.md Added node.js module jsonschema. commit 9cda89ee01a4cc9e86a215b3b9ff0468b59714a0 Author: Julian Berman <Julian@GrayVines.com> Date: Tue Dec 18 14:35:19 2012 -0500 Update README.md commit b22d795b9863d02e9fd4891ffde153ad41c4f1cb Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Nov 17 19:26:21 2012 -0500 Ignore TODO commit 330fd4864fa55b3b6bed8287cf3bdcbc2c639798 Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Nov 17 19:25:27 2012 -0500 Merge into properties tests. commit c7c2338380efebf6b89c9b81552962736fcf0b84 Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Nov 17 19:20:25 2012 -0500 Remove duplicate tests. commit 281c28be60f87fe231815b8faebc1e6169233be5 Merge: 6f55ff5 6c28d7c Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Nov 17 19:14:19 2012 -0500 Merge git://github.com/IreneKnapp/JSON-Schema-Test-Suite commit 6c28d7cb5fce73dd2cea792c151bb002501aa6ed Author: Irene Knapp <irene.knapp@icloud.com> Date: Fri Nov 16 08:33:30 2012 -0500 Fix a test that should actually be invalid. Remove some unnecessary tests. commit b7858cc3584ce8a8886a7edde3866f9776505b6f Author: Irene Knapp <irene.knapp@icloud.com> Date: Thu Nov 15 22:48:09 2012 -0500 Port over the rest of the stuff from jsonschema (the Python project). commit fa666236d2d4386ff3f17589d3f5f9416f3280df Author: Irene Knapp <irene.knapp@icloud.com> Date: Thu Nov 15 16:37:56 2012 -0500 Port roughly the first third of jsonschema (the Python project)'s tests.py. commit 6f55ff5138a561999df5b8ee27324856466eca6e Author: Julian Berman <Julian+git@GrayVines.com> Date: Thu Nov 15 14:46:48 2012 -0500 Add the haskell thing that was using us. commit 756c8257ca5a9e4de08a27f716844d24ee99432f Merge: d735a8a 459dd98 Author: Julian Berman <Julian@GrayVines.com> Date: Thu Nov 15 11:44:08 2012 -0800 Merge pull request #6 from IreneKnapp/master Add direct-schema to list of clients commit 459dd98563fbeb840ce8202a1ce72a24199a87c7 Author: Irene Knapp <irene.knapp@icloud.com> Date: Thu Nov 15 14:40:41 2012 -0500 Adding direct-schema to list of clients. commit d735a8a9de59e1ed7e0bf660b7aba0925c0f1cfa Author: Julian Berman <Julian+git@GrayVines.com> Date: Thu Nov 15 09:37:03 2012 -0500 Add call to action. commit ca78ea844e6ca0d4d43885630d122687982d4746 Author: Julian Berman <Julian+git@GrayVines.com> Date: Thu Nov 1 08:58:50 2012 -0400 Add heterogeneous types unique test. commit 4ab01de94340e6baed2344f0b949043ca35ddfaa Author: Julian Berman <Julian+git@GrayVines.com> Date: Wed Oct 31 20:12:53 2012 -0400 Add specific test for bool and int. commit 6a52026b0d5f1b687d5a995a1591b99d30240280 Author: Julian Berman <Julian+git@GrayVines.com> Date: Wed Oct 31 20:12:38 2012 -0400 Simplify test to remove also testing integers and booleans. commit 3871deac9d5cbc50635533736b68da2feaac0a1d Merge: fefa4dc 6f18358 Author: Julian Berman <Julian+git@GrayVines.com> Date: Wed Oct 10 17:39:19 2012 -0400 Merge branch 'render' commit 6f18358cc498bb0ed5dfcef08bca52408bf717e9 Author: Julian Berman <Julian+git@GrayVines.com> Date: Wed Oct 10 17:37:54 2012 -0400 Fix README example. commit fefa4dc1c72f75c605aeb8138c39468e8240e724 Merge: 189e231 295d43a Author: Julian Berman <Julian@GrayVines.com> Date: Wed Oct 10 12:47:28 2012 -0700 Merge pull request #5 from timjb/master Added tests for divisibleBy, format: "regex" commit 295d43a61daf4098864137c71b652c3d18ee33f3 Author: Tim Baumann <tim@timbaumann.info> Date: Wed Oct 10 21:27:32 2012 +0200 Move format.json to folder for optional tests commit 8f5d9e281b18296baa6440a8caa8955cf5eaec5e Author: Tim Baumann <tim@timbaumann.info> Date: Wed Oct 10 21:06:08 2012 +0200 regex validation commit f11ddc3615460fa4fc9a0e2de8efde856d138f2f Author: Tim Baumann <tim@timbaumann.info> Date: Wed Oct 10 20:59:55 2012 +0200 divisibleBy tests commit 189e231e65d2f25f722fa362cb770ef1c264f7a2 Author: Julian Berman <Julian+git@GrayVines.com> Date: Wed Oct 10 10:00:42 2012 -0400 Fix the additionalItems tests. Closes #4 commit a0a6e71207e4cf2c2821370320cc8e158cd70f4c Author: Julian Berman <Julian+git@GrayVines.com> Date: Wed Oct 10 09:54:52 2012 -0400 Fix nil. Closes #3 commit 8dbaf210b8430c8cd1058b22cc2bfc639bcbbf8b Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Oct 9 20:28:09 2012 -0400 Fix line endings and add invalid test case. commit 7829853a2fffa508557c1e21613709417e603f09 Author: Julian Berman <Julian+git@GrayVines.com> Date: Sun Oct 7 10:33:14 2012 -0400 required commit 91e57ae1dc09d75c3885bb8124213f5e67bf2275 Author: Julian Berman <Julian+git@GrayVines.com> Date: Sun Oct 7 10:24:35 2012 -0400 Pattern commit 49af2ebc9a02584fe84ee8b414930b70af24637e Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Oct 6 20:50:59 2012 -0400 uniqueItems commit 089ed8e819d598125bbac985aa292f78be1e1547 Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Oct 6 20:50:23 2012 -0400 Enum commit 7e4b937146d92a8612e9b95074daf7582f6ace65 Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Oct 6 20:40:53 2012 -0400 max/min Items/Length commit 5c27f85a33bc75a8cfddf3b66d2bae91eac9b21e Author: Julian Berman <Julian+git@GrayVines.com> Date: Sat Oct 6 20:34:21 2012 -0400 Minimum and maximum commit 9e24adbd197dddd31d74743bbc203534eda07e9e Merge: 3649b58 3498f34 Author: Julian Berman <Julian@GrayVines.com> Date: Wed Sep 26 17:16:27 2012 -0700 Merge pull request #1 from gazpachoking/clean Add some more tests commit 3498f34e94db6e20f8202c0638005d2f62931ab7 Author: Chase Sterling <chase.sterling@gmail.com> Date: Wed Sep 26 20:02:58 2012 -0400 Fix an improper additionalItems test. commit 26a3873400e6c644cbe22842565624b40c410f1e Merge: baf0502 3649b58 Author: Chase Sterling <chase.sterling@gmail.com> Date: Tue Sep 25 16:48:39 2012 -0400 Merge branch 'master' into clean commit baf050206e12334dfe158390a9d8f8d5525b3d6d Author: Chase Sterling <chase.sterling@gmail.com> Date: Tue Sep 25 16:48:30 2012 -0400 Added items tests. commit cb6dfb2f040c1cc581128a0fbd2a40cfa44fb994 Author: Chase Sterling <chase.sterling@gmail.com> Date: Tue Sep 25 16:11:21 2012 -0400 Add cleaned up additionalItems commit 3649b58a5ce8fefc77ee1cfaaaeaf68df278ebd6 Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Sep 25 15:28:13 2012 -0400 Would be nice if I'd have properly run lint. commit e6a270f18c77a1218abc3a7137a093a757b071db Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Sep 25 15:00:57 2012 -0400 Properties. commit 2192a637eff388a4ee666b07635922281e78539f Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Sep 25 12:40:31 2012 -0400 Clarify test reqs. commit ff746d00529dd7df0e56329223a8f16933aff9d1 Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Sep 25 12:34:22 2012 -0400 Add MIT License. commit 9271ce51a4e053fe40985b17c1f88715bd859eb6 Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Sep 25 12:29:00 2012 -0400 A basic readme. commit 530a0f33201ce4d718d5859f4856a65bbbcdcc73 Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Sep 25 12:12:43 2012 -0400 Finish type tests. commit 4f9cd46dd9f73a1903452b1a9f4ea99c1938fb50 Author: Julian Berman <Julian+git@GrayVines.com> Date: Tue Sep 25 11:49:34 2012 -0400 Initial commit. Basic type tests.
This commit is contained in:
4
json/.travis.yml
Normal file
4
json/.travis.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
language: python
|
||||
python: "2.7"
|
||||
install: pip install jsonschema
|
||||
script: bin/suite_sanity_check -v
|
||||
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2012
|
||||
Copyright (c) 2012 Julian Berman
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
JSON Schema Test Suite
|
||||
JSON Schema Test Suite [](https://travis-ci.org/json-schema/JSON-Schema-Test-Suite)
|
||||
======================
|
||||
|
||||
This repository contains a set of JSON objects that implementors of JSON Schema
|
||||
@@ -6,8 +6,8 @@ validation libraries can use to test their validators.
|
||||
|
||||
It is meant to be language agnostic and should require only a JSON parser.
|
||||
|
||||
The conversion of the JSON objects into your test framework of choice (say,
|
||||
an `xUnit`) is still the job of the validator implementor.
|
||||
The conversion of the JSON objects into tests within your test framework of
|
||||
choice is still the job of the validator implementor.
|
||||
|
||||
Structure of a Test
|
||||
-------------------
|
||||
@@ -19,7 +19,9 @@ Inside that directory is a subdirectory for each draft or version of the
|
||||
schema. We'll use `draft3` as an example.
|
||||
|
||||
If you look inside the draft directory, there are a number of `.json` files,
|
||||
which logically group a set of test cases together.
|
||||
which logically group a set of test cases together. Often the grouping is by
|
||||
property under test, but not always, especially within optional test files
|
||||
(discussed below).
|
||||
|
||||
Inside each `.json` file is a single array containing objects. It's easiest to
|
||||
illustrate the structure of these with an example:
|
||||
@@ -27,7 +29,7 @@ illustrate the structure of these with an example:
|
||||
```json
|
||||
{
|
||||
"description": "the description of the test case",
|
||||
"schema": "the schema that should be validated against",
|
||||
"schema": {"the schema that should" : "be validated against"},
|
||||
"tests": [
|
||||
{
|
||||
"description": "a specific test of a valid instance",
|
||||
@@ -50,11 +52,9 @@ they should be valid or invalid.
|
||||
Coverage
|
||||
--------
|
||||
|
||||
The coverage of this suite is actively growing. The first order of business is
|
||||
to have a full-coverage draft 3 test suite.
|
||||
Currently, draft 3 should have essentially full coverage for the core schema.
|
||||
|
||||
Ultimately, when it's done, the idea is to attempt to have it included on [the
|
||||
JSON Schema website](http://www.json-schema.org).
|
||||
The beginnings of draft 4 are underway.
|
||||
|
||||
Who Uses the Test Suite
|
||||
-----------------------
|
||||
@@ -64,6 +64,7 @@ This suite is being used by:
|
||||
* [jsonschema (python)](https://github.com/Julian/jsonschema)
|
||||
* [aeson-schema (haskell)](https://github.com/timjb/aeson-schema)
|
||||
* [direct-schema (javascript)](https://github.com/IreneKnapp/direct-schema)
|
||||
* [jsonschema (javascript)](https://github.com/tdegrunt/jsonschema)
|
||||
|
||||
If you use it as well, please fork and send a pull request adding yourself to
|
||||
the list :).
|
||||
@@ -71,18 +72,4 @@ the list :).
|
||||
Contributing
|
||||
------------
|
||||
|
||||
I need help! If you'd like to contribute, please fork this repository. I'd love
|
||||
to have your pull requests sent over.
|
||||
|
||||
Right now, the way I'm compiling the tests is by porting over a test suite
|
||||
that I'd written for a Python validator. The tests (in a messy format) can be
|
||||
found [here](https://github.com/Julian/jsonschema/blob/master/tests.py#L100).
|
||||
|
||||
There are also other JSON Schema test suites for various other validators, and
|
||||
it would certainly be nice to merge all of them as well. In particular, [this
|
||||
validator](https://github.com/fge/json-schema-validator/tree/master/src/test/resources/keyword)
|
||||
contains a set of tests already written in JSON which will be useful.
|
||||
|
||||
I'm perfectly fine with contributions either porting from one of those, or
|
||||
being written from scratch, so feel free to do what you're comfortable with as
|
||||
long as the tests are easy to understand and correct :).
|
||||
If you see something missing or incorrect, a pull request is most welcome!
|
||||
|
||||
116
json/bin/suite_sanity_check
Executable file
116
json/bin/suite_sanity_check
Executable file
@@ -0,0 +1,116 @@
|
||||
#! /usr/bin/env python
|
||||
from unittest import TestCase, skipIf
|
||||
import fnmatch
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
|
||||
try:
|
||||
import jsonschema
|
||||
except ImportError:
|
||||
jsonschema = None
|
||||
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
SUITE_ROOT_DIR = os.path.join(os.path.dirname(__file__), os.pardir, "tests")
|
||||
TESTSUITE_SCHEMA = {
|
||||
"$schema": "http://json-schema.org/draft-03/schema#",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"description": {"type": "string", "required": True},
|
||||
"schema": {"required": True},
|
||||
"tests": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"description": {"type": "string", "required": True},
|
||||
"data": {"required": True},
|
||||
"valid": {"type": "boolean", "required": True}
|
||||
},
|
||||
"additionalProperties": False
|
||||
},
|
||||
"minItems": 1
|
||||
}
|
||||
},
|
||||
"additionalProperties": False,
|
||||
"minItems": 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def files(paths):
|
||||
for path in paths:
|
||||
with open(path) as test_file:
|
||||
yield json.load(test_file)
|
||||
|
||||
|
||||
def groups(paths):
|
||||
for test_file in files(paths):
|
||||
for group in test_file:
|
||||
yield group
|
||||
|
||||
|
||||
def cases(paths):
|
||||
for test_group in groups(paths):
|
||||
for test in test_group["tests"]:
|
||||
test["schema"] = test_group["schema"]
|
||||
yield test
|
||||
|
||||
|
||||
def collect(root_dir):
|
||||
for root, dirs, files in os.walk(root_dir):
|
||||
for filename in fnmatch.filter(files, "*.json"):
|
||||
yield os.path.join(root, filename)
|
||||
|
||||
|
||||
class SanityTests(TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
logging.info("Looking for tests in %s", SUITE_ROOT_DIR)
|
||||
cls.test_files = list(collect(SUITE_ROOT_DIR))
|
||||
logging.info("Found %s test files", len(cls.test_files))
|
||||
assert cls.test_files, "Didn't find the test files!"
|
||||
|
||||
def test_all_files_are_valid_json(self):
|
||||
for path in self.test_files:
|
||||
with open(path) as test_file:
|
||||
try:
|
||||
json.load(test_file)
|
||||
except ValueError as error:
|
||||
self.fail("%s contains invalid JSON (%s)" % (path, error))
|
||||
|
||||
def test_all_descriptions_are_unique(self):
|
||||
for group in groups(self.test_files):
|
||||
descriptions = {test["description"] for test in group["tests"]}
|
||||
self.assertEqual(
|
||||
len(descriptions),
|
||||
len(group["tests"]),
|
||||
"%r contains a duplicate description" % (group,)
|
||||
)
|
||||
|
||||
@skipIf(jsonschema is None, "Validation library not present! Skipping.")
|
||||
def test_all_schemas_are_valid(self):
|
||||
for case in cases(self.test_files):
|
||||
# XXX: Add the other versions for the other drafts
|
||||
try:
|
||||
jsonschema.Draft3Validator.check_schema(case["schema"])
|
||||
except jsonschema.SchemaError as error:
|
||||
self.fail("%s contains an invalid schema (%s)" % (case, error))
|
||||
|
||||
@skipIf(jsonschema is None, "Validation library not present! Skipping.")
|
||||
def test_suites_are_valid(self):
|
||||
validator = jsonschema.Draft3Validator(TESTSUITE_SCHEMA)
|
||||
for tests in files(self.test_files):
|
||||
try:
|
||||
validator.validate(tests)
|
||||
except jsonschema.ValidationError as error:
|
||||
self.fail(str(error))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from unittest import main
|
||||
main()
|
||||
@@ -60,6 +60,11 @@
|
||||
"items defaults to empty schema so everything is valid",
|
||||
"data": [ 1, 2, 3, 4, 5 ],
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "ignores non-arrays",
|
||||
"data": {"foo" : "bar"},
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -16,6 +16,11 @@
|
||||
"description": "an additional property is invalid",
|
||||
"data": {"foo" : 1, "bar" : 2, "quux" : "boom"},
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-objects",
|
||||
"data": [1, 2, 3],
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -24,6 +24,11 @@
|
||||
"description": "missing dependency",
|
||||
"data": {"bar": 2},
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-objects",
|
||||
"data": "foo",
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,4 +1,25 @@
|
||||
[
|
||||
{
|
||||
"description": "by int",
|
||||
"schema": {"divisibleBy": 2},
|
||||
"tests": [
|
||||
{
|
||||
"description": "int by int",
|
||||
"data": 10,
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "int by int fail",
|
||||
"data": 7,
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-numbers",
|
||||
"data": "foo",
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "by number",
|
||||
"schema": {"divisibleBy": 1.5},
|
||||
@@ -20,22 +41,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "by int",
|
||||
"schema": {"divisibleBy": 2},
|
||||
"tests": [
|
||||
{
|
||||
"description": "int by int",
|
||||
"data": 10,
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "int by int fail",
|
||||
"data": 7,
|
||||
"valid": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "by small number",
|
||||
"schema": {"divisibleBy": 0.0001},
|
||||
|
||||
@@ -1,41 +1,46 @@
|
||||
[
|
||||
{
|
||||
"description": "a schema given for items",
|
||||
"schema": {
|
||||
"items": {"type": "integer"}
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "valid items",
|
||||
"data": [ 1, 2, 3 ],
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "wrong type of items",
|
||||
"data": [1, "x"],
|
||||
"valid": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "an array of schemas for items",
|
||||
"schema": {
|
||||
"items": [
|
||||
{"type": "integer"},
|
||||
{"type": "string"}
|
||||
]
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "correct types",
|
||||
"data": [ 1, "foo" ],
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "wrong types",
|
||||
"data": [ "foo", 1 ],
|
||||
"valid": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
[
|
||||
{
|
||||
"description": "a schema given for items",
|
||||
"schema": {
|
||||
"items": {"type": "integer"}
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "valid items",
|
||||
"data": [ 1, 2, 3 ],
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "wrong type of items",
|
||||
"data": [1, "x"],
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-arrays",
|
||||
"data": {"foo" : "bar"},
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "an array of schemas for items",
|
||||
"schema": {
|
||||
"items": [
|
||||
{"type": "integer"},
|
||||
{"type": "string"}
|
||||
]
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "correct types",
|
||||
"data": [ 1, "foo" ],
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "wrong types",
|
||||
"data": [ "foo", 1 ],
|
||||
"valid": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
"description": "too long is invalid",
|
||||
"data": [1, 2, 3],
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-arrays",
|
||||
"data": "foobar",
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
"description": "too long is invalid",
|
||||
"data": "foo",
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-strings",
|
||||
"data": 10,
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -12,6 +12,11 @@
|
||||
"description": "above the maximum is invalid",
|
||||
"data": 3.5,
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-numbers",
|
||||
"data": "x",
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
"description": "too short is invalid",
|
||||
"data": [],
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-arrays",
|
||||
"data": "",
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
"description": "too short is invalid",
|
||||
"data": "f",
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-strings",
|
||||
"data": 1,
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -12,6 +12,11 @@
|
||||
"description": "below the minimum is invalid",
|
||||
"data": 0.6,
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-numbers",
|
||||
"data": "x",
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
13
json/tests/draft3/optional/bignum.json
Normal file
13
json/tests/draft3/optional/bignum.json
Normal file
@@ -0,0 +1,13 @@
|
||||
[
|
||||
{
|
||||
"description": "support for bignums",
|
||||
"schema": {"type": "integer"},
|
||||
"tests": [
|
||||
{
|
||||
"description": "a bignum is an integer",
|
||||
"data": 12345678910111213141516171819202122232425262728293031,
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -12,6 +12,11 @@
|
||||
"description": "a non-matching pattern is invalid",
|
||||
"data": "abc",
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "ignores non-strings",
|
||||
"data": true,
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -27,6 +27,11 @@
|
||||
"description": "doesn't invalidate other properties",
|
||||
"data": {"quux": []},
|
||||
"valid": true
|
||||
},
|
||||
{
|
||||
"description": "ignores non-objects",
|
||||
"data": [],
|
||||
"valid": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -13,6 +13,11 @@
|
||||
"data": 1.1,
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "a float is not an integer even without fractional part",
|
||||
"data": 1.0,
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "a string is not an integer",
|
||||
"data": "foo",
|
||||
|
||||
@@ -13,6 +13,11 @@
|
||||
"data": [1, 1],
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "numbers are unique if mathematically unequal",
|
||||
"data": [1.0, 1.00, 1],
|
||||
"valid": false
|
||||
},
|
||||
{
|
||||
"description": "unique array of objects is valid",
|
||||
"data": [{"foo": "bar"}, {"foo": "baz"}],
|
||||
|
||||
Reference in New Issue
Block a user