[
	{
		"description": "uniqueItems validation",
		"schema": {
			"$schema": "https://json-schema.org/draft/2020-12/schema",
			"uniqueItems": true
		},
		"tests": [
			{
				"description": "unique array of integers is valid",
				"data": [
					1,
					2
				],
				"valid": true
			},
			{
				"description": "non-unique array of integers is invalid",
				"data": [
					1,
					1
				],
				"valid": false
			},
			{
				"description": "non-unique array of more than two integers is invalid",
				"data": [
					1,
					2,
					1
				],
				"valid": false
			},
			{
				"description": "numbers are unique if mathematically unequal",
				"data": [
					1.0,
					1.00,
					1
				],
				"valid": false
			},
			{
				"description": "false is not equal to zero",
				"data": [
					0,
					false
				],
				"valid": true
			},
			{
				"description": "true is not equal to one",
				"data": [
					1,
					true
				],
				"valid": true
			},
			{
				"description": "unique array of strings is valid",
				"data": [
					"foo",
					"bar",
					"baz"
				],
				"valid": true
			},
			{
				"description": "non-unique array of strings is invalid",
				"data": [
					"foo",
					"bar",
					"foo"
				],
				"valid": false
			},
			{
				"description": "unique array of objects is valid",
				"data": [
					{
						"foo": "bar"
					},
					{
						"foo": "baz"
					}
				],
				"valid": true
			},
			{
				"description": "non-unique array of objects is invalid",
				"data": [
					{
						"foo": "bar"
					},
					{
						"foo": "bar"
					}
				],
				"valid": false
			},
			{
				"description": "property order of array of objects is ignored",
				"data": [
					{
						"foo": "bar",
						"bar": "foo"
					},
					{
						"bar": "foo",
						"foo": "bar"
					}
				],
				"valid": false
			},
			{
				"description": "unique array of nested objects is valid",
				"data": [
					{
						"foo": {
							"bar": {
								"baz": true
							}
						}
					},
					{
						"foo": {
							"bar": {
								"baz": false
							}
						}
					}
				],
				"valid": true
			},
			{
				"description": "non-unique array of nested objects is invalid",
				"data": [
					{
						"foo": {
							"bar": {
								"baz": true
							}
						}
					},
					{
						"foo": {
							"bar": {
								"baz": true
							}
						}
					}
				],
				"valid": false
			},
			{
				"description": "unique array of arrays is valid",
				"data": [
					[
						"foo"
					],
					[
						"bar"
					]
				],
				"valid": true
			},
			{
				"description": "non-unique array of arrays is invalid",
				"data": [
					[
						"foo"
					],
					[
						"foo"
					]
				],
				"valid": false
			},
			{
				"description": "non-unique array of more than two arrays is invalid",
				"data": [
					[
						"foo"
					],
					[
						"bar"
					],
					[
						"foo"
					]
				],
				"valid": false
			},
			{
				"description": "1 and true are unique",
				"data": [
					1,
					true
				],
				"valid": true
			},
			{
				"description": "0 and false are unique",
				"data": [
					0,
					false
				],
				"valid": true
			},
			{
				"description": "[1] and [true] are unique",
				"data": [
					[
						1
					],
					[
						true
					]
				],
				"valid": true
			},
			{
				"description": "[0] and [false] are unique",
				"data": [
					[
						0
					],
					[
						false
					]
				],
				"valid": true
			},
			{
				"description": "nested [1] and [true] are unique",
				"data": [
					[
						[
							1
						],
						"foo"
					],
					[
						[
							true
						],
						"foo"
					]
				],
				"valid": true
			},
			{
				"description": "nested [0] and [false] are unique",
				"data": [
					[
						[
							0
						],
						"foo"
					],
					[
						[
							false
						],
						"foo"
					]
				],
				"valid": true
			},
			{
				"description": "unique heterogeneous types are valid",
				"data": [
					{},
					[
						1
					],
					true,
					null,
					1,
					"{}"
				],
				"valid": true
			},
			{
				"description": "non-unique heterogeneous types are invalid",
				"data": [
					{},
					[
						1
					],
					true,
					null,
					{},
					1
				],
				"valid": false
			},
			{
				"description": "different objects are unique",
				"data": [
					{
						"a": 1,
						"b": 2
					},
					{
						"a": 2,
						"b": 1
					}
				],
				"valid": true
			},
			{
				"description": "objects are non-unique despite key order",
				"data": [
					{
						"a": 1,
						"b": 2
					},
					{
						"b": 2,
						"a": 1
					}
				],
				"valid": false
			},
			{
				"description": "{\"a\": false} and {\"a\": 0} are unique",
				"data": [
					{
						"a": false
					},
					{
						"a": 0
					}
				],
				"valid": true
			},
			{
				"description": "{\"a\": true} and {\"a\": 1} are unique",
				"data": [
					{
						"a": true
					},
					{
						"a": 1
					}
				],
				"valid": true
			}
		]
	},
	{
		"description": "uniqueItems with an array of items",
		"schema": {
			"$schema": "https://json-schema.org/draft/2020-12/schema",
			"prefixItems": [
				{
					"type": "boolean"
				},
				{
					"type": "boolean"
				}
			],
			"uniqueItems": true
		},
		"tests": [
			{
				"description": "[false, true] from items array is valid",
				"data": [
					false,
					true
				],
				"valid": true
			},
			{
				"description": "[true, false] from items array is valid",
				"data": [
					true,
					false
				],
				"valid": true
			},
			{
				"description": "[false, false] from items array is not valid",
				"data": [
					false,
					false
				],
				"valid": false
			},
			{
				"description": "[true, true] from items array is not valid",
				"data": [
					true,
					true
				],
				"valid": false
			},
			{
				"description": "unique array extended from [false, true] is valid",
				"data": [
					false,
					true,
					"foo",
					"bar"
				],
				"valid": true
			},
			{
				"description": "unique array extended from [true, false] is valid",
				"data": [
					true,
					false,
					"foo",
					"bar"
				],
				"valid": true
			},
			{
				"description": "non-unique array extended from [false, true] is not valid",
				"data": [
					false,
					true,
					"foo",
					"foo"
				],
				"valid": false
			},
			{
				"description": "non-unique array extended from [true, false] is not valid",
				"data": [
					true,
					false,
					"foo",
					"foo"
				],
				"valid": false
			}
		]
	},
	{
		"description": "uniqueItems with an array of items and additionalItems=false",
		"schema": {
			"$schema": "https://json-schema.org/draft/2020-12/schema",
			"prefixItems": [
				{
					"type": "boolean"
				},
				{
					"type": "boolean"
				}
			],
			"uniqueItems": true,
			"items": false
		},
		"tests": [
			{
				"description": "[false, true] from items array is valid",
				"data": [
					false,
					true
				],
				"valid": true,
				"skip": {
					"v2": "7 errors in empty disjunction:\nconflicting values [false,true] and {...} (mismatched types list and struct):\n    generated.cue:5:1\n    generated.cue:5:85\n    instance.json:1:1\nconflicting values bool and [false,true] (mismatched types bool and list):\n    generated.cue:5:8\n    instance.json:1:1\nconflicting values null and [false,true] (mismatched types null and list):\n    generated.cue:5:1\n    instance.json:1:1\nconflicting values number and [false,true] (mismatched types number and list):\n    generated.cue:5:15\n    instance.json:1:1\nconflicting values string and [false,true] (mismatched types string and list):\n    generated.cue:5:24\n    instance.json:1:1\ninvalid value [_|_(explicit error (_|_ literal) in source),_|_(explicit error (_|_ literal) in source)] (does not satisfy list.UniqueItems): equal values at position 0 and 1:\n    generated.cue:5:33\n    generated.cue:1:1\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:5:78\n",
					"v3": "6 errors in empty disjunction:\nconflicting values [false,true] and bool (mismatched types list and bool):\n    generated.cue:5:8\n    instance.json:1:1\nconflicting values [false,true] and null (mismatched types list and null):\n    generated.cue:5:1\n    instance.json:1:1\nconflicting values [false,true] and number (mismatched types list and number):\n    generated.cue:5:15\n    instance.json:1:1\nconflicting values [false,true] and string (mismatched types list and string):\n    generated.cue:5:24\n    instance.json:1:1\nconflicting values [false,true] and {...} (mismatched types list and struct):\n    generated.cue:5:85\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:5:78\n"
				}
			},
			{
				"description": "[true, false] from items array is valid",
				"data": [
					true,
					false
				],
				"valid": true,
				"skip": {
					"v2": "7 errors in empty disjunction:\nconflicting values [true,false] and {...} (mismatched types list and struct):\n    generated.cue:5:1\n    generated.cue:5:85\n    instance.json:1:1\nconflicting values bool and [true,false] (mismatched types bool and list):\n    generated.cue:5:8\n    instance.json:1:1\nconflicting values null and [true,false] (mismatched types null and list):\n    generated.cue:5:1\n    instance.json:1:1\nconflicting values number and [true,false] (mismatched types number and list):\n    generated.cue:5:15\n    instance.json:1:1\nconflicting values string and [true,false] (mismatched types string and list):\n    generated.cue:5:24\n    instance.json:1:1\ninvalid value [_|_(explicit error (_|_ literal) in source),_|_(explicit error (_|_ literal) in source)] (does not satisfy list.UniqueItems): equal values at position 0 and 1:\n    generated.cue:5:33\n    generated.cue:1:1\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:5:78\n",
					"v3": "6 errors in empty disjunction:\nconflicting values [true,false] and bool (mismatched types list and bool):\n    generated.cue:5:8\n    instance.json:1:1\nconflicting values [true,false] and null (mismatched types list and null):\n    generated.cue:5:1\n    instance.json:1:1\nconflicting values [true,false] and number (mismatched types list and number):\n    generated.cue:5:15\n    instance.json:1:1\nconflicting values [true,false] and string (mismatched types list and string):\n    generated.cue:5:24\n    instance.json:1:1\nconflicting values [true,false] and {...} (mismatched types list and struct):\n    generated.cue:5:85\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:5:78\n"
				}
			},
			{
				"description": "[false, false] from items array is not valid",
				"data": [
					false,
					false
				],
				"valid": false
			},
			{
				"description": "[true, true] from items array is not valid",
				"data": [
					true,
					true
				],
				"valid": false
			},
			{
				"description": "extra items are invalid even if unique",
				"data": [
					false,
					true,
					null
				],
				"valid": false
			}
		]
	},
	{
		"description": "uniqueItems=false validation",
		"schema": {
			"$schema": "https://json-schema.org/draft/2020-12/schema",
			"uniqueItems": false
		},
		"tests": [
			{
				"description": "unique array of integers is valid",
				"data": [
					1,
					2
				],
				"valid": true
			},
			{
				"description": "non-unique array of integers is valid",
				"data": [
					1,
					1
				],
				"valid": true
			},
			{
				"description": "numbers are unique if mathematically unequal",
				"data": [
					1.0,
					1.00,
					1
				],
				"valid": true
			},
			{
				"description": "false is not equal to zero",
				"data": [
					0,
					false
				],
				"valid": true
			},
			{
				"description": "true is not equal to one",
				"data": [
					1,
					true
				],
				"valid": true
			},
			{
				"description": "unique array of objects is valid",
				"data": [
					{
						"foo": "bar"
					},
					{
						"foo": "baz"
					}
				],
				"valid": true
			},
			{
				"description": "non-unique array of objects is valid",
				"data": [
					{
						"foo": "bar"
					},
					{
						"foo": "bar"
					}
				],
				"valid": true
			},
			{
				"description": "unique array of nested objects is valid",
				"data": [
					{
						"foo": {
							"bar": {
								"baz": true
							}
						}
					},
					{
						"foo": {
							"bar": {
								"baz": false
							}
						}
					}
				],
				"valid": true
			},
			{
				"description": "non-unique array of nested objects is valid",
				"data": [
					{
						"foo": {
							"bar": {
								"baz": true
							}
						}
					},
					{
						"foo": {
							"bar": {
								"baz": true
							}
						}
					}
				],
				"valid": true
			},
			{
				"description": "unique array of arrays is valid",
				"data": [
					[
						"foo"
					],
					[
						"bar"
					]
				],
				"valid": true
			},
			{
				"description": "non-unique array of arrays is valid",
				"data": [
					[
						"foo"
					],
					[
						"foo"
					]
				],
				"valid": true
			},
			{
				"description": "1 and true are unique",
				"data": [
					1,
					true
				],
				"valid": true
			},
			{
				"description": "0 and false are unique",
				"data": [
					0,
					false
				],
				"valid": true
			},
			{
				"description": "unique heterogeneous types are valid",
				"data": [
					{},
					[
						1
					],
					true,
					null,
					1
				],
				"valid": true
			},
			{
				"description": "non-unique heterogeneous types are valid",
				"data": [
					{},
					[
						1
					],
					true,
					null,
					{},
					1
				],
				"valid": true
			}
		]
	},
	{
		"description": "uniqueItems=false with an array of items",
		"schema": {
			"$schema": "https://json-schema.org/draft/2020-12/schema",
			"prefixItems": [
				{
					"type": "boolean"
				},
				{
					"type": "boolean"
				}
			],
			"uniqueItems": false
		},
		"tests": [
			{
				"description": "[false, true] from items array is valid",
				"data": [
					false,
					true
				],
				"valid": true
			},
			{
				"description": "[true, false] from items array is valid",
				"data": [
					true,
					false
				],
				"valid": true
			},
			{
				"description": "[false, false] from items array is valid",
				"data": [
					false,
					false
				],
				"valid": true
			},
			{
				"description": "[true, true] from items array is valid",
				"data": [
					true,
					true
				],
				"valid": true
			},
			{
				"description": "unique array extended from [false, true] is valid",
				"data": [
					false,
					true,
					"foo",
					"bar"
				],
				"valid": true
			},
			{
				"description": "unique array extended from [true, false] is valid",
				"data": [
					true,
					false,
					"foo",
					"bar"
				],
				"valid": true
			},
			{
				"description": "non-unique array extended from [false, true] is valid",
				"data": [
					false,
					true,
					"foo",
					"foo"
				],
				"valid": true
			},
			{
				"description": "non-unique array extended from [true, false] is valid",
				"data": [
					true,
					false,
					"foo",
					"foo"
				],
				"valid": true
			}
		]
	},
	{
		"description": "uniqueItems=false with an array of items and additionalItems=false",
		"schema": {
			"$schema": "https://json-schema.org/draft/2020-12/schema",
			"prefixItems": [
				{
					"type": "boolean"
				},
				{
					"type": "boolean"
				}
			],
			"uniqueItems": false,
			"items": false
		},
		"tests": [
			{
				"description": "[false, true] from items array is valid",
				"data": [
					false,
					true
				],
				"valid": true,
				"skip": {
					"v2": "6 errors in empty disjunction:\nconflicting values [false,true] and {...} (mismatched types list and struct):\n    generated.cue:3:1\n    generated.cue:3:64\n    instance.json:1:1\nconflicting values bool and [false,true] (mismatched types bool and list):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values null and [false,true] (mismatched types null and list):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values number and [false,true] (mismatched types number and list):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values string and [false,true] (mismatched types string and list):\n    generated.cue:3:24\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n",
					"v3": "6 errors in empty disjunction:\nconflicting values [false,true] and bool (mismatched types list and bool):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values [false,true] and null (mismatched types list and null):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values [false,true] and number (mismatched types list and number):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values [false,true] and string (mismatched types list and string):\n    generated.cue:3:24\n    instance.json:1:1\nconflicting values [false,true] and {...} (mismatched types list and struct):\n    generated.cue:3:64\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n"
				}
			},
			{
				"description": "[true, false] from items array is valid",
				"data": [
					true,
					false
				],
				"valid": true,
				"skip": {
					"v2": "6 errors in empty disjunction:\nconflicting values [true,false] and {...} (mismatched types list and struct):\n    generated.cue:3:1\n    generated.cue:3:64\n    instance.json:1:1\nconflicting values bool and [true,false] (mismatched types bool and list):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values null and [true,false] (mismatched types null and list):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values number and [true,false] (mismatched types number and list):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values string and [true,false] (mismatched types string and list):\n    generated.cue:3:24\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n",
					"v3": "6 errors in empty disjunction:\nconflicting values [true,false] and bool (mismatched types list and bool):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values [true,false] and null (mismatched types list and null):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values [true,false] and number (mismatched types list and number):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values [true,false] and string (mismatched types list and string):\n    generated.cue:3:24\n    instance.json:1:1\nconflicting values [true,false] and {...} (mismatched types list and struct):\n    generated.cue:3:64\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n"
				}
			},
			{
				"description": "[false, false] from items array is valid",
				"data": [
					false,
					false
				],
				"valid": true,
				"skip": {
					"v2": "6 errors in empty disjunction:\nconflicting values [false,false] and {...} (mismatched types list and struct):\n    generated.cue:3:1\n    generated.cue:3:64\n    instance.json:1:1\nconflicting values bool and [false,false] (mismatched types bool and list):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values null and [false,false] (mismatched types null and list):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values number and [false,false] (mismatched types number and list):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values string and [false,false] (mismatched types string and list):\n    generated.cue:3:24\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n",
					"v3": "6 errors in empty disjunction:\nconflicting values [false,false] and bool (mismatched types list and bool):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values [false,false] and null (mismatched types list and null):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values [false,false] and number (mismatched types list and number):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values [false,false] and string (mismatched types list and string):\n    generated.cue:3:24\n    instance.json:1:1\nconflicting values [false,false] and {...} (mismatched types list and struct):\n    generated.cue:3:64\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n"
				}
			},
			{
				"description": "[true, true] from items array is valid",
				"data": [
					true,
					true
				],
				"valid": true,
				"skip": {
					"v2": "6 errors in empty disjunction:\nconflicting values [true,true] and {...} (mismatched types list and struct):\n    generated.cue:3:1\n    generated.cue:3:64\n    instance.json:1:1\nconflicting values bool and [true,true] (mismatched types bool and list):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values null and [true,true] (mismatched types null and list):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values number and [true,true] (mismatched types number and list):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values string and [true,true] (mismatched types string and list):\n    generated.cue:3:24\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n",
					"v3": "6 errors in empty disjunction:\nconflicting values [true,true] and bool (mismatched types list and bool):\n    generated.cue:3:8\n    instance.json:1:1\nconflicting values [true,true] and null (mismatched types list and null):\n    generated.cue:3:1\n    instance.json:1:1\nconflicting values [true,true] and number (mismatched types list and number):\n    generated.cue:3:15\n    instance.json:1:1\nconflicting values [true,true] and string (mismatched types list and string):\n    generated.cue:3:24\n    instance.json:1:1\nconflicting values [true,true] and {...} (mismatched types list and struct):\n    generated.cue:3:64\n    instance.json:1:1\nexplicit error (_|_ literal) in source:\n    generated.cue:3:57\n"
				}
			},
			{
				"description": "extra items are invalid even if unique",
				"data": [
					false,
					true,
					null
				],
				"valid": false
			}
		]
	}
]
