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

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