[
	{
		"description": "additionalProperties being false does not allow other properties",
		"schema": {
			"properties": {
				"foo": {},
				"bar": {}
			},
			"patternProperties": {
				"^v": {}
			},
			"additionalProperties": false
		},
		"tests": [
			{
				"description": "no additional properties is valid",
				"data": {
					"foo": 1
				},
				"valid": true
			},
			{
				"description": "an additional property is invalid",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": "boom"
				},
				"valid": false
			},
			{
				"description": "ignores arrays",
				"data": [
					1,
					2,
					3
				],
				"valid": true
			},
			{
				"description": "ignores strings",
				"data": "foobarbaz",
				"valid": true
			},
			{
				"description": "ignores other non-objects",
				"data": 12,
				"valid": true
			},
			{
				"description": "patternProperties are not additional properties",
				"data": {
					"foo": 1,
					"vroom": 2
				},
				"valid": true
			}
		]
	},
	{
		"description": "non-ASCII pattern with additionalProperties",
		"schema": {
			"patternProperties": {
				"^á": {}
			},
			"additionalProperties": false
		},
		"tests": [
			{
				"description": "matching the pattern is valid",
				"data": {
					"ármányos": 2
				},
				"valid": true
			},
			{
				"description": "not matching the pattern is invalid",
				"data": {
					"élmény": 2
				},
				"valid": false
			}
		]
	},
	{
		"description": "additionalProperties with schema",
		"schema": {
			"properties": {
				"foo": {},
				"bar": {}
			},
			"additionalProperties": {
				"type": "boolean"
			}
		},
		"tests": [
			{
				"description": "no additional properties is valid",
				"data": {
					"foo": 1
				},
				"valid": true
			},
			{
				"description": "an additional valid property is valid",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": true
				},
				"valid": true
			},
			{
				"description": "an additional invalid property is invalid",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": 12
				},
				"valid": false
			}
		]
	},
	{
		"description": "additionalProperties can exist by itself",
		"schema": {
			"additionalProperties": {
				"type": "boolean"
			}
		},
		"tests": [
			{
				"description": "an additional valid property is valid",
				"data": {
					"foo": true
				},
				"valid": true
			},
			{
				"description": "an additional invalid property is invalid",
				"data": {
					"foo": 1
				},
				"valid": false
			}
		]
	},
	{
		"description": "additionalProperties are allowed by default",
		"schema": {
			"properties": {
				"foo": {},
				"bar": {}
			}
		},
		"tests": [
			{
				"description": "additional properties are allowed",
				"data": {
					"foo": 1,
					"bar": 2,
					"quux": true
				},
				"valid": true
			}
		]
	},
	{
		"description": "additionalProperties does not look in applicators",
		"schema": {
			"allOf": [
				{
					"properties": {
						"foo": {}
					}
				}
			],
			"additionalProperties": {
				"type": "boolean"
			}
		},
		"tests": [
			{
				"description": "properties defined in allOf are not examined",
				"data": {
					"foo": 1,
					"bar": true
				},
				"valid": false
			}
		]
	},
	{
		"description": "additionalProperties with null valued instance properties",
		"schema": {
			"additionalProperties": {
				"type": "null"
			}
		},
		"tests": [
			{
				"description": "allows null values",
				"data": {
					"foo": null
				},
				"valid": true
			}
		]
	}
]
