github.com/kaptinlin/jsonschema@v0.4.6/testdata/JSON-Schema-Test-Suite/tests/draft6/items.json (about)

     1  [
     2      {
     3          "description": "a schema given for items",
     4          "schema": {
     5              "items": {"type": "integer"}
     6          },
     7          "tests": [
     8              {
     9                  "description": "valid items",
    10                  "data": [ 1, 2, 3 ],
    11                  "valid": true
    12              },
    13              {
    14                  "description": "wrong type of items",
    15                  "data": [1, "x"],
    16                  "valid": false
    17              },
    18              {
    19                  "description": "ignores non-arrays",
    20                  "data": {"foo" : "bar"},
    21                  "valid": true
    22              },
    23              {
    24                  "description": "JavaScript pseudo-array is valid",
    25                  "data": {
    26                      "0": "invalid",
    27                      "length": 1
    28                  },
    29                  "valid": true
    30              }
    31          ]
    32      },
    33      {
    34          "description": "an array of schemas for items",
    35          "schema": {
    36              "items": [
    37                  {"type": "integer"},
    38                  {"type": "string"}
    39              ]
    40          },
    41          "tests": [
    42              {
    43                  "description": "correct types",
    44                  "data": [ 1, "foo" ],
    45                  "valid": true
    46              },
    47              {
    48                  "description": "wrong types",
    49                  "data": [ "foo", 1 ],
    50                  "valid": false
    51              },
    52              {
    53                  "description": "incomplete array of items",
    54                  "data": [ 1 ],
    55                  "valid": true
    56              },
    57              {
    58                  "description": "array with additional items",
    59                  "data": [ 1, "foo", true ],
    60                  "valid": true
    61              },
    62              {
    63                  "description": "empty array",
    64                  "data": [ ],
    65                  "valid": true
    66              },
    67              {
    68                  "description": "JavaScript pseudo-array is valid",
    69                  "data": {
    70                      "0": "invalid",
    71                      "1": "valid",
    72                      "length": 2
    73                  },
    74                  "valid": true
    75              }
    76          ]
    77      },
    78      {
    79          "description": "items with boolean schema (true)",
    80          "schema": {"items": true},
    81          "tests": [
    82              {
    83                  "description": "any array is valid",
    84                  "data": [ 1, "foo", true ],
    85                  "valid": true
    86              },
    87              {
    88                  "description": "empty array is valid",
    89                  "data": [],
    90                  "valid": true
    91              }
    92          ]
    93      },
    94      {
    95          "description": "items with boolean schema (false)",
    96          "schema": {"items": false},
    97          "tests": [
    98              {
    99                  "description": "any non-empty array is invalid",
   100                  "data": [ 1, "foo", true ],
   101                  "valid": false
   102              },
   103              {
   104                  "description": "empty array is valid",
   105                  "data": [],
   106                  "valid": true
   107              }
   108          ]
   109      },
   110      {
   111          "description": "items with boolean schemas",
   112          "schema": {
   113              "items": [true, false]
   114          },
   115          "tests": [
   116              {
   117                  "description": "array with one item is valid",
   118                  "data": [ 1 ],
   119                  "valid": true
   120              },
   121              {
   122                  "description": "array with two items is invalid",
   123                  "data": [ 1, "foo" ],
   124                  "valid": false
   125              },
   126              {
   127                  "description": "empty array is valid",
   128                  "data": [],
   129                  "valid": true
   130              }
   131          ]
   132      },
   133      {
   134          "description": "items and subitems",
   135          "schema": {
   136              "definitions": {
   137                  "item": {
   138                      "type": "array",
   139                      "additionalItems": false,
   140                      "items": [
   141                          { "$ref": "#/definitions/sub-item" },
   142                          { "$ref": "#/definitions/sub-item" }
   143                      ]
   144                  },
   145                  "sub-item": {
   146                      "type": "object",
   147                      "required": ["foo"]
   148                  }
   149              },
   150              "type": "array",
   151              "additionalItems": false,
   152              "items": [
   153                  { "$ref": "#/definitions/item" },
   154                  { "$ref": "#/definitions/item" },
   155                  { "$ref": "#/definitions/item" }
   156              ]
   157          },
   158          "tests": [
   159              {
   160                  "description": "valid items",
   161                  "data": [
   162                      [ {"foo": null}, {"foo": null} ],
   163                      [ {"foo": null}, {"foo": null} ],
   164                      [ {"foo": null}, {"foo": null} ]
   165                  ],
   166                  "valid": true
   167              },
   168              {
   169                  "description": "too many items",
   170                  "data": [
   171                      [ {"foo": null}, {"foo": null} ],
   172                      [ {"foo": null}, {"foo": null} ],
   173                      [ {"foo": null}, {"foo": null} ],
   174                      [ {"foo": null}, {"foo": null} ]
   175                  ],
   176                  "valid": false
   177              },
   178              {
   179                  "description": "too many sub-items",
   180                  "data": [
   181                      [ {"foo": null}, {"foo": null}, {"foo": null} ],
   182                      [ {"foo": null}, {"foo": null} ],
   183                      [ {"foo": null}, {"foo": null} ]
   184                  ],
   185                  "valid": false
   186              },
   187              {
   188                  "description": "wrong item",
   189                  "data": [
   190                      {"foo": null},
   191                      [ {"foo": null}, {"foo": null} ],
   192                      [ {"foo": null}, {"foo": null} ]
   193                  ],
   194                  "valid": false
   195              },
   196              {
   197                  "description": "wrong sub-item",
   198                  "data": [
   199                      [ {}, {"foo": null} ],
   200                      [ {"foo": null}, {"foo": null} ],
   201                      [ {"foo": null}, {"foo": null} ]
   202                  ],
   203                  "valid": false
   204              },
   205              {
   206                  "description": "fewer items is valid",
   207                  "data": [
   208                      [ {"foo": null} ],
   209                      [ {"foo": null} ]
   210                  ],
   211                  "valid": true
   212              }
   213          ]
   214      },
   215      {
   216          "description": "nested items",
   217          "schema": {
   218              "type": "array",
   219              "items": {
   220                  "type": "array",
   221                  "items": {
   222                      "type": "array",
   223                      "items": {
   224                          "type": "array",
   225                          "items": {
   226                              "type": "number"
   227                          }
   228                      }
   229                  }
   230              }
   231          },
   232          "tests": [
   233              {
   234                  "description": "valid nested array",
   235                  "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]],
   236                  "valid": true
   237              },
   238              {
   239                  "description": "nested array with invalid type",
   240                  "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]],
   241                  "valid": false
   242              },
   243              {
   244                  "description": "not deep enough",
   245                  "data": [[[1], [2],[3]], [[4], [5], [6]]],
   246                  "valid": false
   247              }
   248          ]
   249      },
   250      {
   251          "description": "single-form items with null instance elements",
   252          "schema": {
   253              "items": {
   254                  "type": "null"
   255              }
   256          },
   257          "tests": [
   258              {
   259                  "description": "allows null elements",
   260                  "data": [ null ],
   261                  "valid": true
   262              }
   263          ]
   264      },
   265      {
   266          "description": "array-form items with null instance elements",
   267          "schema": {
   268              "items": [
   269                  {
   270                      "type": "null"
   271                  }
   272              ]
   273          },
   274          "tests": [
   275              {
   276                  "description": "allows null elements",
   277                  "data": [ null ],
   278                  "valid": true
   279              }
   280          ]
   281      }
   282  ]