OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <link rel="help" href="http://url.spec.whatwg.org/#interface-urlsearchparams"> |
| 3 <script src="../../resources/testharness.js"></script> |
| 4 <script src="../../resources/testharnessreport.js"></script> |
| 5 <script> |
| 6 test(function() { |
| 7 assert_true("URLSearchParams" in window); |
| 8 assert_true("toString" in URLSearchParams.prototype); |
| 9 assert_true("append" in URLSearchParams.prototype); |
| 10 assert_true("delete" in URLSearchParams.prototype); |
| 11 assert_true("get" in URLSearchParams.prototype); |
| 12 assert_true("getAll" in URLSearchParams.prototype); |
| 13 assert_true("has" in URLSearchParams.prototype); |
| 14 assert_true("set" in URLSearchParams.prototype); |
| 15 }, 'URLSearchParams interface'); |
| 16 |
| 17 test(function() { |
| 18 try { |
| 19 var urls = URLSearchParams(); |
| 20 assert_unreached("Invoking URLSearchParams as a function did not throw a
n exception."); |
| 21 } catch (e) { |
| 22 assert_true(e instanceof TypeError); |
| 23 } |
| 24 var urls = new URLSearchParams(""); |
| 25 assert_true(urls != null, "constructor returned non-null value."); |
| 26 assert_equals(urls.__proto__, URLSearchParams.prototype, "expected URLSearch
Params.prototype as prototype."); |
| 27 }, 'URLSearchParams constructor, empty.'); |
| 28 |
| 29 test(function() { |
| 30 var urls = new URLSearchParams("a=b"); |
| 31 assert_true(urls != null, "constructor returned non-null value."); |
| 32 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 33 assert_false(urls.has("b"), "Search params object has not got name 'b'"); |
| 34 |
| 35 var urls = new URLSearchParams("a=b&c"); |
| 36 assert_true(urls != null, "constructor returned non-null value."); |
| 37 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 38 assert_true(urls.has("c"), "Search params object has name 'c'"); |
| 39 |
| 40 var urls = new URLSearchParams("&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8"); |
| 41 assert_true(urls != null, "constructor returned non-null value."); |
| 42 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 43 assert_true(urls.has("a b"), "Search params object has name 'a b'"); |
| 44 assert_true(urls.has(" "), "Search params object has name ' '"); |
| 45 assert_false(urls.has("c"), "Search params object did not have the name 'c'"
); |
| 46 assert_true(urls.has(" c"), "Search params object has name ' c'"); |
| 47 assert_true(urls.has("møø"), "Search params object has name 'møø'"); |
| 48 |
| 49 }, 'URLSearchParams constructor, string.'); |
| 50 |
| 51 test(function() { |
| 52 var seed = new URLSearchParams("a=b&c=d"); |
| 53 var urls = new URLSearchParams(seed); |
| 54 assert_true(urls != null, "constructor returned non-null value."); |
| 55 assert_equals(urls.get("a"), "b"); |
| 56 assert_equals(urls.get("c"), "d"); |
| 57 assert_false(urls.has("d")); |
| 58 // The name-value pairs are copied when created; later updates |
| 59 // should not be observable. |
| 60 seed.append("e", "f"); |
| 61 assert_false(urls.has("e")); |
| 62 |
| 63 urls.append("g", "h"); |
| 64 assert_false(seed.has("g")); |
| 65 |
| 66 }, 'URLSearchParams constructor, object.'); |
| 67 |
| 68 test(function() { |
| 69 var urls = new URLSearchParams("first=second&third&&"); |
| 70 assert_true(urls != null, "constructor returned non-null value."); |
| 71 assert_true(urls.has("first"), "Search params object has name 'first'"); |
| 72 assert_equals(urls.get("first"), "second", "Search params object has name 'f
irst' with value 'second'"); |
| 73 assert_equals(urls.get("third"), "", "Search params object has name 'third'
with the empty value."); |
| 74 assert_equals(urls.get("fourth"), null, "Search params object has no 'fourth
' name and value."); |
| 75 }, 'URLSearchParams.get'); |
| 76 |
| 77 test(function() { |
| 78 var urls = new URLSearchParams(); |
| 79 urls.append("first", 1); |
| 80 urls.append("second", 2); |
| 81 urls.append("third", ""); |
| 82 urls.append("first", 10); |
| 83 assert_true(urls.has("first"), "Search params object has name 'first'"); |
| 84 assert_equals(urls.get("first"), "1", "Search params object has name 'first'
with value '1'"); |
| 85 assert_equals(urls.get("second"), "2", "Search params object has name 'secon
d' with value '2'"); |
| 86 assert_equals(urls.get("third"), "", "Search params object has name 'second'
with value '2'"); |
| 87 urls.append("first", 10); |
| 88 assert_equals(urls.get("first"), "1", "Search params object has name 'first'
with value '1'"); |
| 89 }, 'URLSearchParams.append'); |
| 90 |
| 91 test(function() { |
| 92 var urls = new URLSearchParams(); |
| 93 urls.append("first", 1); |
| 94 assert_true(urls.has("first"), "Search params object has name 'first'"); |
| 95 assert_equals(urls.get("first"), "1", "Search params object has name 'first'
with value '1'"); |
| 96 urls.delete("first"); |
| 97 assert_false(urls.has("first"), "Search params object has no 'first' name"); |
| 98 urls.append("first", 1); |
| 99 urls.append("first", 10); |
| 100 urls.delete("first"); |
| 101 assert_false(urls.has("first"), "Search params object has no 'first' name"); |
| 102 }, 'URLSearchParams.delete'); |
| 103 |
| 104 test(function() { |
| 105 var urls = new URLSearchParams("a=b&c=d&&"); |
| 106 urls.append("first", 1); |
| 107 urls.append("first", 2); |
| 108 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 109 assert_true(urls.has("c"), "Search params object has name 'c'"); |
| 110 assert_true(urls.has("first"), "Search params object has name 'first'"); |
| 111 assert_false(urls.has("d"), "Search params object has no name 'd'"); |
| 112 urls.delete("first"); |
| 113 assert_false(urls.has("first"), "Search params object has no name 'first'"); |
| 114 }, 'URLSearchParams.has'); |
| 115 |
| 116 test(function() { |
| 117 var urls = new URLSearchParams("a=1&a=2&a=3"); |
| 118 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 119 assert_equals(urls.get("a"), "1", "Search params object has name 'a' with va
lue '1'"); |
| 120 urls.set("first", 4); |
| 121 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 122 assert_equals(urls.get("a"), "1", "Search params object has name 'a' with va
lue '1'"); |
| 123 urls.set("a", 4); |
| 124 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 125 assert_equals(urls.get("a"), "4", "Search params object has name 'a' with va
lue '4'"); |
| 126 }, 'URLSearchParams.set'); |
| 127 |
| 128 test(function() { |
| 129 var urls = new URLSearchParams("a=1&a=2&a=3&a"); |
| 130 assert_true(urls.has("a"), "Search params object has name 'a'"); |
| 131 var matches = urls.getAll("a"); |
| 132 assert_true(matches && matches.length == 4, "Search params object has values
for name 'a'"); |
| 133 assert_array_equals(matches, ["1", "2", "3", ""], "Search params object has
expected name 'a' values"); |
| 134 urls.set("a", "one"); |
| 135 assert_equals(urls.get("a"), "one", "Search params object has name 'a' with
value 'one'"); |
| 136 var matches = urls.getAll("a"); |
| 137 assert_true(matches && matches.length == 1, "Search params object has values
for name 'a'"); |
| 138 assert_array_equals(matches, ["one"], "Search params object has expected nam
e 'a' values"); |
| 139 }, 'URLSearchParams.getAll'); |
| 140 |
| 141 test(function() { |
| 142 var urls; |
| 143 urls = new URLSearchParams("a=b&c=d&&e&&"); |
| 144 assert_equals(urls.toString(), "a=b&c=d&e"); |
| 145 |
| 146 urls = new URLSearchParams("a = b &a=b&c=d%20"); |
| 147 assert_equals(urls.toString(), "a+=+b+&a=b&c=d+"); |
| 148 |
| 149 // The lone '=' does not survive the roundtrip. |
| 150 urls = new URLSearchParams("a=&a=b"); |
| 151 assert_equals(urls.toString(), "a&a=b"); |
| 152 }, 'URLSearchParams.toString'); |
| 153 |
| 154 </script> |
OLD | NEW |