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> |