=== POSITIVE ===
{
  "type": "object"
}
=== POSITIVE ===
{
  "maxProperties": 3,
  "minProperties": 1,
  "type": "object"
}
// Max properties tests
=== POSITIVE ===
{
  "maxProperties": 3,
  "type": "object"
}
// Negative Max properties tests
=== NEGATIVE ===
{
  "maxProperties": false,
  "type": "object"
}
=== NEGATIVE ===
{
  "maxProperties": -1,
  "type": "object"
}
=== NEGATIVE ===
{
  "maxProperties": 1.2,
  "type": "object"
}
=== NEGATIVE ===
{
  "maxProperties": "foo",
  "type": "object"
}
=== NEGATIVE ===
{
  "maxProperties": null,
  "type": "object"
}
=== NEGATIVE ===
{
  "maxProperties": [],
  "type": "object"
}
=== NEGATIVE ===
{
  "maxProperties": {},
  "type": "object"
}
// Min properties tests
=== POSITIVE ===
{
  "minProperties": 1,
  "type": "object"
}
// Negative Min properties tests
=== NEGATIVE ===
{
  "minProperties": false,
  "type": "object"
}
=== NEGATIVE ===
{
  "minProperties": -1,
  "type": "object"
}
=== NEGATIVE ===
{
  "minProperties": 1.2,
  "type": "object"
}
=== NEGATIVE ===
{
  "minProperties": "foo",
  "type": "object"
}
=== NEGATIVE ===
{
  "minProperties": null,
  "type": "object"
}
=== NEGATIVE ===
{
  "minProperties": [],
  "type": "object"
}
=== NEGATIVE ===
{
  "minProperties": {},
  "type": "object"
}
// Required tests
=== POSITIVE ===
{
  "required": [],
  "type": "object"
}
=== POSITIVE ===
{
  "required": ["foo"],
  "type": "object"
}
// Negative required tests
=== NEGATIVE ===
{
  "required": null,
  "type": "object"
}
=== NEGATIVE ===
{
  "required": true,
  "type": "object"
}
=== NEGATIVE ===
{
  "required": "foo",
  "type": "object"
}
=== NEGATIVE ===
{
  "required": 1,
  "type": "object"
}
=== NEGATIVE ===
{
  "required": -1,
  "type": "object"
}
=== NEGATIVE ===
{
  "required": 1.2,
  "type": "object"
}
=== NEGATIVE ===
{
  "required": {},
  "type": "object"
}
=== NEGATIVE ===
{
  "required": [1],
  "type": "object"
}
=== NEGATIVE ===
{
  "required": ["foo", "foo"],
  "type": "object"
}
// dependency tesets
// First up is property dependencies.
=== POSITIVE ===
{
  "dependencies": {
    "foo": ["bar"]
  },
  "type": "object"
}
=== POSITIVE ===
{
  "dependencies": {
    "foo": ["bar", "baz"]
  },
  "type": "object"
}
// Now test schema dependencies.
=== POSITIVE ===
{
  "dependencies": {
    "foo": {}
  },
  "type": "object"
}
=== POSITIVE ===
{
  "dependencies": {
    "foo": {
      "maxProperties": 2,
      "type": "object"
    }
  },
  "type": "object"
}
// Negative dependencies tests
=== NEGATIVE ===
{
  "dependencies": 1,
  "type": "object"
}
=== NEGATIVE ===
{
  "dependencies": -1,
  "type": "object"
}
=== NEGATIVE ===
{
  "dependencies": 1.2,
  "type": "object"
}
=== NEGATIVE ===
{
  "dependencies": null
  "type": "object"
}
=== NEGATIVE ===
{
  "dependencies": false,
  "type": "object"
}
=== NEGATIVE ===
{
  "dependencies": [],
  "type": "object"
}
=== NEGATIVE ===
{
  "dependencies": {
    "foo": []
  },
  "type": "object"
}
=== NEGATIVE ===
{
  "dependencies": {
    "foo": ["bar", "bar"]
  },
  "type": "object"
}
// properties test
=== POSITIVE ===
{
  "properties": {
    "name": {}
  },
  "type": "object"
}
=== POSITIVE ===
{
  "properties": {
    "age": {
      "type": "integer"
    },
    "name": {
      "type": "string"
    }
  },
  "type": "object"
}
// Negative properties test
=== NEGATIVE ===
{
  "properties": null,
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": "foo",
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": 1,
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": -1,
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": 1.2,
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": [],
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": {
    "name": null
  },
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": {
    "name": "foo"
  },
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": {
    "name": 1
  },
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": {
    "name": -1
  },
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": {
    "name": 1.2
  },
  "type": "object"
}
=== NEGATIVE ===
{
  "properties": {
    "name": []
  },
  "type": "object"
}
// additionalProperties test
=== POSITIVE ===
{
  "additionalProperties": true,
  "type": "object"
}
=== POSITIVE ===
{
  "additionalProperties": false,
  "type": "object"
}
=== POSITIVE ===
{
  "additionalProperties": {},
  "type": "object"
}
=== POSITIVE ===
{
  "additionalProperties": {
    "type": "number"
  },
  "type": "object"
}
// Negative additionalProperties test
=== NEGATIVE ===
{
  "additionalProperties": null,
  "type": "object"
}
=== NEGATIVE ===
{
  "additionalProperties": "foo",
  "type": "object"
}
=== NEGATIVE ===
{
  "additionalProperties": 1,
  "type": "object"
}
=== NEGATIVE ===
{
  "additionalProperties": -1,
  "type": "object"
}
=== NEGATIVE ===
{
  "additionalProperties": 1.2,
  "type": "object"
}
=== NEGATIVE ===
{
  "additionalProperties": [],
  "type": "object"
}
