[url-setters.html]
  type: testharness
  [Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.]
    expected: FAIL

  [Setting <a://example.net>.protocol = 'b']
    expected: FAIL

  [Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased]
    expected: FAIL

  [Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected]
    expected: FAIL

  [Setting <a://example.net>.protocol = '0b' No leading digit]
    expected: FAIL

  [Setting <a://example.net>.protocol = '+b' No leading punctuation]
    expected: FAIL

  [Setting <a://example.net>.protocol = 'bC0+-.']
    expected: FAIL

  [Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable]
    expected: FAIL

  [Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected]
    expected: FAIL

  [Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.]
    expected: FAIL

  [Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [Setting <http://:secret@example.net>.username = 'me']
    expected: FAIL

  [Setting <http://me:secret@example.net>.username = '']
    expected: FAIL

  [Setting <http://example.net>.username = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [Setting <http://example.net>.password = 'secret']
    expected: FAIL

  [Setting <http://:secret@example.net>.password = '']
    expected: FAIL

  [Setting <http://example.net>.password = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.]
    expected: FAIL

  [Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [Setting <http://example.net>.host = '[::0:01\]:2' IPv6 address syntax is normalized]
    expected: FAIL

  [Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [Setting <http://example.net>.hostname = '[::0:01\]' IPv6 address syntax is normalized]
    expected: FAIL

  [Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored]
    expected: FAIL

  [Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored]
    expected: FAIL

  [Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [Setting <http://example.net:8080>.port = '' Port number is unchanged if empty in the new value. Note: this may change, see https://github.com/whatwg/url/pull/113]
    expected: FAIL

  [Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket']
    expected: FAIL

  [Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs]
    expected: FAIL

  [Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs]
    expected: FAIL

  [Setting <a:/>.pathname = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.]
    expected: FAIL

  [Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, except %2E.]
    expected: FAIL

  [Setting <a:/>.search = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.]
    expected: FAIL

  [Setting <a:/>.hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' No percent-encoding at all (!); nuls, tabs, and newlines are removed]
    expected: FAIL

  [Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is]
    expected: FAIL

  [URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [<a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [<area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [URL: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.]
    expected: FAIL

  [<a>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.]
    expected: FAIL

  [<area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.]
    expected: FAIL

  [URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [<a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [<area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special. Note: this may change, see https://github.com/whatwg/url/issues/104]
    expected: FAIL

  [URL: Setting <http://:secret@example.net>.username = 'me']
    expected: FAIL

  [<a>: Setting <http://:secret@example.net>.username = 'me']
    expected: FAIL

  [<area>: Setting <http://:secret@example.net>.username = 'me']
    expected: FAIL

  [URL: Setting <http://me:secret@example.net>.username = '']
    expected: FAIL

  [<a>: Setting <http://me:secret@example.net>.username = '']
    expected: FAIL

  [<area>: Setting <http://me:secret@example.net>.username = '']
    expected: FAIL

  [URL: Setting <http://example.net>.username = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [<a>: Setting <http://example.net>.username = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [<area>: Setting <http://example.net>.username = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [URL: Setting <http://example.net>.password = 'secret']
    expected: FAIL

  [<a>: Setting <http://example.net>.password = 'secret']
    expected: FAIL

  [<area>: Setting <http://example.net>.password = 'secret']
    expected: FAIL

  [URL: Setting <http://:secret@example.net>.password = '']
    expected: FAIL

  [<a>: Setting <http://:secret@example.net>.password = '']
    expected: FAIL

  [<area>: Setting <http://:secret@example.net>.password = '']
    expected: FAIL

  [URL: Setting <http://example.net>.password = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [<a>: Setting <http://example.net>.password = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [<area>: Setting <http://example.net>.password = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.]
    expected: FAIL

  [URL: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.]
    expected: FAIL

  [<a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.]
    expected: FAIL

  [<area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.]
    expected: FAIL

  [URL: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [URL: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [<a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [<area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [URL: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [URL: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [URL: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes]
    expected: FAIL

  [URL: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [<a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [<area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host]
    expected: FAIL

  [URL: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored]
    expected: FAIL

  [<a>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored]
    expected: FAIL

  [<area>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored]
    expected: FAIL

  [URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored]
    expected: FAIL

  [<a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored]
    expected: FAIL

  [<area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored]
    expected: FAIL

  [URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, and it’s invalid in a domain]
    expected: FAIL

  [URL: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error]
    expected: FAIL

  [<a>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path]
    expected: FAIL

  [<area>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path]
    expected: FAIL

  [URL: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket']
    expected: FAIL

  [<a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket']
    expected: FAIL

  [<area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket']
    expected: FAIL

  [URL: Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs]
    expected: FAIL

  [<a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs]
    expected: FAIL

  [<area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs]
    expected: FAIL

  [URL: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs]
    expected: FAIL

  [URL: Setting <a:/>.pathname = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.]
    expected: FAIL

  [<a>: Setting <a:/>.pathname = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.]
    expected: FAIL

  [<area>: Setting <a:/>.pathname = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.]
    expected: FAIL

  [URL: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, except %2E.]
    expected: FAIL

  [<a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, except %2E.]
    expected: FAIL

  [<area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, except %2E.]
    expected: FAIL

  [URL: Setting <a:/>.search = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.]
    expected: FAIL

  [<a>: Setting <a:/>.search = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.]
    expected: FAIL

  [<area>: Setting <a:/>.search = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.]
    expected: FAIL

  [URL: Setting <a:/>.hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' No percent-encoding at all (!); nuls, tabs, and newlines are removed]
    expected: FAIL

  [<a>: Setting <a:/>.hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' No percent-encoding at all (!); nuls, tabs, and newlines are removed]
    expected: FAIL

  [<area>: Setting <a:/>.hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' No percent-encoding at all (!); nuls, tabs, and newlines are removed]
    expected: FAIL

  [URL: Setting <a:/>.hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' Simple percent-encoding; nuls, tabs, and newlines are removed]
    expected: FAIL

  [<a>: Setting <a:/>.hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' Simple percent-encoding; nuls, tabs, and newlines are removed]
    expected: FAIL

  [<area>: Setting <a:/>.hash = '\x00\x01\t\n\r\x1f !"#$%&'()*+,-./09:;<=>?@AZ[\\\]^_`az{|}~Éé' Simple percent-encoding; nuls, tabs, and newlines are removed]
    expected: FAIL

  [URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special]
    expected: FAIL

  [<a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special]
    expected: FAIL

  [<area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special]
    expected: FAIL

  [URL: Setting <https://example.net>.protocol = 's']
    expected: FAIL

  [<a>: Setting <https://example.net>.protocol = 's']
    expected: FAIL

  [<area>: Setting <https://example.net>.protocol = 's']
    expected: FAIL

  [URL: Setting <ftp://example.net>.protocol = 'test']
    expected: FAIL

  [<a>: Setting <ftp://example.net>.protocol = 'test']
    expected: FAIL

  [<area>: Setting <ftp://example.net>.protocol = 'test']
    expected: FAIL

  [URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special]
    expected: FAIL

  [<a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special]
    expected: FAIL

  [<area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special]
    expected: FAIL

  [URL: Setting <ssh://me@example.net>.protocol = 'gopher']
    expected: FAIL

  [<a>: Setting <ssh://me@example.net>.protocol = 'gopher']
    expected: FAIL

  [<area>: Setting <ssh://me@example.net>.protocol = 'gopher']
    expected: FAIL

  [URL: Setting <ssh://me@example.net>.protocol = 'file']
    expected: FAIL

  [<a>: Setting <ssh://me@example.net>.protocol = 'file']
    expected: FAIL

  [<area>: Setting <ssh://me@example.net>.protocol = 'file']
    expected: FAIL

  [URL: Setting <nonsense:///test>.protocol = 'https']
    expected: FAIL

  [<a>: Setting <nonsense:///test>.protocol = 'https']
    expected: FAIL

  [<area>: Setting <nonsense:///test>.protocol = 'https']
    expected: FAIL

  [URL: Setting <file://test/>.username = 'test']
    expected: FAIL

  [<a>: Setting <file://test/>.username = 'test']
    expected: FAIL

  [<area>: Setting <file://test/>.username = 'test']
    expected: FAIL

  [URL: Setting <file://test/>.password = 'test']
    expected: FAIL

  [<a>: Setting <file://test/>.password = 'test']
    expected: FAIL

  [<area>: Setting <file://test/>.password = 'test']
    expected: FAIL

  [URL: Setting <sc://x/>.host = '\x00' Non-special scheme]
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '\x00' Non-special scheme]
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '\x00' Non-special scheme]
    expected: FAIL

  [URL: Setting <sc://x/>.host = '\t']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '\t']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '\t']
    expected: FAIL

  [URL: Setting <sc://x/>.host = '\n']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '\n']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '\n']
    expected: FAIL

  [URL: Setting <sc://x/>.host = '\r']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '\r']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '\r']
    expected: FAIL

  [URL: Setting <sc://x/>.host = ' ']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = ' ']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = ' ']
    expected: FAIL

  [URL: Setting <sc://x/>.host = '#']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '#']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '#']
    expected: FAIL

  [URL: Setting <sc://x/>.host = '/']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '/']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '/']
    expected: FAIL

  [URL: Setting <sc://x/>.host = '?']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '?']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '?']
    expected: FAIL

  [URL: Setting <sc://x/>.host = '@']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = '@']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = '@']
    expected: FAIL

  [URL: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/path>.host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts]
    expected: FAIL

  [URL: Setting <file://y/>.host = 'x:123']
    expected: FAIL

  [<a>: Setting <file://y/>.host = 'x:123']
    expected: FAIL

  [<area>: Setting <file://y/>.host = 'x:123']
    expected: FAIL

  [URL: Setting <sc://test@test/>.host = '']
    expected: FAIL

  [<a>: Setting <sc://test@test/>.host = '']
    expected: FAIL

  [<area>: Setting <sc://test@test/>.host = '']
    expected: FAIL

  [URL: Setting <sc://test:12/>.host = '']
    expected: FAIL

  [<a>: Setting <sc://test:12/>.host = '']
    expected: FAIL

  [<area>: Setting <sc://test:12/>.host = '']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '\x00' Non-special scheme]
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '\x00' Non-special scheme]
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '\x00' Non-special scheme]
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '\t']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '\t']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '\t']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '\n']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '\n']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '\n']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '\r']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '\r']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '\r']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = ' ']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = ' ']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = ' ']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '#']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '#']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '#']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '/']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '/']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '/']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '?']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '?']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '?']
    expected: FAIL

  [URL: Setting <sc://x/>.hostname = '@']
    expected: FAIL

  [<a>: Setting <sc://x/>.hostname = '@']
    expected: FAIL

  [<area>: Setting <sc://x/>.hostname = '@']
    expected: FAIL

  [URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts]
    expected: FAIL

  [<a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts]
    expected: FAIL

  [<area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts]
    expected: FAIL

  [URL: Setting <file://y/>.hostname = 'x:123']
    expected: FAIL

  [<a>: Setting <file://y/>.hostname = 'x:123']
    expected: FAIL

  [<area>: Setting <file://y/>.hostname = 'x:123']
    expected: FAIL

  [URL: Setting <sc://test@test/>.hostname = '']
    expected: FAIL

  [<a>: Setting <sc://test@test/>.hostname = '']
    expected: FAIL

  [<area>: Setting <sc://test@test/>.hostname = '']
    expected: FAIL

  [URL: Setting <sc://test:12/>.hostname = '']
    expected: FAIL

  [<a>: Setting <sc://test:12/>.hostname = '']
    expected: FAIL

  [<area>: Setting <sc://test:12/>.hostname = '']
    expected: FAIL

  [URL: Setting <file://test/>.port = '12']
    expected: FAIL

  [<a>: Setting <file://test/>.port = '12']
    expected: FAIL

  [<area>: Setting <file://test/>.port = '12']
    expected: FAIL

  [URL: Setting <sc://x/>.port = '12']
    expected: FAIL

  [<a>: Setting <sc://x/>.port = '12']
    expected: FAIL

  [<area>: Setting <sc://x/>.port = '12']
    expected: FAIL

  [URL: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme]
    expected: FAIL

  [<a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme]
    expected: FAIL

  [<area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme]
    expected: FAIL

  [URL: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme]
    expected: FAIL

  [<a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme]
    expected: FAIL

  [<area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme]
    expected: FAIL

  [URL: Setting <javascript://x/>.username = 'wario']
    expected: FAIL

  [<a>: Setting <javascript://x/>.username = 'wario']
    expected: FAIL

  [<area>: Setting <javascript://x/>.username = 'wario']
    expected: FAIL

  [URL: Setting <javascript://x/>.password = 'bowser']
    expected: FAIL

  [<a>: Setting <javascript://x/>.password = 'bowser']
    expected: FAIL

  [<area>: Setting <javascript://x/>.password = 'bowser']
    expected: FAIL

  [URL: Setting <sc://x/>.host = 'ß']
    expected: FAIL

  [<a>: Setting <sc://x/>.host = 'ß']
    expected: FAIL

  [<area>: Setting <sc://x/>.host = 'ß']
    expected: FAIL

  [URL: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing]
    expected: FAIL

  [<a>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing]
    expected: FAIL

  [<area>: Setting <https://x/>.host = 'ß' IDNA Nontransitional_Processing]
    expected: FAIL

  [URL: Setting <javascript://x/>.port = '12']
    expected: FAIL

  [<a>: Setting <javascript://x/>.port = '12']
    expected: FAIL

  [<area>: Setting <javascript://x/>.port = '12']
    expected: FAIL

  [URL: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file]
    expected: FAIL

  [<a>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file]
    expected: FAIL

  [<area>: Setting <http://test@example.net>.protocol = 'file' Can’t switch from URL containing username/password/port to file]
    expected: FAIL

  [URL: Setting <gopher://example.net:1234>.protocol = 'file']
    expected: FAIL

  [<a>: Setting <gopher://example.net:1234>.protocol = 'file']
    expected: FAIL

  [<area>: Setting <gopher://example.net:1234>.protocol = 'file']
    expected: FAIL

  [URL: Setting <wss://x:x@example.net:1234>.protocol = 'file']
    expected: FAIL

  [<a>: Setting <wss://x:x@example.net:1234>.protocol = 'file']
    expected: FAIL

  [<area>: Setting <wss://x:x@example.net:1234>.protocol = 'file']
    expected: FAIL

  [<a>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host]
    expected: FAIL

  [<area>: Setting <file://localhost/>.protocol = 'http' Can’t switch from file URL with no host]
    expected: FAIL

  [URL: Setting <file:///test>.protocol = 'gopher']
    expected: FAIL

  [<a>: Setting <file:///test>.protocol = 'gopher']
    expected: FAIL

  [<area>: Setting <file:///test>.protocol = 'gopher']
    expected: FAIL

  [<a>: Setting <file:>.protocol = 'wss']
    expected: FAIL

  [<area>: Setting <file:>.protocol = 'wss']
    expected: FAIL

  [URL: Setting <file://hi/path>.protocol = 's']
    expected: FAIL

  [<a>: Setting <file://hi/path>.protocol = 's']
    expected: FAIL

  [<area>: Setting <file://hi/path>.protocol = 's']
    expected: FAIL

  [URL: Setting <ssh://example.net>.protocol = 'file']
    expected: FAIL

  [<a>: Setting <ssh://example.net>.protocol = 'file']
    expected: FAIL

  [<area>: Setting <ssh://example.net>.protocol = 'file']
    expected: FAIL

  [URL: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error]
    expected: FAIL

  [<a>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error]
    expected: FAIL

  [<area>: Setting <non-special://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error]
    expected: FAIL

  [URL: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes]
    expected: FAIL

  [<a>: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes]
    expected: FAIL

  [<area>: Setting <file://monkey/>.pathname = '\\\\' File URLs and (back)slashes]
    expected: FAIL

  [URL: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes]
    expected: FAIL

  [<a>: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes]
    expected: FAIL

  [<area>: Setting <file:///unicorn>.pathname = '//\\/' File URLs and (back)slashes]
    expected: FAIL

  [URL: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes]
    expected: FAIL

  [<a>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes]
    expected: FAIL

  [<area>: Setting <file:///unicorn>.pathname = '//monkey/..//' File URLs and (back)slashes]
    expected: FAIL

