Index: tests/corelib/uri_file_test.dart |
diff --git a/tests/corelib/uri_file_test.dart b/tests/corelib/uri_file_test.dart |
deleted file mode 100644 |
index 355015700f524c5afaa68cb036bc7702159c6eec..0000000000000000000000000000000000000000 |
--- a/tests/corelib/uri_file_test.dart |
+++ /dev/null |
@@ -1,325 +0,0 @@ |
-// 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"; |
- |
-testFileUri() { |
- final unsupported = new UnsupportedError(""); |
- |
- var tests = [ |
- ["", "", ""], |
- ["relative", "relative", "relative"], |
- ["relative/", "relative/", "relative\\"], |
- ["a%20b", "a b", "a b"], |
- ["a%20b/", "a b/", "a b\\"], |
- ["a/b", "a/b", "a\\b"], |
- ["a/b/", "a/b/", "a\\b\\"], |
- ["a%20b/c%20d", "a b/c d", "a b\\c d"], |
- ["a%20b/c%20d/", "a b/c d/", "a b\\c d\\"], |
- ["file:///absolute", "/absolute", "\\absolute"], |
- ["file:///absolute", "/absolute", "\\absolute"], |
- ["file:///a/b", "/a/b", "\\a\\b"], |
- ["file:///a/b", "/a/b", "\\a\\b"], |
- ["file://server/a/b", unsupported, "\\\\server\\a\\b"], |
- ["file://server/a/b/", unsupported, "\\\\server\\a\\b\\"], |
- ["file:///C:/", "/C:/", "C:\\"], |
- ["file:///C:/a/b", "/C:/a/b", "C:\\a\\b"], |
- ["file:///C:/a/b/", "/C:/a/b/", "C:\\a\\b\\"], |
- ["http:/a/b", unsupported, unsupported], |
- ["https:/a/b", unsupported, unsupported], |
- ["urn:a:b", unsupported, unsupported], |
- ]; |
- |
- void check(String s, filePath, bool windows) { |
- Uri uri = Uri.parse(s); |
- if (filePath is Error) { |
- if (filePath is UnsupportedError) { |
- Expect.throws(() => uri.toFilePath(windows: windows), |
- (e) => e is UnsupportedError); |
- } else { |
- Expect.throws(() => uri.toFilePath(windows: windows)); |
- } |
- } else { |
- Expect.equals(filePath, uri.toFilePath(windows: windows)); |
- Expect.equals(s, new Uri.file(filePath, windows: windows).toString()); |
- } |
- } |
- |
- for (var test in tests) { |
- check(test[0], test[1], false); |
- check(test[0], test[2], true); |
- } |
- |
- Uri uri; |
- uri = Uri.parse("file:a"); |
- Expect.equals("/a", uri.toFilePath(windows: false)); |
- Expect.equals("\\a", uri.toFilePath(windows: true)); |
- uri = Uri.parse("file:a/"); |
- Expect.equals("/a/", uri.toFilePath(windows: false)); |
- Expect.equals("\\a\\", uri.toFilePath(windows: true)); |
-} |
- |
-testFileUriWindowsSlash() { |
- var tests = [ |
- ["", "", ""], |
- ["relative", "relative", "relative"], |
- ["relative/", "relative/", "relative\\"], |
- ["a%20b", "a b", "a b"], |
- ["a%20b/", "a b/", "a b\\"], |
- ["a/b", "a/b", "a\\b"], |
- ["a/b/", "a/b/", "a\\b\\"], |
- ["a%20b/c%20d", "a b/c d", "a b\\c d"], |
- ["a%20b/c%20d/", "a b/c d/", "a b\\c d\\"], |
- ["file:///absolute", "/absolute", "\\absolute"], |
- ["file:///absolute", "/absolute", "\\absolute"], |
- ["file:///a/b", "/a/b", "\\a\\b"], |
- ["file:///a/b", "/a/b", "\\a\\b"], |
- ["file://server/a/b", "//server/a/b", "\\\\server\\a\\b"], |
- ["file://server/a/b/", "//server/a/b/", "\\\\server\\a\\b\\"], |
- ["file:///C:/", "C:/", "C:\\"], |
- ["file:///C:/a/b", "C:/a/b", "C:\\a\\b"], |
- ["file:///C:/a/b/", "C:/a/b/", "C:\\a\\b\\"], |
- ["file:///C:/xxx/yyy", "C:\\xxx\\yyy", "C:\\xxx\\yyy"], |
- ]; |
- |
- for (var test in tests) { |
- Uri uri = new Uri.file(test[1], windows: true); |
- Expect.equals(test[0], uri.toString()); |
- Expect.equals(test[2], uri.toFilePath(windows: true)); |
- bool couldBeDir = uri.path.isEmpty || uri.path.endsWith('\\'); |
- Uri dirUri = new Uri.directory(test[1], windows: true); |
- Expect.isTrue(dirUri.path.isEmpty || dirUri.path.endsWith('/')); |
- if (couldBeDir) { |
- Expect.equals(uri, dirUri); |
- } |
- } |
-} |
- |
-testFileUriWindowsWin32Namespace() { |
- var tests = [ |
- ["\\\\?\\C:\\", "file:///C:/", "C:\\"], |
- ["\\\\?\\C:\\", "file:///C:/", "C:\\"], |
- [ |
- "\\\\?\\UNC\\server\\share\\file", |
- "file://server/share/file", |
- "\\\\server\\share\\file" |
- ], |
- ]; |
- |
- for (var test in tests) { |
- Uri uri = new Uri.file(test[0], windows: true); |
- Expect.equals(test[1], uri.toString()); |
- Expect.equals(test[2], uri.toFilePath(windows: true)); |
- } |
- |
- Expect.throws(() => new Uri.file("\\\\?\\file", windows: true), |
- (e) => e is ArgumentError); |
- Expect.throws( |
- () => new Uri.file("\\\\?\\UNX\\server\\share\\file", windows: true), |
- (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.directory("\\\\?\\file", windows: true), |
- (e) => e is ArgumentError); |
- Expect.throws( |
- () => new Uri.directory("\\\\?\\UNX\\server\\share\\file", windows: true), |
- (e) => e is ArgumentError); |
-} |
- |
-testFileUriDriveLetter() { |
- check(String s, String nonWindows, String windows) { |
- Uri uri; |
- uri = Uri.parse(s); |
- Expect.equals(nonWindows, uri.toFilePath(windows: false)); |
- if (windows != null) { |
- Expect.equals(windows, uri.toFilePath(windows: true)); |
- } else { |
- Expect.throws( |
- () => uri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- } |
- } |
- |
- check("file:///C:", "/C:", "C:\\"); |
- check("file:///C:/", "/C:/", "C:\\"); |
- check("file:///C:a", "/C:a", null); |
- check("file:///C:a/", "/C:a/", null); |
- |
- Expect.throws( |
- () => new Uri.file("C:", windows: true), (e) => e is ArgumentError); |
- Expect.throws( |
- () => new Uri.file("C:a", windows: true), (e) => e is ArgumentError); |
- Expect.throws( |
- () => new Uri.file("C:a\b", windows: true), (e) => e is ArgumentError); |
- Expect.throws( |
- () => new Uri.directory("C:", windows: true), (e) => e is ArgumentError); |
- Expect.throws( |
- () => new Uri.directory("C:a", windows: true), (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.directory("C:a\b", windows: true), |
- (e) => e is ArgumentError); |
-} |
- |
-testFileUriResolve() { |
- var tests = [ |
- ["file:///a", "/a", "", "\\a", ""], |
- ["file:///a/", "/a/", "", "\\a\\", ""], |
- ["file:///b", "/a", "b", "\\a", "b"], |
- ["file:///b/", "/a", "b/", "\\a", "b\\"], |
- ["file:///a/b", "/a/", "b", "\\a\\", "b"], |
- ["file:///a/b/", "/a/", "b/", "\\a\\", "b\\"], |
- ["file:///a/c/d", "/a/b", "c/d", "\\a\\b", "c\\d"], |
- ["file:///a/c/d/", "/a/b", "c/d/", "\\a\\b", "c\\d\\"], |
- ["file:///a/b/c/d", "/a/b/", "c/d", "\\a\\b\\", "c\\d"], |
- ["file:///a/b/c/d/", "/a/b/", "c/d/", "\\a\\b\\", "c\\d\\"], |
- ]; |
- |
- check(String s, String absolute, String relative, bool windows) { |
- Uri absoluteUri = new Uri.file(absolute, windows: windows); |
- Uri relativeUri = new Uri.file(relative, windows: windows); |
- String relativeString = windows ? relative.replaceAll("\\", "/") : relative; |
- Expect.equals(s, absoluteUri.resolve(relativeString).toString()); |
- Expect.equals(s, absoluteUri.resolveUri(relativeUri).toString()); |
- } |
- |
- for (var test in tests) { |
- check(test[0], test[1], test[2], false); |
- check(test[0], test[1], test[2], true); |
- check(test[0], test[1], test[4], true); |
- check(test[0], test[3], test[2], true); |
- check(test[0], test[3], test[4], true); |
- } |
-} |
- |
-testFileUriIllegalCharacters() { |
- // Slash is an invalid character in file names on both non-Windows |
- // and Windows. |
- Uri uri = Uri.parse("file:///a%2Fb"); |
- Expect.throws( |
- () => uri.toFilePath(windows: false), (e) => e is UnsupportedError); |
- Expect.throws( |
- () => uri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- |
- // Illegal characters in windows file names. |
- var illegalWindowsPaths = [ |
- "a<b", |
- "a>b", |
- "a:b", |
- "a\"b", |
- "a|b", |
- "a?b", |
- "a*b", |
- "\\\\?\\c:\\a/b" |
- ]; |
- |
- for (var test in illegalWindowsPaths) { |
- Expect.throws( |
- () => new Uri.file(test, windows: true), (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.file("\\$test", windows: true), |
- (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.directory(test, windows: true), |
- (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.directory("\\$test", windows: true), |
- (e) => e is ArgumentError); |
- |
- // It is possible to create non-Windows URIs, but not Windows URIs. |
- Uri uri = new Uri.file(test, windows: false); |
- Uri absoluteUri = new Uri.file("/$test", windows: false); |
- Uri dirUri = new Uri.directory(test, windows: false); |
- Uri dirAbsoluteUri = new Uri.directory("/$test", windows: false); |
- Expect.throws( |
- () => new Uri.file(test, windows: true), (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.file("\\$test", windows: true), |
- (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.directory(test, windows: true), |
- (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.directory("\\$test", windows: true), |
- (e) => e is ArgumentError); |
- |
- // It is possible to extract non-Windows file path, but not |
- // Windows file path. |
- Expect.equals(test, uri.toFilePath(windows: false)); |
- Expect.equals("/$test", absoluteUri.toFilePath(windows: false)); |
- Expect.equals("$test/", dirUri.toFilePath(windows: false)); |
- Expect.equals("/$test/", dirAbsoluteUri.toFilePath(windows: false)); |
- Expect.throws( |
- () => uri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- Expect.throws(() => absoluteUri.toFilePath(windows: true), |
- (e) => e is UnsupportedError); |
- Expect.throws( |
- () => dirUri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- Expect.throws(() => dirAbsoluteUri.toFilePath(windows: true), |
- (e) => e is UnsupportedError); |
- } |
- |
- // Backslash |
- illegalWindowsPaths = ["a\\b", "a\\b\\"]; |
- for (var test in illegalWindowsPaths) { |
- // It is possible to create both non-Windows URIs, and Windows URIs. |
- Uri uri = new Uri.file(test, windows: false); |
- Uri absoluteUri = new Uri.file("/$test", windows: false); |
- Uri dirUri = new Uri.directory(test, windows: false); |
- Uri dirAbsoluteUri = new Uri.directory("/$test", windows: false); |
- new Uri.file(test, windows: true); |
- new Uri.file("\\$test", windows: true); |
- |
- // It is possible to extract non-Windows file path, but not |
- // Windows file path from the non-Windows URI (it has a backslash |
- // in a path segment). |
- Expect.equals(test, uri.toFilePath(windows: false)); |
- Expect.equals("/$test", absoluteUri.toFilePath(windows: false)); |
- Expect.equals("$test/", dirUri.toFilePath(windows: false)); |
- Expect.equals("/$test/", dirAbsoluteUri.toFilePath(windows: false)); |
- Expect.throws( |
- () => uri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- Expect.throws(() => absoluteUri.toFilePath(windows: true), |
- (e) => e is UnsupportedError); |
- Expect.throws( |
- () => dirUri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- Expect.throws(() => dirAbsoluteUri.toFilePath(windows: true), |
- (e) => e is UnsupportedError); |
- } |
-} |
- |
-testFileUriIllegalDriveLetter() { |
- Expect.throws( |
- () => new Uri.file("1:\\", windows: true), (e) => e is ArgumentError); |
- Expect.throws(() => new Uri.directory("1:\\", windows: true), |
- (e) => e is ArgumentError); |
- Uri uri = new Uri.file("1:\\", windows: false); |
- Uri dirUri = new Uri.directory("1:\\", windows: false); |
- Expect.equals("1:\\", uri.toFilePath(windows: false)); |
- Expect.equals("1:\\/", dirUri.toFilePath(windows: false)); |
- Expect.throws( |
- () => uri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- Expect.throws( |
- () => dirUri.toFilePath(windows: true), (e) => e is UnsupportedError); |
-} |
- |
-testAdditionalComponents() { |
- check(String s, {bool windowsOk: false}) { |
- Uri uri = Uri.parse(s); |
- Expect.throws( |
- () => uri.toFilePath(windows: false), (e) => e is UnsupportedError); |
- if (windowsOk) { |
- Expect.isTrue(uri.toFilePath(windows: true) is String); |
- } else { |
- Expect.throws( |
- () => uri.toFilePath(windows: true), (e) => e is UnsupportedError); |
- } |
- } |
- |
- check("file:///path?query"); |
- check("file:///path#fragment"); |
- check("file:///path?query#fragment"); |
- check("file://host/path", windowsOk: true); |
- check("file://user:password@host/path", windowsOk: true); |
-} |
- |
-main() { |
- testFileUri(); |
- testFileUriWindowsSlash(); |
- testFileUriDriveLetter(); |
- testFileUriWindowsWin32Namespace(); |
- testFileUriResolve(); |
- testFileUriIllegalCharacters(); |
- testFileUriIllegalDriveLetter(); |
- testAdditionalComponents(); |
-} |