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

Side by Side 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: Avoid custom constructor + test updates 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 unified diff | Download patch
OLDNEW
(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_type_error(f, msg) {
8 var e;
9 try {
10 f();
11 } catch (ex) {
12 e = ex;
13 }
14 assert_true(e instanceof TypeError, "Expected a TypeError");
15 if (msg)
16 assert_equals(e.message, msg);
17 }
18
19 test(function() {
20 var params = new URLSearchParams();
21 assert_equals(params + "", "");
22 params = new URLSearchParams("");
23 assert_equals(params + "", "");
24 params = new URLSearchParams("a=b");
25 assert_equals(params + "", "a=b");
26 params = new URLSearchParams(params);
27 assert_equals(params + "", "a=b");
28 }, "Basic URLSearchParams construction");
29
30 test(function() {
31 assert_type_error(function () { URLSearchParams(); }, "Failed to construct ' URLSearchParams': Please use the 'new' operator, this DOM object constructor can not be called as a function.");
32 assert_type_error(function () { new URLSearchParams(DOMException.prototype); });
33
34 var params = new URLSearchParams("");
35 assert_true(params != null, "constructor returned non-null value.");
36 assert_equals(params.__proto__, URLSearchParams.prototype, "expected URLSear chParams.prototype as prototype.");
37
38 params = new URLSearchParams({});
39 assert_equals(params + "", "%5Bobject+Object%5D=");
40 }, "URLSearchParams constructor, empty.");
41
42 test(function() {
43 var params = new URLSearchParams("a=b");
44 assert_true(params != null, "constructor returned non-null value.");
45 assert_true(params.has("a"), "Search params object has name 'a'");
46 assert_false(params.has("b"), "Search params object has not got name 'b'");
47
48 var params = new URLSearchParams("a=b&c");
49 assert_true(params != null, "constructor returned non-null value.");
50 assert_true(params.has("a"), "Search params object has name 'a'");
51 assert_true(params.has("c"), "Search params object has name 'c'");
52
53 var params = new URLSearchParams("&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8");
54 assert_true(params != null, "constructor returned non-null value.");
55 assert_true(params.has("a"), "Search params object has name 'a'");
56 assert_true(params.has("a b"), "Search params object has name 'a b'");
57 assert_true(params.has(" "), "Search params object has name ' '");
58 assert_false(params.has("c"), "Search params object did not have the name 'c '");
59 assert_true(params.has(" c"), "Search params object has name ' c'");
60 assert_true(params.has("møø"), "Search params object has name 'møø'");
61
62 }, "URLSearchParams constructor, string.");
63
64 test(function() {
65 var seed = new URLSearchParams("a=b&c=d");
66 var params = new URLSearchParams(seed);
67 assert_true(params != null, "constructor returned non-null value.");
68 assert_equals(params.get("a"), "b");
69 assert_equals(params.get("c"), "d");
70 assert_false(params.has("d"));
71 // The name-value pairs are copied when created; later updates
72 // should not be observable.
73 seed.append("e", "f");
74 assert_false(params.has("e"));
75
76 params.append("g", "h");
77 assert_false(seed.has("g"));
78
79 }, "URLSearchParams constructor, object.");
80
81 test(function() {
82 var params = new URLSearchParams("a=b+c");
83 assert_equals(params.get("a"), "b c");
84 params = new URLSearchParams("a+b=c");
85 assert_equals(params.get("a b"), "c");
86 }, "Parse +");
87
88 test(function() {
89 var params = new URLSearchParams("a=b c");
90 assert_equals(params.get("a"), "b c");
91 params = new URLSearchParams("a b=c");
92 assert_equals(params.get("a b"), "c");
93 }, "Parse space");
94
95 test(function() {
96 var params = new URLSearchParams("a=b%20c");
97 assert_equals(params.get("a"), "b c");
98 params = new URLSearchParams("a%20b=c");
99 assert_equals(params.get("a b"), "c");
100 }, "Parse %20");
101
102 test(function() {
103 var params = new URLSearchParams("a=b\0c");
104 assert_equals(params.get("a"), "b\0c");
105 params = new URLSearchParams("a\0b=c");
106 assert_equals(params.get("a\0b"), "c");
107 }, "Parse \\0");
108
109 test(function() {
110 var params = new URLSearchParams("a=b%00c");
111 assert_equals(params.get("a"), "b\0c");
112 params = new URLSearchParams("a%00b=c");
113 assert_equals(params.get("a\0b"), "c");
114 }, "Parse %00");
115
116 test(function() {
117 var params = new URLSearchParams("a=b\u2384");
118 assert_equals(params.get("a"), "b\u2384");
119 params = new URLSearchParams("a\u2384b=c");
120 assert_equals(params.get("a\u2384b"), "c");
121 }, "Parse \u2384"); // Unicode Character "COMPOSITION SYMBOL" (U+2384)
122
123 test(function() {
124 var params = new URLSearchParams("a=b%e2%8e%84");
125 assert_equals(params.get("a"), "b\u2384");
126 params = new URLSearchParams("a%e2%8e%84b=c");
127 assert_equals(params.get("a\u2384b"), "c");
128 }, "Parse %e2%8e%84"); // Unicode Character "COMPOSITION SYMBOL" (U+2384)
129
130 test(function() {
131 var params = new URLSearchParams('a=b\uD83D\uDCA9c');
132 assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
133 params = new URLSearchParams('a\uD83D\uDCA9b=c');
134 assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
135 }, 'Parse \uD83D\uDCA9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
136
137 test(function() {
138 var params = new URLSearchParams('a=b%f0%9f%92%a9c');
139 assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
140 params = new URLSearchParams('a%f0%9f%92%a9b=c');
141 assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
142 }, 'Parse %f0%9f%92%a9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
143 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698