[
	{
		"description": "additionalProperties being false does not allow other properties",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"properties": {
				"foo": {},
				"bar": {}
			},
			"patternProperties": {
				"^v": {}
			},
			"additionalProperties": false
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "no additional properties is valid",
				"data": {
					"foo": 1
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "an additional property is invalid",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": "boom"
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "ignores arrays",
				"data": [
					1,
					2,
					3
				],
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "ignores strings",
				"data": "foobarbaz",
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "ignores other non-objects",
				"data": 12,
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "patternProperties are not additional properties",
				"data": {
					"foo": 1,
					"vroom": 2
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "non-ASCII pattern with additionalProperties",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"patternProperties": {
				"^á": {}
			},
			"additionalProperties": false
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "matching the pattern is valid",
				"data": {
					"ármányos": 2
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "not matching the pattern is invalid",
				"data": {
					"élmény": 2
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "additionalProperties with schema",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"properties": {
				"foo": {},
				"bar": {}
			},
			"additionalProperties": {
				"type": "boolean"
			}
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "no additional properties is valid",
				"data": {
					"foo": 1
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "an additional valid property is valid",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": true
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "an additional invalid property is invalid",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": 12
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "additionalProperties can exist by itself",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"additionalProperties": {
				"type": "boolean"
			}
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "an additional valid property is valid",
				"data": {
					"foo": true
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "an additional invalid property is invalid",
				"data": {
					"foo": 1
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "additionalProperties are allowed by default",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"properties": {
				"foo": {},
				"bar": {}
			}
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "additional properties are allowed",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": true
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "additionalProperties does not look in applicators",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"allOf": [
				{
					"properties": {
						"foo": {}
					}
				}
			],
			"additionalProperties": {
				"type": "boolean"
			}
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "properties defined in allOf are not examined",
				"data": {
					"foo": 1,
					"bar": true
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "additionalProperties with null valued instance properties",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"additionalProperties": {
				"type": "null"
			}
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "allows null values",
				"data": {
					"foo": null
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "additionalProperties with propertyNames",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"propertyNames": {
				"maxLength": 5
			},
			"additionalProperties": {
				"type": "number"
			}
		},
		"skip": {
			"v3": "extract error: cannot compile resulting schema: reference \"strings\" in label expression refers to field against which it would be matched:\n    generated.cue:6:3\n",
			"v3-roundtrip": "inital extract failed"
		},
		"tests": [
			{
				"description": "Valid against both keywords",
				"data": {
					"apple": 4
				},
				"valid": true,
				"skip": {
					"v3": "could not extract schema",
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "Valid against propertyNames, but not additionalProperties",
				"data": {
					"fig": 2,
					"pear": "available"
				},
				"valid": false,
				"skip": {
					"v3": "could not extract schema",
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "dependentSchemas with additionalProperties",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"properties": {
				"foo2": {}
			},
			"dependentSchemas": {
				"foo": {},
				"foo2": {
					"properties": {
						"bar": {}
					}
				}
			},
			"additionalProperties": false
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "additionalProperties doesn't consider dependentSchemas",
				"data": {
					"foo": ""
				},
				"valid": false,
				"skip": {
					"v3": "unexpected success",
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "additionalProperties can't see bar",
				"data": {
					"bar": ""
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "additionalProperties can't see bar even when foo2 is present",
				"data": {
					"foo2": "",
					"bar": ""
				},
				"valid": false,
				"skip": {
					"v3": "unexpected success",
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	}
]
