Index: tests/corelib/uri_normalize_path_test.dart |
diff --git a/tests/corelib/uri_normalize_path_test.dart b/tests/corelib/uri_normalize_path_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..03c818fe8812af291c1b6e75c42f46b7a3426cb7 |
--- /dev/null |
+++ b/tests/corelib/uri_normalize_path_test.dart |
@@ -0,0 +1,54 @@ |
+// 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. |
+ |
+library uriNormalizePathTest; |
+ |
+import "package:expect/expect.dart"; |
+ |
+test(String path, String normalizedPath) { |
+ for (var scheme in ["http", "file", "unknown"]) { |
+ for (var auth in [[null, "hostname", null], |
+ ["userinfo", "hostname", 1234], |
+ [null, null, null]]) { |
+ for (var query in [null, "query"]) { |
+ for (var fragment in [null, "fragment"]) { |
+ var base = new Uri(scheme: scheme, |
+ userInfo: auth[0], |
+ host: auth[1], |
+ port: auth[2], |
+ path: path, |
+ query: query, |
+ fragment: fragment); |
+ var expected = base.replace(path: |
+ (base.hasAuthority && normalizedPath.isEmpty) ? "/" |
+ : normalizedPath); |
+ var actual = base.normalizePath(); |
+ Expect.equals(expected, actual, "$base"); |
+ } |
+ } |
+ } |
+ } |
+} |
+testNoChange(String path) { |
+ test(path, path); |
+} |
+ |
+main() { |
+ testNoChange("foo/bar/baz"); |
+ testNoChange("/foo/bar/baz"); |
+ testNoChange("foo/bar/baz/"); |
+ test("foo/bar/..", "foo/"); |
+ test("foo/bar/.", "foo/bar/"); |
+ test("foo/./bar/../baz", "foo/baz"); |
+ test("../../foo", "foo"); |
+ test("./../foo", "foo"); |
+ test("./../", ""); |
+ test("./../.", ""); |
+ test("foo/bar/baz/../../../../qux", "qux"); |
+ test("/foo/bar/baz/../../../../qux", "/qux"); |
+ test(".", ""); |
+ test("..", ""); |
+ test("/.", "/"); |
+ test("/..", "/"); |
+} |