<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description('Test setting the search attribute of the URL in HTMLAnchorElement .');

var a = document.createElement('a');

debug("Set search without '?'");
a.href = "https://www.mydomain.com/path/?key=value";
a.search = "value=key";
shouldBe("a.href", "'https://www.mydomain.com/path/?value=key'");

// IE8 does not encode spaces in search string
debug("Set search that starts with '?' and contains spaces");
a.href = "https://www.mydomain.com/path/?key=value";
a.search = "?val ue= key?";
shouldBe("a.href", "'https://www.mydomain.com/path/?val%20ue=%20key?'");

debug("Set search to a malformed URL");
a.href = "s:www.mydomain.com/path/";
a.search = "%";
shouldBe("a.href", "'s:www.mydomain.com/path/?%'");

// IE8 throws "The URL is invalid" exception.
debug("Set search containing '#'");
try {
a.href = "https://www.mydomain.com/path/?key=value#hash";
a.search = "?value#key";
shouldBe("a.href", "'https://www.mydomain.com/path/?value%23key#hash'");
} catch(e) {
debug("Exception: " + e.description);
}

debug("Set search to a malformed URL");
a.href = "bad:/|/url";
a.search = "?value=key";
shouldBe("a.href", "'bad:/|/url?value=key'");

debug("Set search to null");
a.href = "https://www.mydomain.com/path/?key=value";
a.search = null;
shouldBe("a.href", "'https://www.mydomain.com/path/?null'");

debug("Set search to empty string");
a.href = "https://www.mydomain.com/path/?key=value";
a.search = "";
shouldBe("a.href", "'https://www.mydomain.com/path/'");
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
