[
  {
    "description": "dependencies",
    "schema": {
      "dependencies": {
        "bar": [
          "foo"
        ]
      }
    },
    "tests": [
      {
        "description": "neither",
        "data": {},
        "valid": true
      },
      {
        "description": "nondependant",
        "data": {
          "foo": 1
        },
        "valid": true
      },
      {
        "description": "with dependency",
        "data": {
          "foo": 1,
          "bar": 2
        },
        "valid": true
      },
      {
        "description": "missing dependency",
        "data": {
          "bar": 2
        },
        "valid": false
      },
      {
        "description": "ignores arrays",
        "data": [
          "bar"
        ],
        "valid": true
      },
      {
        "description": "ignores strings",
        "data": "foobar",
        "valid": true
      },
      {
        "description": "ignores other non-objects",
        "data": 12,
        "valid": true
      }
    ]
  },
  {
    "description": "dependencies with empty array",
    "schema": {
      "dependencies": {
        "bar": []
      }
    },
    "tests": [
      {
        "description": "empty object",
        "data": {},
        "valid": true
      },
      {
        "description": "object with one property",
        "data": {
          "bar": 2
        },
        "valid": true
      }
    ]
  },
  {
    "description": "multiple dependencies",
    "schema": {
      "dependencies": {
        "quux": [
          "foo",
          "bar"
        ]
      }
    },
    "tests": [
      {
        "description": "neither",
        "data": {},
        "valid": true
      },
      {
        "description": "nondependants",
        "data": {
          "foo": 1,
          "bar": 2
        },
        "valid": true
      },
      {
        "description": "with dependencies",
        "data": {
          "foo": 1,
          "bar": 2,
          "quux": 3
        },
        "valid": true
      },
      {
        "description": "missing dependency",
        "data": {
          "foo": 1,
          "quux": 2
        },
        "valid": false
      },
      {
        "description": "missing other dependency",
        "data": {
          "bar": 1,
          "quux": 2
        },
        "valid": false
      },
      {
        "description": "missing both dependencies",
        "data": {
          "quux": 1
        },
        "valid": false
      }
    ]
  },
  {
    "description": "multiple dependencies subschema",
    "schema": {
      "dependencies": {
        "bar": {
          "properties": {
            "foo": {
              "type": "integer"
            },
            "bar": {
              "type": "integer"
            }
          }
        }
      }
    },
    "tests": [
      {
        "description": "valid",
        "data": {
          "foo": 1,
          "bar": 2
        },
        "valid": true
      },
      {
        "description": "no dependency",
        "data": {
          "foo": "quux"
        },
        "valid": true
      },
      {
        "description": "wrong type",
        "data": {
          "foo": "quux",
          "bar": 2
        },
        "valid": false
      },
      {
        "description": "wrong type other",
        "data": {
          "foo": 2,
          "bar": "quux"
        },
        "valid": false
      },
      {
        "description": "wrong type both",
        "data": {
          "foo": "quux",
          "bar": "quux"
        },
        "valid": false
      }
    ]
  },
  {
    "description": "dependencies with boolean subschemas",
    "schema": {
      "dependencies": {
        "foo": true,
        "bar": false
      }
    },
    "tests": [
      {
        "description": "object with property having schema true is valid",
        "data": {
          "foo": 1
        },
        "valid": true
      },
      {
        "description": "object with property having schema false is invalid",
        "data": {
          "bar": 2
        },
        "valid": false
      },
      {
        "description": "object with both properties is invalid",
        "data": {
          "foo": 1,
          "bar": 2
        },
        "valid": false
      },
      {
        "description": "empty object is valid",
        "data": {},
        "valid": true
      }
    ]
  },
  {
    "description": "empty array of dependencies",
    "schema": {
      "dependencies": {
        "foo": []
      }
    },
    "tests": [
      {
        "description": "object with property is valid",
        "data": {
          "foo": 1
        },
        "valid": true
      },
      {
        "description": "empty object is valid",
        "data": {},
        "valid": true
      },
      {
        "description": "non-object is valid",
        "data": 1,
        "valid": true
      }
    ]
  },
  {
    "description": "dependencies with escaped characters",
    "schema": {
      "dependencies": {
        "foo\nbar": [
          "foo\rbar"
        ],
        "foo\tbar": {
          "minProperties": 4
        },
        "foo'bar": {
          "required": [
            "foo\"bar"
          ]
        },
        "foo\"bar": [
          "foo'bar"
        ]
      }
    },
    "tests": [
      {
        "description": "valid object 1",
        "data": {
          "foo\nbar": 1,
          "foo\rbar": 2
        },
        "valid": true
      },
      {
        "description": "valid object 2",
        "data": {
          "foo\tbar": 1,
          "a": 2,
          "b": 3,
          "c": 4
        },
        "valid": true
      },
      {
        "description": "valid object 3",
        "data": {
          "foo'bar": 1,
          "foo\"bar": 2
        },
        "valid": true
      },
      {
        "description": "invalid object 1",
        "data": {
          "foo\nbar": 1,
          "foo": 2
        },
        "valid": false
      },
      {
        "description": "invalid object 2",
        "data": {
          "foo\tbar": 1,
          "a": 2
        },
        "valid": false
      },
      {
        "description": "invalid object 3",
        "data": {
          "foo'bar": 1
        },
        "valid": false
      },
      {
        "description": "invalid object 4",
        "data": {
          "foo\"bar": 2
        },
        "valid": false
      }
    ]
  }
]
