{"tests": [

{"description": "contextmenu points to valid ID earlier",
"input": "<menu id=a><span contextmenu=a>",
"fail-if": "id-does-not-exist"},

{"description": "contextmenu points to valid ID later",
"input": "<span contextmenu=a><menu id=a>",
"fail-if": "id-does-not-exist"},

{"description": "contextmenu points to non-existent ID",
"input": "<span contextmenu=a>",
"fail-unless": "id-does-not-exist"},

{"description": "contextmenu points to ID on non-menu element",
"input": "<span id=a><span contextmenu=a>",
"fail-unless": "contextmenu-must-point-to-menu"},

{"description": "uppercase contextmenu points to ID on non-menu element",
"input": "<span id=a><span CONTEXTMENU=a>",
"fail-unless": "contextmenu-must-point-to-menu"},

{"description": "valid ID 'a'",
"input": "<span contextmenu=a>",
"fail-if": "invalid-attribute-value"},

{"description": "valid ID '1'",
"input": "<span contextmenu=1>",
"fail-if": "invalid-attribute-value"},

{"description": "wacky but valid ID",
"input": "<span contextmenu='<html><head><title>a</title></head><body><p>b</p></body></html>'>",
"fail-if": "invalid-attribute-value"},

{"description": "invalid blank ID",
"input": "<span id>",
"fail-unless": "attribute-value-can-not-be-blank"},

{"description": "invalid blank ID with quotes",
"input": "<span contextmenu=''>",
"fail-unless": "attribute-value-can-not-be-blank"},

{"description": "invalid ID because of leading space",
"input": "<span contextmenu=' a'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of trailing space",
"input": "<span contextmenu='a '>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of space in value",
"input": "<span contextmenu='a b'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of leading tab",
"input": "<span contextmenu='\ta'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of trailing tab",
"input": "<span contextmenu='a\t'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of tab in value",
"input": "<span contextmenu='a\tb'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of leading LF",
"input": "<span contextmenu='\na'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of trailing LF",
"input": "<span contextmenu='a\n'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of LF in value",
"input": "<span contextmenu='a\nb'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of leading LT",
"input": "<span contextmenu='\u000Ba'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of trailing LT",
"input": "<span contextmenu='a\u000B'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of LT in value",
"input": "<span contextmenu='a\u000Bb'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of leading FF",
"input": "<span contextmenu='\u000Ca'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of trailing FF",
"input": "<span contextmenu='a\u000C'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of FF in value",
"input": "<span contextmenu='a\u000Cb'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of leading CR",
"input": "<span contextmenu='\ra'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of trailing CR",
"input": "<span contextmenu='a\r'>",
"fail-unless": "space-in-id"},

{"description": "invalid ID because of CR in value",
"input": "<span contextmenu='a\rb'>",
"fail-unless": "space-in-id"}

]}
