cuelang.org/go@v0.13.0/encoding/jsonschema/testdata/external/tests/draft2019-09/uniqueItems.json (about)

     1  [
     2  	{
     3  		"description": "uniqueItems validation",
     4  		"schema": {
     5  			"$schema": "https://json-schema.org/draft/2019-09/schema",
     6  			"uniqueItems": true
     7  		},
     8  		"tests": [
     9  			{
    10  				"description": "unique array of integers is valid",
    11  				"data": [
    12  					1,
    13  					2
    14  				],
    15  				"valid": true
    16  			},
    17  			{
    18  				"description": "non-unique array of integers is invalid",
    19  				"data": [
    20  					1,
    21  					1
    22  				],
    23  				"valid": false
    24  			},
    25  			{
    26  				"description": "non-unique array of more than two integers is invalid",
    27  				"data": [
    28  					1,
    29  					2,
    30  					1
    31  				],
    32  				"valid": false
    33  			},
    34  			{
    35  				"description": "numbers are unique if mathematically unequal",
    36  				"data": [
    37  					1.0,
    38  					1.00,
    39  					1
    40  				],
    41  				"valid": false
    42  			},
    43  			{
    44  				"description": "false is not equal to zero",
    45  				"data": [
    46  					0,
    47  					false
    48  				],
    49  				"valid": true
    50  			},
    51  			{
    52  				"description": "true is not equal to one",
    53  				"data": [
    54  					1,
    55  					true
    56  				],
    57  				"valid": true
    58  			},
    59  			{
    60  				"description": "unique array of strings is valid",
    61  				"data": [
    62  					"foo",
    63  					"bar",
    64  					"baz"
    65  				],
    66  				"valid": true
    67  			},
    68  			{
    69  				"description": "non-unique array of strings is invalid",
    70  				"data": [
    71  					"foo",
    72  					"bar",
    73  					"foo"
    74  				],
    75  				"valid": false
    76  			},
    77  			{
    78  				"description": "unique array of objects is valid",
    79  				"data": [
    80  					{
    81  						"foo": "bar"
    82  					},
    83  					{
    84  						"foo": "baz"
    85  					}
    86  				],
    87  				"valid": true
    88  			},
    89  			{
    90  				"description": "non-unique array of objects is invalid",
    91  				"data": [
    92  					{
    93  						"foo": "bar"
    94  					},
    95  					{
    96  						"foo": "bar"
    97  					}
    98  				],
    99  				"valid": false
   100  			},
   101  			{
   102  				"description": "property order of array of objects is ignored",
   103  				"data": [
   104  					{
   105  						"foo": "bar",
   106  						"bar": "foo"
   107  					},
   108  					{
   109  						"bar": "foo",
   110  						"foo": "bar"
   111  					}
   112  				],
   113  				"valid": false
   114  			},
   115  			{
   116  				"description": "unique array of nested objects is valid",
   117  				"data": [
   118  					{
   119  						"foo": {
   120  							"bar": {
   121  								"baz": true
   122  							}
   123  						}
   124  					},
   125  					{
   126  						"foo": {
   127  							"bar": {
   128  								"baz": false
   129  							}
   130  						}
   131  					}
   132  				],
   133  				"valid": true
   134  			},
   135  			{
   136  				"description": "non-unique array of nested objects is invalid",
   137  				"data": [
   138  					{
   139  						"foo": {
   140  							"bar": {
   141  								"baz": true
   142  							}
   143  						}
   144  					},
   145  					{
   146  						"foo": {
   147  							"bar": {
   148  								"baz": true
   149  							}
   150  						}
   151  					}
   152  				],
   153  				"valid": false
   154  			},
   155  			{
   156  				"description": "unique array of arrays is valid",
   157  				"data": [
   158  					[
   159  						"foo"
   160  					],
   161  					[
   162  						"bar"
   163  					]
   164  				],
   165  				"valid": true
   166  			},
   167  			{
   168  				"description": "non-unique array of arrays is invalid",
   169  				"data": [
   170  					[
   171  						"foo"
   172  					],
   173  					[
   174  						"foo"
   175  					]
   176  				],
   177  				"valid": false
   178  			},
   179  			{
   180  				"description": "non-unique array of more than two arrays is invalid",
   181  				"data": [
   182  					[
   183  						"foo"
   184  					],
   185  					[
   186  						"bar"
   187  					],
   188  					[
   189  						"foo"
   190  					]
   191  				],
   192  				"valid": false
   193  			},
   194  			{
   195  				"description": "1 and true are unique",
   196  				"data": [
   197  					1,
   198  					true
   199  				],
   200  				"valid": true
   201  			},
   202  			{
   203  				"description": "0 and false are unique",
   204  				"data": [
   205  					0,
   206  					false
   207  				],
   208  				"valid": true
   209  			},
   210  			{
   211  				"description": "[1] and [true] are unique",
   212  				"data": [
   213  					[
   214  						1
   215  					],
   216  					[
   217  						true
   218  					]
   219  				],
   220  				"valid": true
   221  			},
   222  			{
   223  				"description": "[0] and [false] are unique",
   224  				"data": [
   225  					[
   226  						0
   227  					],
   228  					[
   229  						false
   230  					]
   231  				],
   232  				"valid": true
   233  			},
   234  			{
   235  				"description": "nested [1] and [true] are unique",
   236  				"data": [
   237  					[
   238  						[
   239  							1
   240  						],
   241  						"foo"
   242  					],
   243  					[
   244  						[
   245  							true
   246  						],
   247  						"foo"
   248  					]
   249  				],
   250  				"valid": true
   251  			},
   252  			{
   253  				"description": "nested [0] and [false] are unique",
   254  				"data": [
   255  					[
   256  						[
   257  							0
   258  						],
   259  						"foo"
   260  					],
   261  					[
   262  						[
   263  							false
   264  						],
   265  						"foo"
   266  					]
   267  				],
   268  				"valid": true
   269  			},
   270  			{
   271  				"description": "unique heterogeneous types are valid",
   272  				"data": [
   273  					{},
   274  					[
   275  						1
   276  					],
   277  					true,
   278  					null,
   279  					1,
   280  					"{}"
   281  				],
   282  				"valid": true
   283  			},
   284  			{
   285  				"description": "non-unique heterogeneous types are invalid",
   286  				"data": [
   287  					{},
   288  					[
   289  						1
   290  					],
   291  					true,
   292  					null,
   293  					{},
   294  					1
   295  				],
   296  				"valid": false
   297  			},
   298  			{
   299  				"description": "different objects are unique",
   300  				"data": [
   301  					{
   302  						"a": 1,
   303  						"b": 2
   304  					},
   305  					{
   306  						"a": 2,
   307  						"b": 1
   308  					}
   309  				],
   310  				"valid": true
   311  			},
   312  			{
   313  				"description": "objects are non-unique despite key order",
   314  				"data": [
   315  					{
   316  						"a": 1,
   317  						"b": 2
   318  					},
   319  					{
   320  						"b": 2,
   321  						"a": 1
   322  					}
   323  				],
   324  				"valid": false
   325  			},
   326  			{
   327  				"description": "{\"a\": false} and {\"a\": 0} are unique",
   328  				"data": [
   329  					{
   330  						"a": false
   331  					},
   332  					{
   333  						"a": 0
   334  					}
   335  				],
   336  				"valid": true
   337  			},
   338  			{
   339  				"description": "{\"a\": true} and {\"a\": 1} are unique",
   340  				"data": [
   341  					{
   342  						"a": true
   343  					},
   344  					{
   345  						"a": 1
   346  					}
   347  				],
   348  				"valid": true
   349  			}
   350  		]
   351  	},
   352  	{
   353  		"description": "uniqueItems with an array of items",
   354  		"schema": {
   355  			"$schema": "https://json-schema.org/draft/2019-09/schema",
   356  			"items": [
   357  				{
   358  					"type": "boolean"
   359  				},
   360  				{
   361  					"type": "boolean"
   362  				}
   363  			],
   364  			"uniqueItems": true
   365  		},
   366  		"tests": [
   367  			{
   368  				"description": "[false, true] from items array is valid",
   369  				"data": [
   370  					false,
   371  					true
   372  				],
   373  				"valid": true
   374  			},
   375  			{
   376  				"description": "[true, false] from items array is valid",
   377  				"data": [
   378  					true,
   379  					false
   380  				],
   381  				"valid": true
   382  			},
   383  			{
   384  				"description": "[false, false] from items array is not valid",
   385  				"data": [
   386  					false,
   387  					false
   388  				],
   389  				"valid": false
   390  			},
   391  			{
   392  				"description": "[true, true] from items array is not valid",
   393  				"data": [
   394  					true,
   395  					true
   396  				],
   397  				"valid": false
   398  			},
   399  			{
   400  				"description": "unique array extended from [false, true] is valid",
   401  				"data": [
   402  					false,
   403  					true,
   404  					"foo",
   405  					"bar"
   406  				],
   407  				"valid": true
   408  			},
   409  			{
   410  				"description": "unique array extended from [true, false] is valid",
   411  				"data": [
   412  					true,
   413  					false,
   414  					"foo",
   415  					"bar"
   416  				],
   417  				"valid": true
   418  			},
   419  			{
   420  				"description": "non-unique array extended from [false, true] is not valid",
   421  				"data": [
   422  					false,
   423  					true,
   424  					"foo",
   425  					"foo"
   426  				],
   427  				"valid": false
   428  			},
   429  			{
   430  				"description": "non-unique array extended from [true, false] is not valid",
   431  				"data": [
   432  					true,
   433  					false,
   434  					"foo",
   435  					"foo"
   436  				],
   437  				"valid": false
   438  			}
   439  		]
   440  	},
   441  	{
   442  		"description": "uniqueItems with an array of items and additionalItems=false",
   443  		"schema": {
   444  			"$schema": "https://json-schema.org/draft/2019-09/schema",
   445  			"items": [
   446  				{
   447  					"type": "boolean"
   448  				},
   449  				{
   450  					"type": "boolean"
   451  				}
   452  			],
   453  			"uniqueItems": true,
   454  			"additionalItems": false
   455  		},
   456  		"tests": [
   457  			{
   458  				"description": "[false, true] from items array is valid",
   459  				"data": [
   460  					false,
   461  					true
   462  				],
   463  				"valid": true
   464  			},
   465  			{
   466  				"description": "[true, false] from items array is valid",
   467  				"data": [
   468  					true,
   469  					false
   470  				],
   471  				"valid": true
   472  			},
   473  			{
   474  				"description": "[false, false] from items array is not valid",
   475  				"data": [
   476  					false,
   477  					false
   478  				],
   479  				"valid": false
   480  			},
   481  			{
   482  				"description": "[true, true] from items array is not valid",
   483  				"data": [
   484  					true,
   485  					true
   486  				],
   487  				"valid": false
   488  			},
   489  			{
   490  				"description": "extra items are invalid even if unique",
   491  				"data": [
   492  					false,
   493  					true,
   494  					null
   495  				],
   496  				"valid": false
   497  			}
   498  		]
   499  	},
   500  	{
   501  		"description": "uniqueItems=false validation",
   502  		"schema": {
   503  			"$schema": "https://json-schema.org/draft/2019-09/schema",
   504  			"uniqueItems": false
   505  		},
   506  		"tests": [
   507  			{
   508  				"description": "unique array of integers is valid",
   509  				"data": [
   510  					1,
   511  					2
   512  				],
   513  				"valid": true
   514  			},
   515  			{
   516  				"description": "non-unique array of integers is valid",
   517  				"data": [
   518  					1,
   519  					1
   520  				],
   521  				"valid": true
   522  			},
   523  			{
   524  				"description": "numbers are unique if mathematically unequal",
   525  				"data": [
   526  					1.0,
   527  					1.00,
   528  					1
   529  				],
   530  				"valid": true
   531  			},
   532  			{
   533  				"description": "false is not equal to zero",
   534  				"data": [
   535  					0,
   536  					false
   537  				],
   538  				"valid": true
   539  			},
   540  			{
   541  				"description": "true is not equal to one",
   542  				"data": [
   543  					1,
   544  					true
   545  				],
   546  				"valid": true
   547  			},
   548  			{
   549  				"description": "unique array of objects is valid",
   550  				"data": [
   551  					{
   552  						"foo": "bar"
   553  					},
   554  					{
   555  						"foo": "baz"
   556  					}
   557  				],
   558  				"valid": true
   559  			},
   560  			{
   561  				"description": "non-unique array of objects is valid",
   562  				"data": [
   563  					{
   564  						"foo": "bar"
   565  					},
   566  					{
   567  						"foo": "bar"
   568  					}
   569  				],
   570  				"valid": true
   571  			},
   572  			{
   573  				"description": "unique array of nested objects is valid",
   574  				"data": [
   575  					{
   576  						"foo": {
   577  							"bar": {
   578  								"baz": true
   579  							}
   580  						}
   581  					},
   582  					{
   583  						"foo": {
   584  							"bar": {
   585  								"baz": false
   586  							}
   587  						}
   588  					}
   589  				],
   590  				"valid": true
   591  			},
   592  			{
   593  				"description": "non-unique array of nested objects is valid",
   594  				"data": [
   595  					{
   596  						"foo": {
   597  							"bar": {
   598  								"baz": true
   599  							}
   600  						}
   601  					},
   602  					{
   603  						"foo": {
   604  							"bar": {
   605  								"baz": true
   606  							}
   607  						}
   608  					}
   609  				],
   610  				"valid": true
   611  			},
   612  			{
   613  				"description": "unique array of arrays is valid",
   614  				"data": [
   615  					[
   616  						"foo"
   617  					],
   618  					[
   619  						"bar"
   620  					]
   621  				],
   622  				"valid": true
   623  			},
   624  			{
   625  				"description": "non-unique array of arrays is valid",
   626  				"data": [
   627  					[
   628  						"foo"
   629  					],
   630  					[
   631  						"foo"
   632  					]
   633  				],
   634  				"valid": true
   635  			},
   636  			{
   637  				"description": "1 and true are unique",
   638  				"data": [
   639  					1,
   640  					true
   641  				],
   642  				"valid": true
   643  			},
   644  			{
   645  				"description": "0 and false are unique",
   646  				"data": [
   647  					0,
   648  					false
   649  				],
   650  				"valid": true
   651  			},
   652  			{
   653  				"description": "unique heterogeneous types are valid",
   654  				"data": [
   655  					{},
   656  					[
   657  						1
   658  					],
   659  					true,
   660  					null,
   661  					1
   662  				],
   663  				"valid": true
   664  			},
   665  			{
   666  				"description": "non-unique heterogeneous types are valid",
   667  				"data": [
   668  					{},
   669  					[
   670  						1
   671  					],
   672  					true,
   673  					null,
   674  					{},
   675  					1
   676  				],
   677  				"valid": true
   678  			}
   679  		]
   680  	},
   681  	{
   682  		"description": "uniqueItems=false with an array of items",
   683  		"schema": {
   684  			"$schema": "https://json-schema.org/draft/2019-09/schema",
   685  			"items": [
   686  				{
   687  					"type": "boolean"
   688  				},
   689  				{
   690  					"type": "boolean"
   691  				}
   692  			],
   693  			"uniqueItems": false
   694  		},
   695  		"tests": [
   696  			{
   697  				"description": "[false, true] from items array is valid",
   698  				"data": [
   699  					false,
   700  					true
   701  				],
   702  				"valid": true
   703  			},
   704  			{
   705  				"description": "[true, false] from items array is valid",
   706  				"data": [
   707  					true,
   708  					false
   709  				],
   710  				"valid": true
   711  			},
   712  			{
   713  				"description": "[false, false] from items array is valid",
   714  				"data": [
   715  					false,
   716  					false
   717  				],
   718  				"valid": true
   719  			},
   720  			{
   721  				"description": "[true, true] from items array is valid",
   722  				"data": [
   723  					true,
   724  					true
   725  				],
   726  				"valid": true
   727  			},
   728  			{
   729  				"description": "unique array extended from [false, true] is valid",
   730  				"data": [
   731  					false,
   732  					true,
   733  					"foo",
   734  					"bar"
   735  				],
   736  				"valid": true
   737  			},
   738  			{
   739  				"description": "unique array extended from [true, false] is valid",
   740  				"data": [
   741  					true,
   742  					false,
   743  					"foo",
   744  					"bar"
   745  				],
   746  				"valid": true
   747  			},
   748  			{
   749  				"description": "non-unique array extended from [false, true] is valid",
   750  				"data": [
   751  					false,
   752  					true,
   753  					"foo",
   754  					"foo"
   755  				],
   756  				"valid": true
   757  			},
   758  			{
   759  				"description": "non-unique array extended from [true, false] is valid",
   760  				"data": [
   761  					true,
   762  					false,
   763  					"foo",
   764  					"foo"
   765  				],
   766  				"valid": true
   767  			}
   768  		]
   769  	},
   770  	{
   771  		"description": "uniqueItems=false with an array of items and additionalItems=false",
   772  		"schema": {
   773  			"$schema": "https://json-schema.org/draft/2019-09/schema",
   774  			"items": [
   775  				{
   776  					"type": "boolean"
   777  				},
   778  				{
   779  					"type": "boolean"
   780  				}
   781  			],
   782  			"uniqueItems": false,
   783  			"additionalItems": false
   784  		},
   785  		"tests": [
   786  			{
   787  				"description": "[false, true] from items array is valid",
   788  				"data": [
   789  					false,
   790  					true
   791  				],
   792  				"valid": true
   793  			},
   794  			{
   795  				"description": "[true, false] from items array is valid",
   796  				"data": [
   797  					true,
   798  					false
   799  				],
   800  				"valid": true
   801  			},
   802  			{
   803  				"description": "[false, false] from items array is valid",
   804  				"data": [
   805  					false,
   806  					false
   807  				],
   808  				"valid": true
   809  			},
   810  			{
   811  				"description": "[true, true] from items array is valid",
   812  				"data": [
   813  					true,
   814  					true
   815  				],
   816  				"valid": true
   817  			},
   818  			{
   819  				"description": "extra items are invalid even if unique",
   820  				"data": [
   821  					false,
   822  					true,
   823  					null
   824  				],
   825  				"valid": false
   826  			}
   827  		]
   828  	}
   829  ]