OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 library uriTest; | 5 library uriTest; |
6 | 6 |
7 import 'dart:utf'; | 7 import 'dart:utf'; |
8 import 'dart:uri'; | 8 import 'dart:uri'; |
9 | 9 |
10 testUri(String uri, bool isAbsolute) { | 10 testUri(String uri, bool isAbsolute) { |
11 Expect.equals(isAbsolute, new Uri.fromString(uri).isAbsolute()); | 11 Expect.equals(isAbsolute, Uri.parse(uri).isAbsolute()); |
12 Expect.equals(isAbsolute, new Uri(uri).isAbsolute()); | 12 Expect.equals(isAbsolute, new Uri(uri).isAbsolute()); |
13 Expect.stringEquals(uri, new Uri.fromString(uri).toString()); | 13 Expect.stringEquals(uri, Uri.parse(uri).toString()); |
14 Expect.stringEquals(uri, new Uri(uri).toString()); | 14 Expect.stringEquals(uri, new Uri(uri).toString()); |
15 | 15 |
16 // Test equals and hashCode members. | 16 // Test equals and hashCode members. |
17 Expect.equals(new Uri(uri), new Uri(uri)); | 17 Expect.equals(new Uri(uri), new Uri(uri)); |
18 Expect.equals(new Uri(uri).hashCode, new Uri(uri).hashCode); | 18 Expect.equals(new Uri(uri).hashCode, new Uri(uri).hashCode); |
19 } | 19 } |
20 | 20 |
21 testEncodeDecode(String orig, String encoded) { | 21 testEncodeDecode(String orig, String encoded) { |
22 var e = encodeUri(orig); | 22 var e = encodeUri(orig); |
23 Expect.stringEquals(encoded, e); | 23 Expect.stringEquals(encoded, e); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 fragment: "fragment").toString()); | 106 fragment: "fragment").toString()); |
107 Expect.stringEquals("null://null@null/a/b/c/?null#null", | 107 Expect.stringEquals("null://null@null/a/b/c/?null#null", |
108 const Uri.fromComponents( | 108 const Uri.fromComponents( |
109 scheme: null, | 109 scheme: null, |
110 userInfo: null, | 110 userInfo: null, |
111 domain: null, | 111 domain: null, |
112 port: 0, | 112 port: 0, |
113 path: "/a/b/c/", | 113 path: "/a/b/c/", |
114 query: null, | 114 query: null, |
115 fragment: null).toString()); | 115 fragment: null).toString()); |
116 Expect.stringEquals("file://", new Uri.fromString("file:").toString()); | 116 Expect.stringEquals("file://", Uri.parse("file:").toString()); |
117 Expect.stringEquals("file://", new Uri("file:").toString()); | 117 Expect.stringEquals("file://", new Uri("file:").toString()); |
118 Expect.stringEquals("/a/g", removeDotSegments("/a/b/c/./../../g")); | 118 Expect.stringEquals("/a/g", removeDotSegments("/a/b/c/./../../g")); |
119 Expect.stringEquals("mid/6", removeDotSegments("mid/content=5/../6")); | 119 Expect.stringEquals("mid/6", removeDotSegments("mid/content=5/../6")); |
120 Expect.stringEquals("a/b/e", removeDotSegments("a/b/c/d/../../e")); | 120 Expect.stringEquals("a/b/e", removeDotSegments("a/b/c/d/../../e")); |
121 Expect.stringEquals("a/b/e", removeDotSegments("../a/b/c/d/../../e")); | 121 Expect.stringEquals("a/b/e", removeDotSegments("../a/b/c/d/../../e")); |
122 Expect.stringEquals("a/b/e", removeDotSegments("./a/b/c/d/../../e")); | 122 Expect.stringEquals("a/b/e", removeDotSegments("./a/b/c/d/../../e")); |
123 Expect.stringEquals("a/b/e", removeDotSegments("../a/b/./c/d/../../e")); | 123 Expect.stringEquals("a/b/e", removeDotSegments("../a/b/./c/d/../../e")); |
124 Expect.stringEquals("a/b/e", removeDotSegments("./a/b/./c/d/../../e")); | 124 Expect.stringEquals("a/b/e", removeDotSegments("./a/b/./c/d/../../e")); |
125 Expect.stringEquals("a/b/e/", removeDotSegments("./a/b/./c/d/../../e/.")); | 125 Expect.stringEquals("a/b/e/", removeDotSegments("./a/b/./c/d/../../e/.")); |
126 Expect.stringEquals("a/b/e/", removeDotSegments("./a/b/./c/d/../../e/./.")); | 126 Expect.stringEquals("a/b/e/", removeDotSegments("./a/b/./c/d/../../e/./.")); |
127 Expect.stringEquals("a/b/e/", removeDotSegments("./a/b/./c/d/../../e/././.")); | 127 Expect.stringEquals("a/b/e/", removeDotSegments("./a/b/./c/d/../../e/././.")); |
128 | 128 |
129 final urisSample = "http://a/b/c/d;p?q"; | 129 final urisSample = "http://a/b/c/d;p?q"; |
130 Uri baseFromString = new Uri.fromString(urisSample); | 130 Uri baseFromString = Uri.parse(urisSample); |
131 testUriPerRFCs(baseFromString); | 131 testUriPerRFCs(baseFromString); |
132 Uri base = new Uri(urisSample); | 132 Uri base = new Uri(urisSample); |
133 testUriPerRFCs(base); | 133 testUriPerRFCs(base); |
134 | 134 |
135 Expect.stringEquals( | 135 Expect.stringEquals( |
136 "http://example.com", | 136 "http://example.com", |
137 new Uri.fromString("http://example.com/a/b/c").origin); | 137 Uri.parse("http://example.com/a/b/c").origin); |
138 Expect.stringEquals( | 138 Expect.stringEquals( |
139 "https://example.com", | 139 "https://example.com", |
140 new Uri.fromString("https://example.com/a/b/c").origin); | 140 Uri.parse("https://example.com/a/b/c").origin); |
141 Expect.stringEquals( | 141 Expect.stringEquals( |
142 "http://example.com:1234", | 142 "http://example.com:1234", |
143 new Uri.fromString("http://example.com:1234/a/b/c").origin); | 143 Uri.parse("http://example.com:1234/a/b/c").origin); |
144 Expect.stringEquals( | 144 Expect.stringEquals( |
145 "https://example.com:1234", | 145 "https://example.com:1234", |
146 new Uri.fromString("https://example.com:1234/a/b/c").origin); | 146 Uri.parse("https://example.com:1234/a/b/c").origin); |
147 Expect.throws( | 147 Expect.throws( |
148 () => new Uri.fromString("http:").origin, | 148 () => Uri.parse("http:").origin, |
149 (e) { return e is ArgumentError; }, | 149 (e) { return e is ArgumentError; }, |
150 "origin for uri with empty domain should fail"); | 150 "origin for uri with empty domain should fail"); |
151 Expect.throws( | 151 Expect.throws( |
152 () => const Uri.fromComponents( | 152 () => const Uri.fromComponents( |
153 scheme: "http", | 153 scheme: "http", |
154 userInfo: null, | 154 userInfo: null, |
155 domain: "", | 155 domain: "", |
156 port: 80, | 156 port: 80, |
157 path: "/a/b/c", | 157 path: "/a/b/c", |
158 query: "query", | 158 query: "query", |
(...skipping 16 matching lines...) Expand all Loading... |
175 scheme: "http", | 175 scheme: "http", |
176 userInfo: null, | 176 userInfo: null, |
177 domain: null, | 177 domain: null, |
178 port: 80, | 178 port: 80, |
179 path: "/a/b/c", | 179 path: "/a/b/c", |
180 query: "query", | 180 query: "query", |
181 fragment: "fragment").origin, | 181 fragment: "fragment").origin, |
182 (e) { return e is ArgumentError; }, | 182 (e) { return e is ArgumentError; }, |
183 "origin for uri with empty domain should fail"); | 183 "origin for uri with empty domain should fail"); |
184 Expect.throws( | 184 Expect.throws( |
185 () => new Uri.fromString("http://:80").origin, | 185 () => Uri.parse("http://:80").origin, |
186 (e) { return e is ArgumentError; }, | 186 (e) { return e is ArgumentError; }, |
187 "origin for uri with empty domain should fail"); | 187 "origin for uri with empty domain should fail"); |
188 Expect.throws( | 188 Expect.throws( |
189 () => new Uri.fromString("file://localhost/test.txt").origin, | 189 () => Uri.parse("file://localhost/test.txt").origin, |
190 (e) { return e is ArgumentError; }, | 190 (e) { return e is ArgumentError; }, |
191 "origin for non-http/https uri should fail"); | 191 "origin for non-http/https uri should fail"); |
192 | 192 |
193 // URI encode tests | 193 // URI encode tests |
194 // Create a string with code point 0x10000 encoded as a surrogate pair. | 194 // Create a string with code point 0x10000 encoded as a surrogate pair. |
195 var s = decodeUtf8([0xf0, 0x90, 0x80, 0x80]); | 195 var s = decodeUtf8([0xf0, 0x90, 0x80, 0x80]); |
196 | 196 |
197 Expect.stringEquals("\u{10000}", s); | 197 Expect.stringEquals("\u{10000}", s); |
198 | 198 |
199 testEncodeDecode("A + B", "A+%2B+B"); | 199 testEncodeDecode("A + B", "A+%2B+B"); |
200 testEncodeDecode("\uFFFE", "%EF%BF%BE"); | 200 testEncodeDecode("\uFFFE", "%EF%BF%BE"); |
201 testEncodeDecode("\uFFFF", "%EF%BF%BF"); | 201 testEncodeDecode("\uFFFF", "%EF%BF%BF"); |
202 testEncodeDecode("\uFFFE", "%EF%BF%BE"); | 202 testEncodeDecode("\uFFFE", "%EF%BF%BE"); |
203 testEncodeDecode("\uFFFF", "%EF%BF%BF"); | 203 testEncodeDecode("\uFFFF", "%EF%BF%BF"); |
204 testEncodeDecode("\x7f", "%7F"); | 204 testEncodeDecode("\x7f", "%7F"); |
205 testEncodeDecode("\x80", "%C2%80"); | 205 testEncodeDecode("\x80", "%C2%80"); |
206 testEncodeDecode("\u0800", "%E0%A0%80"); | 206 testEncodeDecode("\u0800", "%E0%A0%80"); |
207 testEncodeDecode(":/@',;?&=+\$", ":/@',;?&=%2B\$"); | 207 testEncodeDecode(":/@',;?&=+\$", ":/@',;?&=%2B\$"); |
208 testEncodeDecode(s, "%F0%90%80%80"); | 208 testEncodeDecode(s, "%F0%90%80%80"); |
209 testEncodeDecodeComponent("\uFFFE", "%EF%BF%BE"); | 209 testEncodeDecodeComponent("\uFFFE", "%EF%BF%BE"); |
210 testEncodeDecodeComponent("\uFFFF", "%EF%BF%BF"); | 210 testEncodeDecodeComponent("\uFFFF", "%EF%BF%BF"); |
211 testEncodeDecodeComponent("\uFFFE", "%EF%BF%BE"); | 211 testEncodeDecodeComponent("\uFFFE", "%EF%BF%BE"); |
212 testEncodeDecodeComponent("\uFFFF", "%EF%BF%BF"); | 212 testEncodeDecodeComponent("\uFFFF", "%EF%BF%BF"); |
213 testEncodeDecodeComponent("\x7f", "%7F"); | 213 testEncodeDecodeComponent("\x7f", "%7F"); |
214 testEncodeDecodeComponent("\x80", "%C2%80"); | 214 testEncodeDecodeComponent("\x80", "%C2%80"); |
215 testEncodeDecodeComponent("\u0800", "%E0%A0%80"); | 215 testEncodeDecodeComponent("\u0800", "%E0%A0%80"); |
216 testEncodeDecodeComponent(":/@',;?&=+\$", "%3A%2F%40'%2C%3B%3F%26%3D%2B%24"); | 216 testEncodeDecodeComponent(":/@',;?&=+\$", "%3A%2F%40'%2C%3B%3F%26%3D%2B%24"); |
217 testEncodeDecodeComponent(s, "%F0%90%80%80"); | 217 testEncodeDecodeComponent(s, "%F0%90%80%80"); |
218 } | 218 } |
OLD | NEW |