Chromium Code Reviews| 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> |