Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 <!DOCTYPE html> | |
| 2 <meta charset="utf-8"> | |
| 3 <link rel="help" href="http://url.spec.whatwg.org/#urlsearchparams"> | |
| 4 <script src="../../resources/testharness.js"></script> | |
| 5 <script src="../../resources/testharnessreport.js"></script> | |
| 6 <script> | |
| 7 function assert_typeerror(f, msg) { | |
|
arv (Not doing code reviews)
2014/01/22 16:12:05
assert_type_error
| |
| 8 try { | |
| 9 f(); | |
| 10 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
| |
| 11 } catch (e) { | |
| 12 assert_true(e instanceof TypeError); | |
| 13 if (msg) | |
| 14 assert_equals(e.message, msg); | |
| 15 } | |
| 16 } | |
| 17 | |
| 18 test(function() { | |
| 19 var params = new URLSearchParams(); | |
| 20 assert_equals(params + "", ""); | |
| 21 params = new URLSearchParams(""); | |
| 22 assert_equals(params + "", ""); | |
| 23 params = new URLSearchParams("a=b"); | |
| 24 assert_equals(params + "", "a=b"); | |
| 25 params = new URLSearchParams(params); | |
| 26 assert_equals(params + "", "a=b"); | |
| 27 }, "Basic URLSearchParams construction"); | |
| 28 | |
| 29 test(function() { | |
| 30 assert_typeerror(function () { URLSearchParams(); }, "Failed to construct 'U RLSearchParams': Please use the 'new' operator, this DOM object constructor cann ot be called as a function."); | |
| 31 assert_typeerror(function () { new URLSearchParams({}); }, "Failed to constr uct 'URLSearchParams': Argument not a string nor a URLSearchParams object."); | |
| 32 assert_typeerror(function () { new URLSearchParams(Date); }, "Failed to cons truct 'URLSearchParams': Argument not a string nor a URLSearchParams object."); | |
| 33 var params = new URLSearchParams(""); | |
| 34 assert_true(params != null, "constructor returned non-null value."); | |
| 35 assert_equals(params.__proto__, URLSearchParams.prototype, "expected URLSear chParams.prototype as prototype."); | |
| 36 }, "URLSearchParams constructor, empty."); | |
| 37 | |
| 38 test(function() { | |
| 39 var params = new URLSearchParams("a=b"); | |
| 40 assert_true(params != null, "constructor returned non-null value."); | |
| 41 assert_true(params.has("a"), "Search params object has name 'a'"); | |
| 42 assert_false(params.has("b"), "Search params object has not got name 'b'"); | |
| 43 | |
| 44 var params = new URLSearchParams("a=b&c"); | |
| 45 assert_true(params != null, "constructor returned non-null value."); | |
| 46 assert_true(params.has("a"), "Search params object has name 'a'"); | |
| 47 assert_true(params.has("c"), "Search params object has name 'c'"); | |
| 48 | |
| 49 var params = new URLSearchParams("&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8"); | |
| 50 assert_true(params != null, "constructor returned non-null value."); | |
| 51 assert_true(params.has("a"), "Search params object has name 'a'"); | |
| 52 assert_true(params.has("a b"), "Search params object has name 'a b'"); | |
| 53 assert_true(params.has(" "), "Search params object has name ' '"); | |
| 54 assert_false(params.has("c"), "Search params object did not have the name 'c '"); | |
| 55 assert_true(params.has(" c"), "Search params object has name ' c'"); | |
| 56 assert_true(params.has("møø"), "Search params object has name 'møø'"); | |
| 57 | |
| 58 }, "URLSearchParams constructor, string."); | |
| 59 | |
| 60 test(function() { | |
| 61 var seed = new URLSearchParams("a=b&c=d"); | |
| 62 var params = new URLSearchParams(seed); | |
| 63 assert_true(params != null, "constructor returned non-null value."); | |
| 64 assert_equals(params.get("a"), "b"); | |
| 65 assert_equals(params.get("c"), "d"); | |
| 66 assert_false(params.has("d")); | |
| 67 // The name-value pairs are copied when created; later updates | |
| 68 // should not be observable. | |
| 69 seed.append("e", "f"); | |
| 70 assert_false(params.has("e")); | |
| 71 | |
| 72 params.append("g", "h"); | |
| 73 assert_false(seed.has("g")); | |
| 74 | |
| 75 }, "URLSearchParams constructor, object."); | |
| 76 | |
| 77 test(function() { | |
| 78 var params = new URLSearchParams("a=b+c"); | |
| 79 assert_equals(params.get("a"), "b c"); | |
| 80 params = new URLSearchParams("a+b=c"); | |
| 81 assert_equals(params.get("a b"), "c"); | |
| 82 }, "Parse +"); | |
| 83 | |
| 84 test(function() { | |
| 85 var params = new URLSearchParams("a=b c"); | |
| 86 assert_equals(params.get("a"), "b c"); | |
| 87 params = new URLSearchParams("a b=c"); | |
| 88 assert_equals(params.get("a b"), "c"); | |
| 89 }, "Parse space"); | |
| 90 | |
| 91 test(function() { | |
| 92 var params = new URLSearchParams("a=b%20c"); | |
| 93 assert_equals(params.get("a"), "b c"); | |
| 94 params = new URLSearchParams("a%20b=c"); | |
| 95 assert_equals(params.get("a b"), "c"); | |
| 96 }, "Parse %20"); | |
| 97 | |
| 98 test(function() { | |
| 99 var params = new URLSearchParams("a=b\0c"); | |
| 100 assert_equals(params.get("a"), "b\0c"); | |
| 101 params = new URLSearchParams("a\0b=c"); | |
| 102 assert_equals(params.get("a\0b"), "c"); | |
| 103 }, "Parse \\0"); | |
| 104 | |
| 105 test(function() { | |
| 106 var params = new URLSearchParams("a=b%00c"); | |
| 107 assert_equals(params.get("a"), "b\0c"); | |
| 108 params = new URLSearchParams("a%00b=c"); | |
| 109 assert_equals(params.get("a\0b"), "c"); | |
| 110 }, "Parse %00"); | |
| 111 | |
| 112 test(function() { | |
| 113 var params = new URLSearchParams("a=b\u2384"); | |
| 114 assert_equals(params.get("a"), "b\u2384"); | |
| 115 params = new URLSearchParams("a\u2384b=c"); | |
| 116 assert_equals(params.get("a\u2384b"), "c"); | |
| 117 }, "Parse \u2384"); // Unicode Character "COMPOSITION SYMBOL" (U+2384) | |
| 118 | |
| 119 test(function() { | |
| 120 var params = new URLSearchParams("a=b%e2%8e%84"); | |
| 121 assert_equals(params.get("a"), "b\u2384"); | |
| 122 params = new URLSearchParams("a%e2%8e%84b=c"); | |
| 123 assert_equals(params.get("a\u2384b"), "c"); | |
| 124 }, "Parse %e2%8e%84"); // Unicode Character "COMPOSITION SYMBOL" (U+2384) | |
| 125 | |
| 126 test(function() { | |
| 127 var params = new URLSearchParams('a=b\uD83D\uDCA9c'); | |
| 128 assert_equals(params.get('a'), 'b\uD83D\uDCA9c'); | |
| 129 params = new URLSearchParams('a\uD83D\uDCA9b=c'); | |
| 130 assert_equals(params.get('a\uD83D\uDCA9b'), 'c'); | |
| 131 }, 'Parse \uD83D\uDCA9'); // Unicode Character 'PILE OF POO' (U+1F4A9) | |
| 132 | |
| 133 test(function() { | |
| 134 var params = new URLSearchParams('a=b%f0%9f%92%a9c'); | |
| 135 assert_equals(params.get('a'), 'b\uD83D\uDCA9c'); | |
| 136 params = new URLSearchParams('a%f0%9f%92%a9b=c'); | |
| 137 assert_equals(params.get('a\uD83D\uDCA9b'), 'c'); | |
| 138 }, 'Parse %f0%9f%92%a9'); // Unicode Character 'PILE OF POO' (U+1F4A9) | |
| 139 </script> | |
| OLD | NEW |