[
  {
    "description": "a schema given for items",
    "database": {
      "schemas": [
        {
          "items": {
            "type": "integer"
          },
          "$id": "items_0_0"
        }
      ]
    },
    "tests": [
      {
        "description": "valid items",
        "data": [
          1,
          2,
          3
        ],
        "schema_id": "items_0_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "wrong type of items",
        "data": [
          1,
          "x"
        ],
        "schema_id": "items_0_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "non-arrays are invalid",
        "data": {
          "foo": "bar"
        },
        "schema_id": "items_0_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "JavaScript pseudo-arrays are invalid",
        "data": {
          "0": "invalid",
          "length": 1
        },
        "schema_id": "items_0_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "items with boolean schema (true)",
    "database": {
      "schemas": [
        {
          "items": true,
          "$id": "items_1_0"
        }
      ]
    },
    "tests": [
      {
        "description": "any array is valid",
        "data": [
          1,
          "foo",
          true
        ],
        "schema_id": "items_1_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "empty array is valid",
        "data": [],
        "schema_id": "items_1_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  },
  {
    "description": "items with boolean schema (false)",
    "database": {
      "schemas": [
        {
          "items": false,
          "$id": "items_2_0"
        }
      ]
    },
    "tests": [
      {
        "description": "any non-empty array is invalid",
        "data": [
          1,
          "foo",
          true
        ],
        "schema_id": "items_2_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "empty array is valid",
        "data": [],
        "schema_id": "items_2_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  },
  {
    "description": "items and subitems",
    "database": {
      "schemas": [
        {
          "type": "array",
          "items": false,
          "prefixItems": [
            {
              "$ref": "item"
            },
            {
              "$ref": "item"
            },
            {
              "$ref": "item"
            }
          ],
          "$id": "items_3_0"
        },
        {
          "$id": "item",
          "type": "array",
          "items": false,
          "prefixItems": [
            {
              "$ref": "sub-item"
            },
            {
              "$ref": "sub-item"
            }
          ]
        },
        {
          "$id": "sub-item",
          "type": "object",
          "required": [
            "foo"
          ]
        }
      ]
    },
    "tests": [
      {
        "description": "valid items",
        "data": [
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ]
        ],
        "schema_id": "items_3_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "too many items",
        "data": [
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ]
        ],
        "schema_id": "items_3_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "too many sub-items",
        "data": [
          [
            {
              "foo": null
            },
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ]
        ],
        "schema_id": "items_3_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "wrong item",
        "data": [
          {
            "foo": null
          },
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ]
        ],
        "schema_id": "items_3_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "wrong sub-item",
        "data": [
          [
            {},
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            },
            {
              "foo": null
            }
          ]
        ],
        "schema_id": "items_3_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "fewer items is invalid",
        "data": [
          [
            {
              "foo": null
            }
          ],
          [
            {
              "foo": null
            }
          ]
        ],
        "schema_id": "items_3_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "nested items",
    "database": {
      "schemas": [
        {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              }
            }
          },
          "$id": "items_4_0"
        }
      ]
    },
    "tests": [
      {
        "description": "valid nested array",
        "data": [
          [
            [
              [
                1
              ]
            ],
            [
              [
                2
              ],
              [
                3
              ]
            ]
          ],
          [
            [
              [
                4
              ],
              [
                5
              ],
              [
                6
              ]
            ]
          ]
        ],
        "schema_id": "items_4_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "nested array with invalid type",
        "data": [
          [
            [
              [
                "1"
              ]
            ],
            [
              [
                2
              ],
              [
                3
              ]
            ]
          ],
          [
            [
              [
                4
              ],
              [
                5
              ],
              [
                6
              ]
            ]
          ]
        ],
        "schema_id": "items_4_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "not deep enough",
        "data": [
          [
            [
              1
            ],
            [
              2
            ],
            [
              3
            ]
          ],
          [
            [
              4
            ],
            [
              5
            ],
            [
              6
            ]
          ]
        ],
        "schema_id": "items_4_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "prefixItems with no additional items allowed",
    "database": {
      "schemas": [
        {
          "prefixItems": [
            {},
            {},
            {}
          ],
          "items": false,
          "$id": "items_5_0"
        }
      ]
    },
    "tests": [
      {
        "description": "empty array",
        "data": [],
        "schema_id": "items_5_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "fewer number of items present (1)",
        "data": [
          1
        ],
        "schema_id": "items_5_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "fewer number of items present (2)",
        "data": [
          1,
          2
        ],
        "schema_id": "items_5_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "equal number of items present",
        "data": [
          1,
          2,
          3
        ],
        "schema_id": "items_5_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "additional items are not permitted",
        "data": [
          1,
          2,
          3,
          4
        ],
        "schema_id": "items_5_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "items does not look in applicators, valid case",
    "database": {
      "schemas": [
        {
          "allOf": [
            {
              "prefixItems": [
                {
                  "minimum": 3
                }
              ]
            }
          ],
          "items": {
            "minimum": 5
          },
          "$id": "items_6_0"
        }
      ]
    },
    "tests": [
      {
        "description": "prefixItems in allOf does not constrain items, invalid case",
        "data": [
          3,
          5
        ],
        "schema_id": "items_6_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "prefixItems in allOf does not constrain items, valid case",
        "data": [
          5,
          5
        ],
        "schema_id": "items_6_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  },
  {
    "description": "prefixItems validation adjusts the starting index for items",
    "database": {
      "schemas": [
        {
          "prefixItems": [
            {
              "type": "string"
            }
          ],
          "items": {
            "type": "integer"
          },
          "$id": "items_7_0"
        }
      ]
    },
    "tests": [
      {
        "description": "valid items",
        "data": [
          "x",
          2,
          3
        ],
        "schema_id": "items_7_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "wrong type of second item",
        "data": [
          "x",
          "y"
        ],
        "schema_id": "items_7_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "items with heterogeneous array",
    "database": {
      "schemas": [
        {
          "prefixItems": [
            {}
          ],
          "items": false,
          "$id": "items_8_0"
        }
      ]
    },
    "tests": [
      {
        "description": "heterogeneous invalid instance",
        "data": [
          "foo",
          "bar",
          37
        ],
        "schema_id": "items_8_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      },
      {
        "description": "valid instance",
        "data": [
          null
        ],
        "schema_id": "items_8_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  },
  {
    "description": "items with null instance elements",
    "database": {
      "schemas": [
        {
          "items": {
            "type": "null"
          },
          "$id": "items_9_0"
        }
      ]
    },
    "tests": [
      {
        "description": "allows null elements",
        "data": [
          null
        ],
        "schema_id": "items_9_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  },
  {
    "description": "extensible: true allows extra items (when items is false)",
    "database": {
      "schemas": [
        {
          "items": false,
          "extensible": true,
          "$id": "items_10_0"
        }
      ]
    },
    "tests": [
      {
        "description": "extra item is valid",
        "data": [
          1
        ],
        "schema_id": "items_10_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "extensible: true allows extra properties for items",
    "database": {
      "schemas": [
        {
          "items": {
            "minimum": 5
          },
          "extensible": true,
          "$id": "items_11_0"
        }
      ]
    },
    "tests": [
      {
        "description": "valid item is valid",
        "data": [
          5,
          6
        ],
        "schema_id": "items_11_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "invalid item (less than min) is invalid even with extensible: true",
        "data": [
          4
        ],
        "schema_id": "items_11_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "array: simple extensible array",
    "database": {
      "schemas": [
        {
          "type": "array",
          "extensible": true,
          "$id": "items_12_0"
        }
      ]
    },
    "tests": [
      {
        "description": "empty array is valid",
        "data": [],
        "schema_id": "items_12_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "array with items is valid (extensible)",
        "data": [
          1,
          "foo"
        ],
        "schema_id": "items_12_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  },
  {
    "description": "array: strict array",
    "database": {
      "schemas": [
        {
          "type": "array",
          "extensible": false,
          "$id": "items_13_0"
        }
      ]
    },
    "tests": [
      {
        "description": "empty array is valid",
        "data": [],
        "schema_id": "items_13_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "array with items is invalid (strict)",
        "data": [
          1
        ],
        "schema_id": "items_13_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  },
  {
    "description": "array: items extensible",
    "database": {
      "schemas": [
        {
          "type": "array",
          "items": {
            "extensible": true
          },
          "$id": "items_14_0"
        }
      ]
    },
    "tests": [
      {
        "description": "empty array is valid",
        "data": [],
        "schema_id": "items_14_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "array with items is valid (items explicitly allowed to be anything extensible)",
        "data": [
          1,
          "foo",
          {}
        ],
        "schema_id": "items_14_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      }
    ]
  },
  {
    "description": "array: items strict",
    "database": {
      "schemas": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "extensible": false
          },
          "$id": "items_15_0"
        }
      ]
    },
    "tests": [
      {
        "description": "empty array is valid (empty objects)",
        "data": [
          {}
        ],
        "schema_id": "items_15_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "array with strict object items is valid",
        "data": [
          {}
        ],
        "schema_id": "items_15_0",
        "action": "validate",
        "expect": {
          "success": true
        }
      },
      {
        "description": "array with invalid strict object items (extra property)",
        "data": [
          {
            "extra": 1
          }
        ],
        "schema_id": "items_15_0",
        "action": "validate",
        "expect": {
          "success": false
        }
      }
    ]
  }
]