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