[
	{
		"description": "required validation",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"properties": {
				"foo": {},
				"bar": {}
			},
			"required": [
				"foo"
			]
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "present required property is valid",
				"data": {
					"foo": 1
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "non-present required property is invalid",
				"data": {
					"bar": 1
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "ignores arrays",
				"data": [],
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "ignores strings",
				"data": "",
				"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": "required default validation",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"properties": {
				"foo": {}
			}
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "not required by default",
				"data": {},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "required with empty array",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"properties": {
				"foo": {}
			},
			"required": []
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "property not required",
				"data": {},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "required with escaped characters",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"required": [
				"foo\nbar",
				"foo\"bar",
				"foo\\bar",
				"foo\rbar",
				"foo\tbar",
				"foo\fbar"
			]
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "object with all properties present is valid",
				"data": {
					"foo\nbar": 1,
					"foo\"bar": 1,
					"foo\\bar": 1,
					"foo\rbar": 1,
					"foo\tbar": 1,
					"foo\fbar": 1
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "object with some properties missing is invalid",
				"data": {
					"foo\nbar": "1",
					"foo\"bar": "1"
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	},
	{
		"description": "required properties whose names are Javascript object property names",
		"comment": "Ensure JS implementations don't universally consider e.g. __proto__ to always be present in an object.",
		"schema": {
			"$schema": "https://json-schema.org/draft/2019-09/schema",
			"required": [
				"__proto__",
				"toString",
				"constructor"
			]
		},
		"skip": {
			"v3-roundtrip": "generation only supported in version https://json-schema.org/draft/2020-12/schema"
		},
		"tests": [
			{
				"description": "ignores arrays",
				"data": [],
				"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": "none of the properties mentioned",
				"data": {},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "__proto__ present",
				"data": {
					"__proto__": "foo"
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "toString present",
				"data": {
					"toString": {
						"length": 37
					}
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "constructor present",
				"data": {
					"constructor": {
						"length": 37
					}
				},
				"valid": false,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			},
			{
				"description": "all present",
				"data": {
					"__proto__": 12,
					"toString": {
						"length": "foo"
					},
					"constructor": 37
				},
				"valid": true,
				"skip": {
					"v3-roundtrip": "could not extract schema"
				}
			}
		]
	}
]
