|  | // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | void testHttpUri() { | 
|  | void check(Uri uri, String expected) { | 
|  | Expect.equals(expected, uri.toString()); | 
|  | } | 
|  |  | 
|  | check(new Uri.http("", ""), "http:"); | 
|  | check(new Uri.http("@:", ""), "http://"); | 
|  | check(new Uri.http("@:8080", ""), "http://:8080"); | 
|  | check(new Uri.http("@host:", ""), "http://host"); | 
|  | check(new Uri.http("@host:", ""), "http://host"); | 
|  | check(new Uri.http("xxx:yyy@host:8080", ""), "http://xxx:yyy@host:8080"); | 
|  | check(new Uri.http("host", "a"), "http://host/a"); | 
|  | check(new Uri.http("host", "/a"), "http://host/a"); | 
|  | check(new Uri.http("host", "a/"), "http://host/a/"); | 
|  | check(new Uri.http("host", "/a/"), "http://host/a/"); | 
|  | check(new Uri.http("host", "a/b"), "http://host/a/b"); | 
|  | check(new Uri.http("host", "/a/b"), "http://host/a/b"); | 
|  | check(new Uri.http("host", "a/b/"), "http://host/a/b/"); | 
|  | check(new Uri.http("host", "/a/b/"), "http://host/a/b/"); | 
|  | check(new Uri.http("host", "a b"), "http://host/a%20b"); | 
|  | check(new Uri.http("host", "/a b"), "http://host/a%20b"); | 
|  | check(new Uri.http("host", "/a b/"), "http://host/a%20b/"); | 
|  | check(new Uri.http("host", "/a%2F"), "http://host/a%252F"); | 
|  | check(new Uri.http("host", "/a%2F/"), "http://host/a%252F/"); | 
|  | check(new Uri.http("host", "/a/b", {"c": "d"}), "http://host/a/b?c=d"); | 
|  | check( | 
|  | new Uri.http("host", "/a/b", {"c=": "&d"}), "http://host/a/b?c%3D=%26d"); | 
|  | check(new Uri.http("[::]", "a"), "http://[::]/a"); | 
|  | check(new Uri.http("[::127.0.0.1]", "a"), "http://[::127.0.0.1]/a"); | 
|  | check(new Uri.http('[fe80::8eae:4c4d:fee9:8434%rename3]', ''), | 
|  | 'http://[fe80::8eae:4c4d:fee9:8434%25rename3]'); | 
|  | check(new Uri.http('[ff02::1%1%41]', ''), 'http://[ff02::1%251a]'); | 
|  | check(new Uri.http('[ff02::1%321]', ''), 'http://[ff02::1%25321]'); | 
|  | check(new Uri.http('[ff02::1%%321]', ''), 'http://[ff02::1%2521]'); | 
|  | } | 
|  |  | 
|  | void testHttpsUri() { | 
|  | void check(Uri uri, String expected) { | 
|  | Expect.equals(expected, uri.toString()); | 
|  | } | 
|  |  | 
|  | check(new Uri.https("", ""), "https:"); | 
|  | check(new Uri.https("@:", ""), "https://"); | 
|  | check(new Uri.https("@:8080", ""), "https://:8080"); | 
|  | check(new Uri.https("@host:", ""), "https://host"); | 
|  | check(new Uri.https("@host:", ""), "https://host"); | 
|  | check(new Uri.https("xxx:yyy@host:8080", ""), "https://xxx:yyy@host:8080"); | 
|  | check(new Uri.https("host", "a"), "https://host/a"); | 
|  | check(new Uri.https("host", "/a"), "https://host/a"); | 
|  | check(new Uri.https("host", "a/"), "https://host/a/"); | 
|  | check(new Uri.https("host", "/a/"), "https://host/a/"); | 
|  | check(new Uri.https("host", "a/b"), "https://host/a/b"); | 
|  | check(new Uri.https("host", "/a/b"), "https://host/a/b"); | 
|  | check(new Uri.https("host", "a/b/"), "https://host/a/b/"); | 
|  | check(new Uri.https("host", "/a/b/"), "https://host/a/b/"); | 
|  | check(new Uri.https("host", "a b"), "https://host/a%20b"); | 
|  | check(new Uri.https("host", "/a b"), "https://host/a%20b"); | 
|  | check(new Uri.https("host", "/a b/"), "https://host/a%20b/"); | 
|  | check(new Uri.https("host", "/a%2F"), "https://host/a%252F"); | 
|  | check(new Uri.https("host", "/a%2F/"), "https://host/a%252F/"); | 
|  | check(new Uri.https("host", "/a/b", {"c": "d"}), "https://host/a/b?c=d"); | 
|  | check(new Uri.https("host", "/a/b", {"c=": "&d"}), | 
|  | "https://host/a/b?c%3D=%26d"); | 
|  | check(new Uri.https("[::]", "a"), "https://[::]/a"); | 
|  | check(new Uri.https("[::127.0.0.1]", "a"), "https://[::127.0.0.1]/a"); | 
|  | } | 
|  |  | 
|  | void testResolveHttpScheme() { | 
|  | String s = "//myserver:1234/path/some/thing"; | 
|  | Uri uri = Uri.parse(s); | 
|  | Uri http = new Uri(scheme: "http"); | 
|  | Uri https = new Uri(scheme: "https"); | 
|  | Expect.equals("http:$s", http.resolveUri(uri).toString()); | 
|  | Expect.equals("https:$s", https.resolveUri(uri).toString()); | 
|  | } | 
|  |  | 
|  | void testQuery() { | 
|  | var uri = Uri.http("example.com", "a/b", <String, dynamic>{ | 
|  | "a": "b", | 
|  | "c": ["d", "e"] | 
|  | }); | 
|  | Expect.equals(uri.toString(), "http://example.com/a/b?a=b&c=d&c=e"); | 
|  | Expect.listEquals(uri.queryParametersAll["c"], ["d", "e"]); | 
|  |  | 
|  | uri = Uri.https("example.com", "a/b", <String, dynamic>{ | 
|  | "a": "b", | 
|  | "c": ["d", "e"] | 
|  | }); | 
|  | Expect.equals(uri.toString(), "https://example.com/a/b?a=b&c=d&c=e"); | 
|  | Expect.listEquals(uri.queryParametersAll["c"], ["d", "e"]); | 
|  |  | 
|  | uri = Uri.http("example.com", "a/b", { | 
|  | "a b c": ["d e", "f g"] | 
|  | }); | 
|  | Expect.equals(uri.toString(), "http://example.com/a/b?a+b+c=d+e&a+b+c=f+g"); | 
|  | uri = Uri.https("example.com", "a/b", { | 
|  | "a b c": ["d e", "f g"] | 
|  | }); | 
|  | Expect.equals(uri.toString(), "https://example.com/a/b?a+b+c=d+e&a+b+c=f+g"); | 
|  | } | 
|  |  | 
|  | main() { | 
|  | testHttpUri(); | 
|  | testHttpsUri(); | 
|  | testResolveHttpScheme(); | 
|  | testQuery(); | 
|  | } |