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

     1  [
     2      {
     3          "description": "uniqueItems validation",
     4          "schema": {"uniqueItems": true},
     5          "tests": [
     6              {
     7                  "description": "unique array of integers is valid",
     8                  "data": [1, 2],
     9                  "valid": true
    10              },
    11              {
    12                  "description": "non-unique array of integers is invalid",
    13                  "data": [1, 1],
    14                  "valid": false
    15              },
    16              {
    17                  "description": "non-unique array of more than two integers is invalid",
    18                  "data": [1, 2, 1],
    19                  "valid": false
    20              },
    21              {
    22                  "description": "numbers are unique if mathematically unequal",
    23                  "data": [1.0, 1.00, 1],
    24                  "valid": false
    25              },
    26              {
    27                  "description": "unique array of strings is valid",
    28                  "data": ["foo", "bar", "baz"],
    29                  "valid": true
    30              },
    31              {
    32                  "description": "non-unique array of strings is invalid",
    33                  "data": ["foo", "bar", "foo"],
    34                  "valid": false
    35              },
    36              {
    37                  "description": "unique array of objects is valid",
    38                  "data": [{"foo": "bar"}, {"foo": "baz"}],
    39                  "valid": true
    40              },
    41              {
    42                  "description": "non-unique array of objects is invalid",
    43                  "data": [{"foo": "bar"}, {"foo": "bar"}],
    44                  "valid": false
    45              },
    46              {
    47                  "description": "unique array of nested objects is valid",
    48                  "data": [
    49                      {"foo": {"bar" : {"baz" : true}}},
    50                      {"foo": {"bar" : {"baz" : false}}}
    51                  ],
    52                  "valid": true
    53              },
    54              {
    55                  "description": "non-unique array of nested objects is invalid",
    56                  "data": [
    57                      {"foo": {"bar" : {"baz" : true}}},
    58                      {"foo": {"bar" : {"baz" : true}}}
    59                  ],
    60                  "valid": false
    61              },
    62              {
    63                  "description": "unique array of arrays is valid",
    64                  "data": [["foo"], ["bar"]],
    65                  "valid": true
    66              },
    67              {
    68                  "description": "non-unique array of arrays is invalid",
    69                  "data": [["foo"], ["foo"]],
    70                  "valid": false
    71              },
    72              {
    73                  "description": "non-unique array of more than two arrays is invalid",
    74                  "data": [["foo"], ["bar"], ["foo"]],
    75                  "valid": false
    76              },
    77              {
    78                  "description": "1 and true are unique",
    79                  "data": [1, true],
    80                  "valid": true
    81              },
    82              {
    83                  "description": "0 and false are unique",
    84                  "data": [0, false],
    85                  "valid": true
    86              },
    87              {
    88                  "description": "[1] and [true] are unique",
    89                  "data": [[1], [true]],
    90                  "valid": true
    91              },
    92              {
    93                  "description": "[0] and [false] are unique",
    94                  "data": [[0], [false]],
    95                  "valid": true
    96              },
    97              {
    98                  "description": "nested [1] and [true] are unique",
    99                  "data": [[[1], "foo"], [[true], "foo"]],
   100                  "valid": true
   101              },
   102              {
   103                  "description": "nested [0] and [false] are unique",
   104                  "data": [[[0], "foo"], [[false], "foo"]],
   105                  "valid": true
   106              },
   107              {
   108                  "description": "unique heterogeneous types are valid",
   109                  "data": [{}, [1], true, null, 1],
   110                  "valid": true
   111              },
   112              {
   113                  "description": "non-unique heterogeneous types are invalid",
   114                  "data": [{}, [1], true, null, {}, 1],
   115                  "valid": false
   116              },
   117              {
   118                  "description": "{\"a\": false} and {\"a\": 0} are unique",
   119                  "data": [{"a": false}, {"a": 0}],
   120                  "valid": true
   121              },
   122              {
   123                  "description": "{\"a\": true} and {\"a\": 1} are unique",
   124                  "data": [{"a": true}, {"a": 1}],
   125                  "valid": true
   126              }
   127          ]
   128      },
   129      {
   130          "description": "uniqueItems with an array of items",
   131          "schema": {
   132              "items": [{"type": "boolean"}, {"type": "boolean"}],
   133              "uniqueItems": true
   134          },
   135          "tests": [
   136              {
   137                  "description": "[false, true] from items array is valid",
   138                  "data": [false, true],
   139                  "valid": true
   140              },
   141              {
   142                  "description": "[true, false] from items array is valid",
   143                  "data": [true, false],
   144                  "valid": true
   145              },
   146              {
   147                  "description": "[false, false] from items array is not valid",
   148                  "data": [false, false],
   149                  "valid": false
   150              },
   151              {
   152                  "description": "[true, true] from items array is not valid",
   153                  "data": [true, true],
   154                  "valid": false
   155              },
   156              {
   157                  "description": "unique array extended from [false, true] is valid",
   158                  "data": [false, true, "foo", "bar"],
   159                  "valid": true
   160              },
   161              {
   162                  "description": "unique array extended from [true, false] is valid",
   163                  "data": [true, false, "foo", "bar"],
   164                  "valid": true
   165              },
   166              {
   167                  "description": "non-unique array extended from [false, true] is not valid",
   168                  "data": [false, true, "foo", "foo"],
   169                  "valid": false
   170              },
   171              {
   172                  "description": "non-unique array extended from [true, false] is not valid",
   173                  "data": [true, false, "foo", "foo"],
   174                  "valid": false
   175              }
   176          ]
   177      },
   178      {
   179          "description": "uniqueItems with an array of items and additionalItems=false",
   180          "schema": {
   181              "items": [{"type": "boolean"}, {"type": "boolean"}],
   182              "uniqueItems": true,
   183              "additionalItems": false
   184          },
   185          "tests": [
   186              {
   187                  "description": "[false, true] from items array is valid",
   188                  "data": [false, true],
   189                  "valid": true
   190              },
   191              {
   192                  "description": "[true, false] from items array is valid",
   193                  "data": [true, false],
   194                  "valid": true
   195              },
   196              {
   197                  "description": "[false, false] from items array is not valid",
   198                  "data": [false, false],
   199                  "valid": false
   200              },
   201              {
   202                  "description": "[true, true] from items array is not valid",
   203                  "data": [true, true],
   204                  "valid": false
   205              },
   206              {
   207                  "description": "extra items are invalid even if unique",
   208                  "data": [false, true, null],
   209                  "valid": false
   210              }
   211          ]
   212      },
   213      {
   214          "description": "uniqueItems=false validation",
   215          "schema": { "uniqueItems": false },
   216          "tests": [
   217              {
   218                  "description": "unique array of integers is valid",
   219                  "data": [1, 2],
   220                  "valid": true
   221              },
   222              {
   223                  "description": "non-unique array of integers is valid",
   224                  "data": [1, 1],
   225                  "valid": true
   226              },
   227              {
   228                  "description": "numbers are unique if mathematically unequal",
   229                  "data": [1.0, 1.00, 1],
   230                  "valid": true
   231              },
   232              {
   233                  "description": "unique array of objects is valid",
   234                  "data": [{"foo": "bar"}, {"foo": "baz"}],
   235                  "valid": true
   236              },
   237              {
   238                  "description": "non-unique array of objects is valid",
   239                  "data": [{"foo": "bar"}, {"foo": "bar"}],
   240                  "valid": true
   241              },
   242              {
   243                  "description": "unique array of nested objects is valid",
   244                  "data": [
   245                      {"foo": {"bar" : {"baz" : true}}},
   246                      {"foo": {"bar" : {"baz" : false}}}
   247                  ],
   248                  "valid": true
   249              },
   250              {
   251                  "description": "non-unique array of nested objects is valid",
   252                  "data": [
   253                      {"foo": {"bar" : {"baz" : true}}},
   254                      {"foo": {"bar" : {"baz" : true}}}
   255                  ],
   256                  "valid": true
   257              },
   258              {
   259                  "description": "unique array of arrays is valid",
   260                  "data": [["foo"], ["bar"]],
   261                  "valid": true
   262              },
   263              {
   264                  "description": "non-unique array of arrays is valid",
   265                  "data": [["foo"], ["foo"]],
   266                  "valid": true
   267              },
   268              {
   269                  "description": "1 and true are unique",
   270                  "data": [1, true],
   271                  "valid": true
   272              },
   273              {
   274                  "description": "0 and false are unique",
   275                  "data": [0, false],
   276                  "valid": true
   277              },
   278              {
   279                  "description": "unique heterogeneous types are valid",
   280                  "data": [{}, [1], true, null, 1],
   281                  "valid": true
   282              },
   283              {
   284                  "description": "non-unique heterogeneous types are valid",
   285                  "data": [{}, [1], true, null, {}, 1],
   286                  "valid": true
   287              }
   288          ]
   289      },
   290      {
   291          "description": "uniqueItems=false with an array of items",
   292          "schema": {
   293              "items": [{"type": "boolean"}, {"type": "boolean"}],
   294              "uniqueItems": false
   295          },
   296          "tests": [
   297              {
   298                  "description": "[false, true] from items array is valid",
   299                  "data": [false, true],
   300                  "valid": true
   301              },
   302              {
   303                  "description": "[true, false] from items array is valid",
   304                  "data": [true, false],
   305                  "valid": true
   306              },
   307              {
   308                  "description": "[false, false] from items array is valid",
   309                  "data": [false, false],
   310                  "valid": true
   311              },
   312              {
   313                  "description": "[true, true] from items array is valid",
   314                  "data": [true, true],
   315                  "valid": true
   316              },
   317              {
   318                  "description": "unique array extended from [false, true] is valid",
   319                  "data": [false, true, "foo", "bar"],
   320                  "valid": true
   321              },
   322              {
   323                  "description": "unique array extended from [true, false] is valid",
   324                  "data": [true, false, "foo", "bar"],
   325                  "valid": true
   326              },
   327              {
   328                  "description": "non-unique array extended from [false, true] is valid",
   329                  "data": [false, true, "foo", "foo"],
   330                  "valid": true
   331              },
   332              {
   333                  "description": "non-unique array extended from [true, false] is valid",
   334                  "data": [true, false, "foo", "foo"],
   335                  "valid": true
   336              }
   337          ]
   338      },
   339      {
   340          "description": "uniqueItems=false with an array of items and additionalItems=false",
   341          "schema": {
   342              "items": [{"type": "boolean"}, {"type": "boolean"}],
   343              "uniqueItems": false,
   344              "additionalItems": false
   345          },
   346          "tests": [
   347              {
   348                  "description": "[false, true] from items array is valid",
   349                  "data": [false, true],
   350                  "valid": true
   351              },
   352              {
   353                  "description": "[true, false] from items array is valid",
   354                  "data": [true, false],
   355                  "valid": true
   356              },
   357              {
   358                  "description": "[false, false] from items array is valid",
   359                  "data": [false, false],
   360                  "valid": true
   361              },
   362              {
   363                  "description": "[true, true] from items array is valid",
   364                  "data": [true, true],
   365                  "valid": true
   366              },
   367              {
   368                  "description": "extra items are invalid even if unique",
   369                  "data": [false, true, null],
   370                  "valid": false
   371              }
   372          ]
   373      }
   374  ]