Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Unified Diff: LayoutTests/fast/domurl/url-searchparams.html

Issue 143313002: Implement URLSearchParams. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Handle dependency between URLUtils interfaces and URLSearchParams Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698