| Index: LayoutTests/fast/domurl/url-searchparams.html
|
| diff --git a/LayoutTests/fast/domurl/url-searchparams.html b/LayoutTests/fast/domurl/url-searchparams.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..edbeaa6acf1640f478bbdf70e8a1347e5a93e916
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/domurl/url-searchparams.html
|
| @@ -0,0 +1,154 @@
|
| +<!DOCTYPE html>
|
| +<link rel="help" href="http://url.spec.whatwg.org/#interface-urlsearchparams">
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
| +<script>
|
| +test(function() {
|
| + assert_true("URLSearchParams" in window);
|
| + assert_true("toString" in URLSearchParams.prototype);
|
| + assert_true("append" in URLSearchParams.prototype);
|
| + assert_true("delete" in URLSearchParams.prototype);
|
| + assert_true("get" in URLSearchParams.prototype);
|
| + assert_true("getAll" in URLSearchParams.prototype);
|
| + assert_true("has" in URLSearchParams.prototype);
|
| + assert_true("set" in URLSearchParams.prototype);
|
| +}, 'URLSearchParams interface');
|
| +
|
| +test(function() {
|
| + try {
|
| + var urls = URLSearchParams();
|
| + assert_unreached("Invoking URLSearchParams as a function did not throw an exception.");
|
| + } catch (e) {
|
| + assert_true(e instanceof TypeError);
|
| + }
|
| + var urls = new URLSearchParams("");
|
| + assert_true(urls != null, "constructor returned non-null value.");
|
| + assert_equals(urls.__proto__, URLSearchParams.prototype, "expected URLSearchParams.prototype as prototype.");
|
| +}, 'URLSearchParams constructor, empty.');
|
| +
|
| +test(function() {
|
| + var urls = new URLSearchParams("a=b");
|
| + assert_true(urls != null, "constructor returned non-null value.");
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + assert_false(urls.has("b"), "Search params object has not got name 'b'");
|
| +
|
| + var urls = new URLSearchParams("a=b&c");
|
| + assert_true(urls != null, "constructor returned non-null value.");
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + assert_true(urls.has("c"), "Search params object has name 'c'");
|
| +
|
| + var urls = new URLSearchParams("&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8");
|
| + assert_true(urls != null, "constructor returned non-null value.");
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + assert_true(urls.has("a b"), "Search params object has name 'a b'");
|
| + assert_true(urls.has(" "), "Search params object has name ' '");
|
| + assert_false(urls.has("c"), "Search params object did not have the name 'c'");
|
| + assert_true(urls.has(" c"), "Search params object has name ' c'");
|
| + assert_true(urls.has("møø"), "Search params object has name 'møø'");
|
| +
|
| +}, 'URLSearchParams constructor, string.');
|
| +
|
| +test(function() {
|
| + var seed = new URLSearchParams("a=b&c=d");
|
| + var urls = new URLSearchParams(seed);
|
| + assert_true(urls != null, "constructor returned non-null value.");
|
| + assert_equals(urls.get("a"), "b");
|
| + assert_equals(urls.get("c"), "d");
|
| + assert_false(urls.has("d"));
|
| + // The name-value pairs are copied when created; later updates
|
| + // should not be observable.
|
| + seed.append("e", "f");
|
| + assert_false(urls.has("e"));
|
| +
|
| + urls.append("g", "h");
|
| + assert_false(seed.has("g"));
|
| +
|
| +}, 'URLSearchParams constructor, object.');
|
| +
|
| +test(function() {
|
| + var urls = new URLSearchParams("first=second&third&&");
|
| + assert_true(urls != null, "constructor returned non-null value.");
|
| + assert_true(urls.has("first"), "Search params object has name 'first'");
|
| + assert_equals(urls.get("first"), "second", "Search params object has name 'first' with value 'second'");
|
| + assert_equals(urls.get("third"), "", "Search params object has name 'third' with the empty value.");
|
| + assert_equals(urls.get("fourth"), null, "Search params object has no 'fourth' name and value.");
|
| +}, 'URLSearchParams.get');
|
| +
|
| +test(function() {
|
| + var urls = new URLSearchParams();
|
| + urls.append("first", 1);
|
| + urls.append("second", 2);
|
| + urls.append("third", "");
|
| + urls.append("first", 10);
|
| + assert_true(urls.has("first"), "Search params object has name 'first'");
|
| + assert_equals(urls.get("first"), "1", "Search params object has name 'first' with value '1'");
|
| + assert_equals(urls.get("second"), "2", "Search params object has name 'second' with value '2'");
|
| + assert_equals(urls.get("third"), "", "Search params object has name 'second' with value '2'");
|
| + urls.append("first", 10);
|
| + assert_equals(urls.get("first"), "1", "Search params object has name 'first' with value '1'");
|
| +}, 'URLSearchParams.append');
|
| +
|
| +test(function() {
|
| + var urls = new URLSearchParams();
|
| + urls.append("first", 1);
|
| + assert_true(urls.has("first"), "Search params object has name 'first'");
|
| + assert_equals(urls.get("first"), "1", "Search params object has name 'first' with value '1'");
|
| + urls.delete("first");
|
| + assert_false(urls.has("first"), "Search params object has no 'first' name");
|
| + urls.append("first", 1);
|
| + urls.append("first", 10);
|
| + urls.delete("first");
|
| + assert_false(urls.has("first"), "Search params object has no 'first' name");
|
| +}, 'URLSearchParams.delete');
|
| +
|
| +test(function() {
|
| + var urls = new URLSearchParams("a=b&c=d&&");
|
| + urls.append("first", 1);
|
| + urls.append("first", 2);
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + assert_true(urls.has("c"), "Search params object has name 'c'");
|
| + assert_true(urls.has("first"), "Search params object has name 'first'");
|
| + assert_false(urls.has("d"), "Search params object has no name 'd'");
|
| + urls.delete("first");
|
| + assert_false(urls.has("first"), "Search params object has no name 'first'");
|
| +}, 'URLSearchParams.has');
|
| +
|
| +test(function() {
|
| + var urls = new URLSearchParams("a=1&a=2&a=3");
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + assert_equals(urls.get("a"), "1", "Search params object has name 'a' with value '1'");
|
| + urls.set("first", 4);
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + assert_equals(urls.get("a"), "1", "Search params object has name 'a' with value '1'");
|
| + urls.set("a", 4);
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + assert_equals(urls.get("a"), "4", "Search params object has name 'a' with value '4'");
|
| +}, 'URLSearchParams.set');
|
| +
|
| +test(function() {
|
| + var urls = new URLSearchParams("a=1&a=2&a=3&a");
|
| + assert_true(urls.has("a"), "Search params object has name 'a'");
|
| + var matches = urls.getAll("a");
|
| + assert_true(matches && matches.length == 4, "Search params object has values for name 'a'");
|
| + assert_array_equals(matches, ["1", "2", "3", ""], "Search params object has expected name 'a' values");
|
| + urls.set("a", "one");
|
| + assert_equals(urls.get("a"), "one", "Search params object has name 'a' with value 'one'");
|
| + var matches = urls.getAll("a");
|
| + assert_true(matches && matches.length == 1, "Search params object has values for name 'a'");
|
| + assert_array_equals(matches, ["one"], "Search params object has expected name 'a' values");
|
| +}, 'URLSearchParams.getAll');
|
| +
|
| +test(function() {
|
| + var urls;
|
| + urls = new URLSearchParams("a=b&c=d&&e&&");
|
| + assert_equals(urls.toString(), "a=b&c=d&e");
|
| +
|
| + urls = new URLSearchParams("a = b &a=b&c=d%20");
|
| + assert_equals(urls.toString(), "a+=+b+&a=b&c=d+");
|
| +
|
| + // The lone '=' does not survive the roundtrip.
|
| + urls = new URLSearchParams("a=&a=b");
|
| + assert_equals(urls.toString(), "a&a=b");
|
| +}, 'URLSearchParams.toString');
|
| +
|
| +</script>
|
|
|