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

Side by Side Diff: tests/standalone/io/http_headers_test.dart

Issue 12440002: Make instances of HeaderValue and ContentType immutable (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments from nweiz@ Created 7 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « tests/standalone/io/http_advanced_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:math'; 6 import 'dart:math';
7 7
8 part "../../../sdk/lib/io/io_sink.dart"; 8 part "../../../sdk/lib/io/io_sink.dart";
9 part "../../../sdk/lib/io/http.dart"; 9 part "../../../sdk/lib/io/http.dart";
10 part "../../../sdk/lib/io/http_headers.dart"; 10 part "../../../sdk/lib/io/http_headers.dart";
11 part "../../../sdk/lib/io/http_impl.dart"; 11 part "../../../sdk/lib/io/http_impl.dart";
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 }); 198 });
199 } else { 199 } else {
200 Expect.equals(0, headerValue.parameters.length); 200 Expect.equals(0, headerValue.parameters.length);
201 } 201 }
202 } 202 }
203 203
204 HeaderValue headerValue; 204 HeaderValue headerValue;
205 headerValue = new HeaderValue.fromString( 205 headerValue = new HeaderValue.fromString(
206 "xxx; aaa=bbb; ccc=\"\\\";\\a\"; ddd=\" \""); 206 "xxx; aaa=bbb; ccc=\"\\\";\\a\"; ddd=\" \"");
207 check(headerValue, "xxx", {"aaa": "bbb", "ccc": '\";a', "ddd": " "}); 207 check(headerValue, "xxx", {"aaa": "bbb", "ccc": '\";a', "ddd": " "});
208 headerValue = new HeaderValue("xxx",
209 {"aaa": "bbb", "ccc": '\";a', "ddd": " "});
210 check(headerValue, "xxx", {"aaa": "bbb", "ccc": '\";a', "ddd": " "});
211
208 headerValue = new HeaderValue.fromString( 212 headerValue = new HeaderValue.fromString(
209 "attachment; filename=genome.jpeg;" 213 "attachment; filename=genome.jpeg;"
210 "modification-date=\"Wed, 12 February 1997 16:29:51 -0500\""); 214 "modification-date=\"Wed, 12 February 1997 16:29:51 -0500\"");
211 var parameters = { 215 var parameters = {
212 "filename": "genome.jpeg", 216 "filename": "genome.jpeg",
213 "modification-date": "Wed, 12 February 1997 16:29:51 -0500" 217 "modification-date": "Wed, 12 February 1997 16:29:51 -0500"
214 }; 218 };
215 check(headerValue, "attachment", parameters); 219 check(headerValue, "attachment", parameters);
220 headerValue = new HeaderValue("attachment", parameters);
221 check(headerValue, "attachment", parameters);
216 headerValue = new HeaderValue.fromString( 222 headerValue = new HeaderValue.fromString(
217 " attachment ;filename=genome.jpeg ;" 223 " attachment ;filename=genome.jpeg ;"
218 "modification-date = \"Wed, 12 February 1997 16:29:51 -0500\"" ); 224 "modification-date = \"Wed, 12 February 1997 16:29:51 -0500\"" );
219 check(headerValue, "attachment", parameters); 225 check(headerValue, "attachment", parameters);
220 } 226 }
221 227
222 void testContentType() { 228 void testContentType() {
223 void check(ContentType contentType, 229 void check(ContentType contentType,
224 String primaryType, 230 String primaryType,
225 String subType, 231 String subType,
226 [Map parameters]) { 232 [Map parameters]) {
227 Expect.equals(primaryType, contentType.primaryType); 233 Expect.equals(primaryType, contentType.primaryType);
228 Expect.equals(subType, contentType.subType); 234 Expect.equals(subType, contentType.subType);
229 Expect.equals("$primaryType/$subType", contentType.value); 235 Expect.equals("$primaryType/$subType", contentType.value);
230 if (parameters != null) { 236 if (parameters != null) {
231 Expect.equals(parameters.length, contentType.parameters.length); 237 Expect.equals(parameters.length, contentType.parameters.length);
232 parameters.forEach((String name, String value) { 238 parameters.forEach((String name, String value) {
233 Expect.equals(value, contentType.parameters[name]); 239 Expect.equals(value, contentType.parameters[name]);
234 }); 240 });
235 } else { 241 } else {
236 Expect.equals(0, contentType.parameters.length); 242 Expect.equals(0, contentType.parameters.length);
237 } 243 }
238 } 244 }
239 245
240 ContentType contentType; 246 ContentType contentType;
241 contentType = new ContentType(); 247 contentType = new ContentType("", "");
242 Expect.equals("", contentType.primaryType); 248 Expect.equals("", contentType.primaryType);
243 Expect.equals("", contentType.subType); 249 Expect.equals("", contentType.subType);
244 Expect.equals("/", contentType.value); 250 Expect.equals("/", contentType.value);
245 contentType.value = "text/html";
246 Expect.equals("text", contentType.primaryType);
247 Expect.equals("html", contentType.subType);
248 Expect.equals("text/html", contentType.value);
249 251
250 contentType = new _ContentType.fromString("text/html"); 252 contentType = new ContentType.fromString("text/html");
251 check(contentType, "text", "html"); 253 check(contentType, "text", "html");
252 Expect.equals("text/html", contentType.toString()); 254 Expect.equals("text/html", contentType.toString());
253 contentType.parameters["charset"] = "utf-8"; 255 contentType = new ContentType("text", "html", charset: "utf-8");
254 check(contentType, "text", "html", {"charset": "utf-8"}); 256 check(contentType, "text", "html", {"charset": "utf-8"});
255 Expect.equals("text/html; charset=utf-8", contentType.toString()); 257 Expect.equals("text/html; charset=utf-8", contentType.toString());
256 contentType.parameters["xxx"] = "yyy"; 258
259 contentType = new ContentType("text",
260 "html",
261 parameters: {"CHARSET": "UTF-8", "xxx": "yyy"});
257 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"}); 262 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"});
258 String s = contentType.toString(); 263 String s = contentType.toString();
259 bool expectedToString = (s == "text/html; charset=utf-8; xxx=yyy" || 264 bool expectedToString = (s == "text/html; charset=utf-8; xxx=yyy" ||
260 s == "text/html; xxx=yyy; charset=utf-8"); 265 s == "text/html; xxx=yyy; charset=utf-8");
261 Expect.isTrue(expectedToString); 266 Expect.isTrue(expectedToString);
262 267
263 contentType = new _ContentType.fromString("text/html"); 268 contentType = new ContentType("text",
269 "html",
270 charset: "ISO-8859-1",
271 parameters: {"CHARSET": "UTF-8", "xxx": "yyy"});
272 check(contentType, "text", "html", {"charset": "iso-8859-1", "xxx": "yyy"});
273 s = contentType.toString();
274 expectedToString = (s == "text/html; charset=iso-8859-1; xxx=yyy" ||
275 s == "text/html; xxx=yyy; charset=iso-8859-1");
276 Expect.isTrue(expectedToString);
277
278 contentType = new ContentType.fromString("text/html");
264 check(contentType, "text", "html"); 279 check(contentType, "text", "html");
265 contentType = new _ContentType.fromString(" text/html "); 280 contentType = new ContentType.fromString(" text/html ");
266 check(contentType, "text", "html"); 281 check(contentType, "text", "html");
267 contentType = new _ContentType.fromString("text/html; charset=utf-8"); 282 contentType = new ContentType.fromString("text/html; charset=utf-8");
268 check(contentType, "text", "html", {"charset": "utf-8"}); 283 check(contentType, "text", "html", {"charset": "utf-8"});
269 contentType = new _ContentType.fromString( 284 contentType = new ContentType.fromString(
270 " text/html ; charset = utf-8 "); 285 " text/html ; charset = utf-8 ");
271 check(contentType, "text", "html", {"charset": "utf-8"}); 286 check(contentType, "text", "html", {"charset": "utf-8"});
272 contentType = new _ContentType.fromString( 287 contentType = new ContentType.fromString(
273 "text/html; charset=utf-8; xxx=yyy"); 288 "text/html; charset=utf-8; xxx=yyy");
274 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"}); 289 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"});
275 contentType = new _ContentType.fromString( 290 contentType = new ContentType.fromString(
276 " text/html ; charset = utf-8 ; xxx=yyy "); 291 " text/html ; charset = utf-8 ; xxx=yyy ");
277 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"}); 292 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"});
278 contentType = new _ContentType.fromString( 293 contentType = new ContentType.fromString(
279 'text/html; charset=utf-8; xxx="yyy"'); 294 'text/html; charset=utf-8; xxx="yyy"');
280 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"}); 295 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"});
281 contentType = new _ContentType.fromString( 296 contentType = new ContentType.fromString(
282 " text/html ; charset = utf-8 ; xxx=yyy "); 297 " text/html ; charset = utf-8 ; xxx=yyy ");
283 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"}); 298 check(contentType, "text", "html", {"charset": "utf-8", "xxx": "yyy"});
284 } 299 }
285 300
286 void testContentTypeCache() { 301 void testContentTypeCache() {
287 _HttpHeaders headers = new _HttpHeaders("1.1"); 302 _HttpHeaders headers = new _HttpHeaders("1.1");
288 headers.set(HttpHeaders.CONTENT_TYPE, "text/html"); 303 headers.set(HttpHeaders.CONTENT_TYPE, "text/html");
289 Expect.equals("text", headers.contentType.primaryType); 304 Expect.equals("text", headers.contentType.primaryType);
290 Expect.equals("html", headers.contentType.subType); 305 Expect.equals("html", headers.contentType.subType);
291 Expect.equals("text/html", headers.contentType.value); 306 Expect.equals("text/html", headers.contentType.value);
292 headers.set(HttpHeaders.CONTENT_TYPE, "text/plain; charset=utf-8"); 307 headers.set(HttpHeaders.CONTENT_TYPE, "text/plain; charset=utf-8");
293 Expect.equals("text", headers.contentType.primaryType); 308 Expect.equals("text", headers.contentType.primaryType);
294 Expect.equals("plain", headers.contentType.subType); 309 Expect.equals("plain", headers.contentType.subType);
295 Expect.equals("text/plain", headers.contentType.value); 310 Expect.equals("text/plain", headers.contentType.value);
296 headers.removeAll(HttpHeaders.CONTENT_TYPE); 311 headers.removeAll(HttpHeaders.CONTENT_TYPE);
297 Expect.equals("", headers.contentType.primaryType); 312 Expect.isNull(headers.contentType);
298 Expect.equals("", headers.contentType.subType);
299 Expect.equals("/", headers.contentType.value);
300 } 313 }
301 314
302 void testCookie() { 315 void testCookie() {
303 void checkCookiesEquals(a, b) { 316 void checkCookiesEquals(a, b) {
304 Expect.equals(a.name, b.name); 317 Expect.equals(a.name, b.name);
305 Expect.equals(a.value, b.value); 318 Expect.equals(a.value, b.value);
306 Expect.equals(a.expires, b.expires); 319 Expect.equals(a.expires, b.expires);
307 Expect.equals(a.toString(), b.toString()); 320 Expect.equals(a.toString(), b.toString());
308 } 321 }
309 322
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 testIfModifiedSince(); 414 testIfModifiedSince();
402 testHost(); 415 testHost();
403 testEnumeration(); 416 testEnumeration();
404 testHeaderValue(); 417 testHeaderValue();
405 testContentType(); 418 testContentType();
406 testContentTypeCache(); 419 testContentTypeCache();
407 testCookie(); 420 testCookie();
408 testInvalidCookie(); 421 testInvalidCookie();
409 testHeaderLists(); 422 testHeaderLists();
410 } 423 }
OLDNEW
« no previous file with comments | « tests/standalone/io/http_advanced_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698