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

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

Issue 143313002: Implement URLSearchParams. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: More tests + ref count unattached URLSearchParams objects 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-constructor.html
diff --git a/LayoutTests/fast/domurl/url-searchparams-constructor.html b/LayoutTests/fast/domurl/url-searchparams-constructor.html
new file mode 100644
index 0000000000000000000000000000000000000000..538b772d4def26431c37a89ad9b80ee33ea0e93d
--- /dev/null
+++ b/LayoutTests/fast/domurl/url-searchparams-constructor.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="help" href="http://url.spec.whatwg.org/#urlsearchparams">
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script>
+function assert_typeerror(f, msg) {
arv (Not doing code reviews) 2014/01/22 16:12:05 assert_type_error
+ try {
+ f();
+ assert_unreached("Expected to throw a TypeError");
arv (Not doing code reviews) 2014/01/22 16:12:05 This is a common error (maybe you even got it from
sof 2014/01/22 19:27:09 Thanks, bug was all mine :), fixed. (Would be nice
+ } catch (e) {
+ assert_true(e instanceof TypeError);
+ if (msg)
+ assert_equals(e.message, msg);
+ }
+}
+
+test(function() {
+ var params = new URLSearchParams();
+ assert_equals(params + "", "");
+ params = new URLSearchParams("");
+ assert_equals(params + "", "");
+ params = new URLSearchParams("a=b");
+ assert_equals(params + "", "a=b");
+ params = new URLSearchParams(params);
+ assert_equals(params + "", "a=b");
+}, "Basic URLSearchParams construction");
+
+test(function() {
+ assert_typeerror(function () { URLSearchParams(); }, "Failed to construct 'URLSearchParams': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
+ assert_typeerror(function () { new URLSearchParams({}); }, "Failed to construct 'URLSearchParams': Argument not a string nor a URLSearchParams object.");
+ assert_typeerror(function () { new URLSearchParams(Date); }, "Failed to construct 'URLSearchParams': Argument not a string nor a URLSearchParams object.");
+ var params = new URLSearchParams("");
+ assert_true(params != null, "constructor returned non-null value.");
+ assert_equals(params.__proto__, URLSearchParams.prototype, "expected URLSearchParams.prototype as prototype.");
+}, "URLSearchParams constructor, empty.");
+
+test(function() {
+ var params = new URLSearchParams("a=b");
+ assert_true(params != null, "constructor returned non-null value.");
+ assert_true(params.has("a"), "Search params object has name 'a'");
+ assert_false(params.has("b"), "Search params object has not got name 'b'");
+
+ var params = new URLSearchParams("a=b&c");
+ assert_true(params != null, "constructor returned non-null value.");
+ assert_true(params.has("a"), "Search params object has name 'a'");
+ assert_true(params.has("c"), "Search params object has name 'c'");
+
+ var params = new URLSearchParams("&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8");
+ assert_true(params != null, "constructor returned non-null value.");
+ assert_true(params.has("a"), "Search params object has name 'a'");
+ assert_true(params.has("a b"), "Search params object has name 'a b'");
+ assert_true(params.has(" "), "Search params object has name ' '");
+ assert_false(params.has("c"), "Search params object did not have the name 'c'");
+ assert_true(params.has(" c"), "Search params object has name ' c'");
+ assert_true(params.has("møø"), "Search params object has name 'møø'");
+
+}, "URLSearchParams constructor, string.");
+
+test(function() {
+ var seed = new URLSearchParams("a=b&c=d");
+ var params = new URLSearchParams(seed);
+ assert_true(params != null, "constructor returned non-null value.");
+ assert_equals(params.get("a"), "b");
+ assert_equals(params.get("c"), "d");
+ assert_false(params.has("d"));
+ // The name-value pairs are copied when created; later updates
+ // should not be observable.
+ seed.append("e", "f");
+ assert_false(params.has("e"));
+
+ params.append("g", "h");
+ assert_false(seed.has("g"));
+
+}, "URLSearchParams constructor, object.");
+
+test(function() {
+ var params = new URLSearchParams("a=b+c");
+ assert_equals(params.get("a"), "b c");
+ params = new URLSearchParams("a+b=c");
+ assert_equals(params.get("a b"), "c");
+}, "Parse +");
+
+test(function() {
+ var params = new URLSearchParams("a=b c");
+ assert_equals(params.get("a"), "b c");
+ params = new URLSearchParams("a b=c");
+ assert_equals(params.get("a b"), "c");
+}, "Parse space");
+
+test(function() {
+ var params = new URLSearchParams("a=b%20c");
+ assert_equals(params.get("a"), "b c");
+ params = new URLSearchParams("a%20b=c");
+ assert_equals(params.get("a b"), "c");
+}, "Parse %20");
+
+test(function() {
+ var params = new URLSearchParams("a=b\0c");
+ assert_equals(params.get("a"), "b\0c");
+ params = new URLSearchParams("a\0b=c");
+ assert_equals(params.get("a\0b"), "c");
+}, "Parse \\0");
+
+test(function() {
+ var params = new URLSearchParams("a=b%00c");
+ assert_equals(params.get("a"), "b\0c");
+ params = new URLSearchParams("a%00b=c");
+ assert_equals(params.get("a\0b"), "c");
+}, "Parse %00");
+
+test(function() {
+ var params = new URLSearchParams("a=b\u2384");
+ assert_equals(params.get("a"), "b\u2384");
+ params = new URLSearchParams("a\u2384b=c");
+ assert_equals(params.get("a\u2384b"), "c");
+}, "Parse \u2384"); // Unicode Character "COMPOSITION SYMBOL" (U+2384)
+
+test(function() {
+ var params = new URLSearchParams("a=b%e2%8e%84");
+ assert_equals(params.get("a"), "b\u2384");
+ params = new URLSearchParams("a%e2%8e%84b=c");
+ assert_equals(params.get("a\u2384b"), "c");
+}, "Parse %e2%8e%84"); // Unicode Character "COMPOSITION SYMBOL" (U+2384)
+
+test(function() {
+ var params = new URLSearchParams('a=b\uD83D\uDCA9c');
+ assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
+ params = new URLSearchParams('a\uD83D\uDCA9b=c');
+ assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
+}, 'Parse \uD83D\uDCA9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
+
+test(function() {
+ var params = new URLSearchParams('a=b%f0%9f%92%a9c');
+ assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
+ params = new URLSearchParams('a%f0%9f%92%a9b=c');
+ assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
+}, 'Parse %f0%9f%92%a9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
+</script>

Powered by Google App Engine
This is Rietveld 408576698