--- a/jdk/test/java/nio/file/Path/PathOps.java Thu Aug 25 09:43:46 2016 +0530
+++ b/jdk/test/java/nio/file/Path/PathOps.java Thu Aug 25 10:01:20 2016 +0100
@@ -197,6 +197,19 @@
return this;
}
+ PathOps relativizeFail(String other) {
+ out.format("test relativize %s\n", other);
+ checkPath();
+ Path that = FileSystems.getDefault().getPath(other);
+ try {
+ Path result = path.relativize(that);
+ out.format("\tExpected: IllegalArgumentException");
+ out.format("\tActual: %s\n", result);
+ fail();
+ } catch (IllegalArgumentException expected) { }
+ return this;
+ }
+
PathOps normalize(String expected) {
out.println("check normalized path");
checkPath();
@@ -572,29 +585,709 @@
.resolveSibling("C:\\", "C:\\");
// relativize
- test("foo")
- .relativize("foo", "")
- .relativize("bar", "..\\bar")
+ test("C:\\a")
+ .relativize("C:\\a", "")
+ .relativize("C:\\", "..")
+ .relativize("C:\\.", "..")
+ .relativize("C:\\..", "..")
+ .relativize("C:\\..\\..", "..")
+ .relativize("C:\\a\\b", "b")
+ .relativize("C:\\a\\b\\c", "b\\c")
+ .relativize("C:\\a\\.", "") // "." also valid
+ .relativize("C:\\a\\..", "..")
+ .relativize("C:\\x", "..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\a\\b")
+ .relativize("C:\\a\\b", "")
+ .relativize("C:\\a", "..")
+ .relativize("C:\\", "..\\..")
+ .relativize("C:\\.", "..\\..")
+ .relativize("C:\\..", "..\\..")
+ .relativize("C:\\..\\..", "..\\..")
+ .relativize("C:\\a\\b\\c", "c")
+ .relativize("C:\\a\\.", "..")
+ .relativize("C:\\a\\..", "..\\..")
+ .relativize("C:\\x", "..\\..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\a\\b\\c")
+ .relativize("C:\\a\\b\\c", "")
+ .relativize("C:\\a\\b", "..")
+ .relativize("C:\\a", "..\\..")
+ .relativize("C:\\", "..\\..\\..")
+ .relativize("C:\\.", "..\\..\\..")
+ .relativize("C:\\..", "..\\..\\..")
+ .relativize("C:\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\a\\b\\c\\d", "d")
+ .relativize("C:\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("C:\\a\\b\\c\\.", "") // "." also valid
+ .relativize("C:\\a\\b\\c\\..", "..")
+ .relativize("C:\\a\\x", "..\\..\\x")
+ .relativize("C:\\x", "..\\..\\..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\..\\a")
+ .relativize("C:\\a", "")
+ .relativize("C:\\", "..")
+ .relativize("C:\\.", "..")
+ .relativize("C:\\..", "..")
+ .relativize("C:\\..\\..", "..")
+ .relativize("C:\\a\\b", "b")
+ .relativize("C:\\a\\b\\c", "b\\c")
+ .relativize("C:\\a\\.", "") // "." also valid
+ .relativize("C:\\a\\..", "..")
+ .relativize("C:\\x", "..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\..\\a\\b")
+ .relativize("C:\\a\\b", "")
+ .relativize("C:\\a", "..")
+ .relativize("C:\\", "..\\..")
+ .relativize("C:\\.", "..\\..")
+ .relativize("C:\\..", "..\\..")
+ .relativize("C:\\..\\..", "..\\..")
+ .relativize("C:\\..\\..\\..", "..\\..")
+ .relativize("C:\\..\\..\\..\\..", "..\\..")
+ .relativize("C:\\a\\b\\c", "c")
+ .relativize("C:\\a\\b\\.", "") // "." also valid
+ .relativize("C:\\a\\b\\..", "..")
+ .relativize("C:\\a\\x", "..\\x")
+ .relativize("C:\\x", "..\\..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\..\\..\\a\\b")
+ .relativize("C:\\a\\b", "")
+ .relativize("C:\\a", "..")
+ .relativize("C:\\", "..\\..")
+ .relativize("C:\\.", "..\\..")
+ .relativize("C:\\..", "..\\..")
+ .relativize("C:\\..\\..", "..\\..")
+ .relativize("C:\\..\\..\\..", "..\\..")
+ .relativize("C:\\..\\..\\..\\..", "..\\..")
+ .relativize("C:\\a\\b\\c", "c")
+ .relativize("C:\\a\\b\\.", "") // "." also valid
+ .relativize("C:\\a\\b\\..", "..")
+ .relativize("C:\\a\\x", "..\\x")
+ .relativize("C:\\x", "..\\..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\..\\a\\b\\c")
+ .relativize("C:\\a\\b\\c", "")
+ .relativize("C:\\a\\b", "..")
+ .relativize("C:\\a", "..\\..")
+ .relativize("C:\\", "..\\..\\..")
+ .relativize("C:\\.", "..\\..\\..")
+ .relativize("C:\\..", "..\\..\\..")
+ .relativize("C:\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\a\\b\\c\\d", "d")
+ .relativize("C:\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("C:\\a\\b\\c\\.", "") // "." also valid
+ .relativize("C:\\a\\b\\c\\..", "..")
+ .relativize("C:\\a\\x", "..\\..\\x")
+ .relativize("C:\\x", "..\\..\\..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\..\\..\\a\\b\\c")
+ .relativize("C:\\a\\b\\c", "")
+ .relativize("C:\\a\\b", "..")
+ .relativize("C:\\a", "..\\..")
+ .relativize("C:\\", "..\\..\\..")
+ .relativize("C:\\.", "..\\..\\..")
+ .relativize("C:\\..", "..\\..\\..")
+ .relativize("C:\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\a\\b\\c\\d", "d")
+ .relativize("C:\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("C:\\a\\b\\c\\.", "") // "." also valid
+ .relativize("C:\\a\\b\\c\\..", "..")
+ .relativize("C:\\a\\x", "..\\..\\x")
+ .relativize("C:\\x", "..\\..\\..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\..\\..\\..\\a\\b\\c")
+ .relativize("C:\\a\\b\\c", "")
+ .relativize("C:\\a\\b", "..")
+ .relativize("C:\\a", "..\\..")
+ .relativize("C:\\", "..\\..\\..")
+ .relativize("C:\\.", "..\\..\\..")
+ .relativize("C:\\..", "..\\..\\..")
+ .relativize("C:\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("C:\\a\\b\\c\\d", "d")
+ .relativize("C:\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("C:\\a\\b\\c\\.", "") // "." also valid
+ .relativize("C:\\a\\b\\c\\..", "..")
+ .relativize("C:\\a\\x", "..\\..\\x")
+ .relativize("C:\\x", "..\\..\\..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\.\\a")
+ .relativize("C:\\a", "")
+ .relativize("C:\\", "..")
+ .relativize("C:\\.", "..")
+ .relativize("C:\\..", "..")
+ .relativize("C:\\..\\..", "..")
+ .relativize("C:\\a\\b", "b")
+ .relativize("C:\\a\\b\\c", "b\\c")
+ .relativize("C:\\a\\.", "") // "." also valid
+ .relativize("C:\\a\\..", "..")
+ .relativize("C:\\x", "..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\..\\a")
+ .relativize("C:\\a", "")
+ .relativize("C:\\", "..")
+ .relativize("C:\\.", "..")
+ .relativize("C:\\..", "..")
+ .relativize("C:\\..\\..", "..")
+ .relativize("C:\\a\\b", "b")
+ .relativize("C:\\a\\b\\c", "b\\c")
+ .relativize("C:\\a\\.", "") // "." also valid
+ .relativize("C:\\a\\..", "..")
+ .relativize("C:\\x", "..\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:\\a\\..")
+ .relativize("C:\\a", "a")
+ .relativize("C:\\", "") // "." is also valid
+ .relativize("C:\\.", "")
+ .relativize("C:\\..", "")
+ .relativize("C:\\..\\..", "")
+ .relativize("C:\\a\\.", "a")
+ .relativize("C:\\a\\..", "")
+ .relativize("C:\\x", "x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("C:a")
+ .relativize("C:a", "")
+ .relativize("C:", "..")
+ .relativize("C:.", "..")
+ .relativize("C:..", "..\\..")
+ .relativize("C:..\\..", "..\\..\\..")
+ .relativize("C:.\\..", "..\\..")
+ .relativize("C:a\\b", "b")
+ .relativize("C:a\\b\\c", "b\\c")
+ .relativize("C:..\\x", "..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("C:a\\b")
+ .relativize("C:a\\b", "")
+ .relativize("C:a", "..")
+ .relativize("C:", "..\\..")
+ .relativize("C:.", "..\\..")
+ .relativize("C:..", "..\\..\\..")
+ .relativize("C:..\\..", "..\\..\\..\\..")
+ .relativize("C:.\\..", "..\\..\\..")
+ .relativize("C:a\\b\\c", "c")
+ .relativize("C:..\\x", "..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("C:a\\b\\c")
+ .relativize("C:a\\b\\c", "")
+ .relativize("C:a\\b", "..")
+ .relativize("C:a", "..\\..")
+ .relativize("C:", "..\\..\\..")
+ .relativize("C:.", "..\\..\\..")
+ .relativize("C:..", "..\\..\\..\\..")
+ .relativize("C:..\\..", "..\\..\\..\\..\\..")
+ .relativize("C:.\\..", "..\\..\\..\\..")
+ .relativize("C:a\\b\\c\\d", "d")
+ .relativize("C:a\\b\\c\\d\\e", "d\\e")
+ .relativize("C:a\\x", "..\\..\\x")
+ .relativize("C:..\\x", "..\\..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("C:")
+ .relativize("C:a", "a")
+ .relativize("C:a\\b\\c", "a\\b\\c")
+ .relativize("C:", "")
+ .relativize("C:.", "") // "" also valid
+ .relativize("C:..", "..")
+ .relativize("C:..\\..", "..\\..")
+ .relativize("C:.\\..", "..")
+ .relativizeFail("C:\\x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("C:..")
+ .relativize("C:..\\a", "a")
+ .relativize("C:..", "")
+ .relativize("C:.\\..", "")
+ .relativizeFail("C:\\x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("x");
+ test("C:..\\a")
+ .relativize("C:..\\a\\b", "b")
+ .relativize("C:..\\a", "")
+ .relativize("C:..", "..")
+ .relativize("C:.\\..", "..")
+ .relativizeFail("C:\\x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("x");
+ test("C:..\\a\\b")
+ .relativize("C:..\\a\\b\\c", "c")
+ .relativize("C:..\\a\\b", "")
+ .relativize("C:..\\a", "..")
+ .relativize("C:..", "..\\..")
+ .relativize("C:.\\..", "..\\..")
+ .relativizeFail("C:\\x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("")
+ .relativizeFail("x");
+ test("C:a\\..")
+ .relativize("C:b", "b")
+ .relativize("C:", "")
+ .relativize("C:.", "") // "." also valid
+ .relativize("C:..", "..")
+ .relativize("C:a\\..\\b", "b")
+ .relativize("C:a\\..", "")
+ .relativize("C:..\\b", "..\\b")
+ .relativize("C:b\\..", "")
+ .relativizeFail("C:\\x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("x");
+ test("C:a\\..\\b")
+ .relativize("C:a\\..\\b", "")
+ .relativize("C:a\\..", "..")
+ .relativize("C:", "..")
+ .relativize("C:.", "..")
+ .relativize("C:..", "..\\..")
+ .relativize("C:b", "")
+ .relativize("C:c", "..\\c")
+ .relativize("C:..\\c", "..\\..\\c")
+ .relativize("C:a\\..\\b\\c", "c")
+ .relativizeFail("C:\\x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("x");
+ test("\\a")
+ .relativize("\\a", "")
+ .relativize("\\", "..")
+ .relativize("\\.", "..")
+ .relativize("\\..", "..")
+ .relativize("\\..\\..", "..")
+ .relativize("\\a\\b", "b")
+ .relativize("\\a\\b\\c", "b\\c")
+ .relativize("\\a\\.", "") // "." also valid
+ .relativize("\\a\\..", "..")
+ .relativize("\\x", "..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\a\\b")
+ .relativize("\\a\\b", "")
+ .relativize("\\a", "..")
+ .relativize("\\", "..\\..")
+ .relativize("\\.", "..\\..")
+ .relativize("\\..", "..\\..")
+ .relativize("\\..\\..", "..\\..")
+ .relativize("\\a\\b\\c", "c")
+ .relativize("\\a\\.", "..")
+ .relativize("\\a\\..", "..\\..")
+ .relativize("\\x", "..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\a\\b\\c")
+ .relativize("\\a\\b\\c", "")
+ .relativize("\\a\\b", "..")
+ .relativize("\\a", "..\\..")
+ .relativize("\\", "..\\..\\..")
+ .relativize("\\.", "..\\..\\..")
+ .relativize("\\..", "..\\..\\..")
+ .relativize("\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("\\a\\b\\c\\d", "d")
+ .relativize("\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("\\a\\b\\c\\.", "") // "." also valid
+ .relativize("\\a\\b\\c\\..", "..")
+ .relativize("\\a\\x", "..\\..\\x")
+ .relativize("\\x", "..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\..\\a")
+ .relativize("\\a", "")
+ .relativize("\\", "..")
+ .relativize("\\.", "..")
+ .relativize("\\..", "..")
+ .relativize("\\..\\..", "..")
+ .relativize("\\a\\b", "b")
+ .relativize("\\a\\b\\c", "b\\c")
+ .relativize("\\a\\.", "") // "." also valid
+ .relativize("\\a\\..", "..")
+ .relativize("\\x", "..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\..\\a\\b")
+ .relativize("\\a\\b", "")
+ .relativize("\\a", "..")
+ .relativize("\\", "..\\..")
+ .relativize("\\.", "..\\..")
+ .relativize("\\..", "..\\..")
+ .relativize("\\..\\..", "..\\..")
+ .relativize("\\..\\..\\..", "..\\..")
+ .relativize("\\..\\..\\..\\..", "..\\..")
+ .relativize("\\a\\b\\c", "c")
+ .relativize("\\a\\b\\.", "") // "." also valid
+ .relativize("\\a\\b\\..", "..")
+ .relativize("\\a\\x", "..\\x")
+ .relativize("\\x", "..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\..\\..\\a\\b")
+ .relativize("\\a\\b", "")
+ .relativize("\\a", "..")
+ .relativize("\\", "..\\..")
+ .relativize("\\.", "..\\..")
+ .relativize("\\..", "..\\..")
+ .relativize("\\..\\..", "..\\..")
+ .relativize("\\..\\..\\..", "..\\..")
+ .relativize("\\..\\..\\..\\..", "..\\..")
+ .relativize("\\a\\b\\c", "c")
+ .relativize("\\a\\b\\.", "") // "." also valid
+ .relativize("\\a\\b\\..", "..")
+ .relativize("\\a\\x", "..\\x")
+ .relativize("\\x", "..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\..\\a\\b\\c")
+ .relativize("\\a\\b\\c", "")
+ .relativize("\\a\\b", "..")
+ .relativize("\\a", "..\\..")
+ .relativize("\\", "..\\..\\..")
+ .relativize("\\.", "..\\..\\..")
+ .relativize("\\..", "..\\..\\..")
+ .relativize("\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("\\a\\b\\c\\d", "d")
+ .relativize("\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("\\a\\b\\c\\.", "") // "." also valid
+ .relativize("\\a\\b\\c\\..", "..")
+ .relativize("\\a\\x", "..\\..\\x")
+ .relativize("\\x", "..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\..\\..\\a\\b\\c")
+ .relativize("\\a\\b\\c", "")
+ .relativize("\\a\\b", "..")
+ .relativize("\\a", "..\\..")
+ .relativize("\\", "..\\..\\..")
+ .relativize("\\.", "..\\..\\..")
+ .relativize("\\..", "..\\..\\..")
+ .relativize("\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("\\a\\b\\c\\d", "d")
+ .relativize("\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("\\a\\b\\c\\.", "") // "." also valid
+ .relativize("\\a\\b\\c\\..", "..")
+ .relativize("\\a\\x", "..\\..\\x")
+ .relativize("\\x", "..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\..\\..\\..\\a\\b\\c")
+ .relativize("\\a\\b\\c", "")
+ .relativize("\\a\\b", "..")
+ .relativize("\\a", "..\\..")
+ .relativize("\\", "..\\..\\..")
+ .relativize("\\.", "..\\..\\..")
+ .relativize("\\..", "..\\..\\..")
+ .relativize("\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..", "..\\..\\..")
+ .relativize("\\..\\..\\..\\..", "..\\..\\..")
+ .relativize("\\a\\b\\c\\d", "d")
+ .relativize("\\a\\b\\c\\d\\e", "d\\e")
+ .relativize("\\a\\b\\c\\.", "") // "." also valid
+ .relativize("\\a\\b\\c\\..", "..")
+ .relativize("\\a\\x", "..\\..\\x")
+ .relativize("\\x", "..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\.\\a")
+ .relativize("\\a", "")
+ .relativize("\\", "..")
+ .relativize("\\.", "..")
+ .relativize("\\..", "..")
+ .relativize("\\..\\..", "..")
+ .relativize("\\a\\b", "b")
+ .relativize("\\a\\b\\c", "b\\c")
+ .relativize("\\a\\.", "") // "." also valid
+ .relativize("\\a\\..", "..")
+ .relativize("\\x", "..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\..\\a")
+ .relativize("\\a", "")
+ .relativize("\\", "..")
+ .relativize("\\.", "..")
+ .relativize("\\..", "..")
+ .relativize("\\..\\..", "..")
+ .relativize("\\a\\b", "b")
+ .relativize("\\a\\b\\c", "b\\c")
+ .relativize("\\a\\.", "") // "." also valid
+ .relativize("\\a\\..", "..")
+ .relativize("\\x", "..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\a\\..")
+ .relativize("\\a", "a")
+ .relativize("\\", "") // "." is also valid
+ .relativize("\\.", "")
+ .relativize("\\..", "")
+ .relativize("\\..\\..", "")
+ .relativize("\\a\\.", "a")
+ .relativize("\\a\\..", "")
+ .relativize("\\x", "x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("\\")
+ .relativize("\\a", "a")
+ .relativize("\\", "") // "." is also valid
+ .relativize("\\.", "")
+ .relativize("\\..", "")
+ .relativize("\\..\\..", "")
+ .relativize("\\a\\.", "a")
+ .relativize("\\a\\..", "")
+ .relativize("\\x", "x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("a")
+ .relativize("a", "")
+ .relativize("", "..")
+ .relativize(".", "..")
.relativize("..", "..\\..")
- .relativize("", "..");
- test("foo\\bar")
- .relativize("foo\\bar", "")
- .relativize("foo", "..")
- .relativize("gus", "..\\..\\gus")
+ .relativize("..\\..", "..\\..\\..")
+ .relativize(".\\..", "..\\..")
+ .relativize("a\\b", "b")
+ .relativize("a\\b\\c", "b\\c")
+ .relativize("..\\x", "..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("a\\b")
+ .relativize("a\\b", "")
+ .relativize("a", "..")
+ .relativize("", "..\\..")
+ .relativize(".", "..\\..")
.relativize("..", "..\\..\\..")
- .relativize("", "..\\..");
- test("C:\\a\\b\\c")
- .relativize("C:\\a", "..\\..")
- .relativize("C:\\a\\b\\c", "")
- .relativize("C:\\x", "..\\..\\..\\x");
- test("\\\\server\\share\\foo")
- .relativize("\\\\server\\share\\bar", "..\\bar")
- .relativize("\\\\server\\share\\foo", "");
+ .relativize("..\\..", "..\\..\\..\\..")
+ .relativize(".\\..", "..\\..\\..")
+ .relativize("a\\b\\c", "c")
+ .relativize("..\\x", "..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("a\\b\\c")
+ .relativize("a\\b\\c", "")
+ .relativize("a\\b", "..")
+ .relativize("a", "..\\..")
+ .relativize("", "..\\..\\..")
+ .relativize(".", "..\\..\\..")
+ .relativize("..", "..\\..\\..\\..")
+ .relativize("..\\..", "..\\..\\..\\..\\..")
+ .relativize(".\\..", "..\\..\\..\\..")
+ .relativize("a\\b\\c\\d", "d")
+ .relativize("a\\b\\c\\d\\e", "d\\e")
+ .relativize("a\\x", "..\\..\\x")
+ .relativize("..\\x", "..\\..\\..\\..\\x")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
test("")
.relativize("a", "a")
.relativize("a\\b\\c", "a\\b\\c")
+ .relativize("", "")
+ .relativize(".", ".")
.relativize("..", "..")
- .relativize("", "");
+ .relativize("..\\..", "..\\..")
+ .relativize(".\\..", ".\\..") // ".." also valid
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("..")
+ .relativize("..\\a", "a")
+ .relativize("..", "")
+ .relativize(".\\..", "")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("x");
+ test("..\\a")
+ .relativize("..\\a\\b", "b")
+ .relativize("..\\a", "")
+ .relativize("..", "..")
+ .relativize(".\\..", "..")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("x");
+ test("..\\a\\b")
+ .relativize("..\\a\\b\\c", "c")
+ .relativize("..\\a\\b", "")
+ .relativize("..\\a", "..")
+ .relativize("..", "..\\..")
+ .relativize(".\\..", "..\\..")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x")
+ .relativizeFail("")
+ .relativizeFail("x");
+ test("a\\..")
+ .relativize("b", "b")
+ .relativize("", "")
+ .relativize(".", "") // "." also valid
+ .relativize("..", "..")
+ .relativize("a\\..\\b", "b")
+ .relativize("a\\..", "")
+ .relativize("..\\b", "..\\b")
+ .relativize("b\\..", "")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
+ test("a\\..\\b")
+ .relativize("a\\..\\b", "")
+ .relativize("a\\..", "..")
+ .relativize("", "..")
+ .relativize(".", "..")
+ .relativize("..", "..\\..")
+ .relativize("b", "")
+ .relativize("c", "..\\c")
+ .relativize("..\\c", "..\\..\\c")
+ .relativize("a\\..\\b\\c", "c")
+ .relativizeFail("C:\\x")
+ .relativizeFail("C:x")
+ .relativizeFail("\\")
+ .relativizeFail("\\x");
// normalize
test("C:\\")
@@ -971,20 +1664,324 @@
.resolve("", "");
// relativize
+ test("/a")
+ .relativize("/a", "")
+ .relativize("/", "..")
+ .relativize("/.", "..")
+ .relativize("/..", "..")
+ .relativize("/../..", "..")
+ .relativize("/a/b", "b")
+ .relativize("/a/b/c", "b/c")
+ .relativize("/a/.", "") // "." also valid
+ .relativize("/a/..", "..")
+ .relativize("/x", "../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/a/b")
+ .relativize("/a/b", "")
+ .relativize("/a", "..")
+ .relativize("/", "../..")
+ .relativize("/.", "../..")
+ .relativize("/..", "../..")
+ .relativize("/../..", "../..")
+ .relativize("/a/b/c", "c")
+ .relativize("/a/.", "..")
+ .relativize("/a/..", "../..")
+ .relativize("/x", "../../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
test("/a/b/c")
.relativize("/a/b/c", "")
+ .relativize("/a/b", "..")
+ .relativize("/a", "../..")
+ .relativize("/", "../../..")
+ .relativize("/.", "../../..")
+ .relativize("/..", "../../..")
+ .relativize("/../..", "../../..")
+ .relativize("/../../..", "../../..")
+ .relativize("/../../../..", "../../..")
+ .relativize("/a/b/c/d", "d")
.relativize("/a/b/c/d/e", "d/e")
+ .relativize("/a/b/c/.", "") // "." also valid
+ .relativize("/a/b/c/..", "..")
+ .relativize("/a/x", "../../x")
+ .relativize("/x", "../../../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/../a")
+ .relativize("/a", "")
+ .relativize("/", "..")
+ .relativize("/.", "..")
+ .relativize("/..", "..")
+ .relativize("/../..", "..")
+ .relativize("/a/b", "b")
+ .relativize("/a/b/c", "b/c")
+ .relativize("/a/.", "") // "." also valid
+ .relativize("/a/..", "..")
+ .relativize("/x", "../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/../a/b")
+ .relativize("/a/b", "")
+ .relativize("/a", "..")
+ .relativize("/", "../..")
+ .relativize("/.", "../..")
+ .relativize("/..", "../..")
+ .relativize("/../..", "../..")
+ .relativize("/../../..", "../..")
+ .relativize("/../../../..", "../..")
+ .relativize("/a/b/c", "c")
+ .relativize("/a/b/.", "") // "." also valid
+ .relativize("/a/b/..", "..")
+ .relativize("/a/x", "../x")
+ .relativize("/x", "../../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/../../a/b")
+ .relativize("/a/b", "")
+ .relativize("/a", "..")
+ .relativize("/", "../..")
+ .relativize("/.", "../..")
+ .relativize("/..", "../..")
+ .relativize("/../..", "../..")
+ .relativize("/../../..", "../..")
+ .relativize("/../../../..", "../..")
+ .relativize("/a/b/c", "c")
+ .relativize("/a/b/.", "") // "." also valid
+ .relativize("/a/b/..", "..")
+ .relativize("/a/x", "../x")
+ .relativize("/x", "../../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/../a/b/c")
+ .relativize("/a/b/c", "")
+ .relativize("/a/b", "..")
+ .relativize("/a", "../..")
+ .relativize("/", "../../..")
+ .relativize("/.", "../../..")
+ .relativize("/..", "../../..")
+ .relativize("/../..", "../../..")
+ .relativize("/../../..", "../../..")
+ .relativize("/../../../..", "../../..")
+ .relativize("/a/b/c/d", "d")
+ .relativize("/a/b/c/d/e", "d/e")
+ .relativize("/a/b/c/.", "") // "." also valid
+ .relativize("/a/b/c/..", "..")
+ .relativize("/a/x", "../../x")
+ .relativize("/x", "../../../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/../../a/b/c")
+ .relativize("/a/b/c", "")
+ .relativize("/a/b", "..")
+ .relativize("/a", "../..")
+ .relativize("/", "../../..")
+ .relativize("/.", "../../..")
+ .relativize("/..", "../../..")
+ .relativize("/../..", "../../..")
+ .relativize("/../../..", "../../..")
+ .relativize("/../../../..", "../../..")
+ .relativize("/a/b/c/d", "d")
+ .relativize("/a/b/c/d/e", "d/e")
+ .relativize("/a/b/c/.", "") // "." also valid
+ .relativize("/a/b/c/..", "..")
.relativize("/a/x", "../../x")
- .relativize("/x", "../../../x");
+ .relativize("/x", "../../../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/../../../a/b/c")
+ .relativize("/a/b/c", "")
+ .relativize("/a/b", "..")
+ .relativize("/a", "../..")
+ .relativize("/", "../../..")
+ .relativize("/.", "../../..")
+ .relativize("/..", "../../..")
+ .relativize("/../..", "../../..")
+ .relativize("/../../..", "../../..")
+ .relativize("/../../../..", "../../..")
+ .relativize("/a/b/c/d", "d")
+ .relativize("/a/b/c/d/e", "d/e")
+ .relativize("/a/b/c/.", "") // "." also valid
+ .relativize("/a/b/c/..", "..")
+ .relativize("/a/x", "../../x")
+ .relativize("/x", "../../../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/./a")
+ .relativize("/a", "")
+ .relativize("/", "..")
+ .relativize("/.", "..")
+ .relativize("/..", "..")
+ .relativize("/../..", "..")
+ .relativize("/a/b", "b")
+ .relativize("/a/b/c", "b/c")
+ .relativize("/a/.", "") // "." also valid
+ .relativize("/a/..", "..")
+ .relativize("/x", "../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/../a")
+ .relativize("/a", "")
+ .relativize("/", "..")
+ .relativize("/.", "..")
+ .relativize("/..", "..")
+ .relativize("/../..", "..")
+ .relativize("/a/b", "b")
+ .relativize("/a/b/c", "b/c")
+ .relativize("/a/.", "") // "." also valid
+ .relativize("/a/..", "..")
+ .relativize("/x", "../x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/a/..")
+ .relativize("/a", "a")
+ .relativize("/", "") // "." is also valid
+ .relativize("/.", "")
+ .relativize("/..", "")
+ .relativize("/../..", "")
+ .relativize("/a/.", "a")
+ .relativize("/a/..", "")
+ .relativize("/x", "x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("/")
+ .relativize("/a", "a")
+ .relativize("/", "") // "." is also valid
+ .relativize("/.", "")
+ .relativize("/..", "")
+ .relativize("/../..", "")
+ .relativize("/a/.", "a")
+ .relativize("/a/..", "")
+ .relativize("/x", "x")
+ .relativizeFail("x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("..");
+ test("a")
+ .relativize("a", "")
+ .relativize("", "..")
+ .relativize(".", "..")
+ .relativize("..", "../..")
+ .relativize("../..", "../../..")
+ .relativize("./..", "../..")
+ .relativize("a/b", "b")
+ .relativize("a/b/c", "b/c")
+ .relativize("../x", "../../x")
+ .relativizeFail("/")
+ .relativizeFail("/x");
+ test("a/b")
+ .relativize("a/b", "")
+ .relativize("a", "..")
+ .relativize("", "../..")
+ .relativize(".", "../..")
+ .relativize("..", "../../..")
+ .relativize("../..", "../../../..")
+ .relativize("./..", "../../..")
+ .relativize("a/b/c", "c")
+ .relativize("../x", "../../../x")
+ .relativizeFail("/")
+ .relativizeFail("/x");
test("a/b/c")
+ .relativize("a/b/c", "")
+ .relativize("a/b", "..")
+ .relativize("a", "../..")
+ .relativize("", "../../..")
+ .relativize(".", "../../..")
+ .relativize("..", "../../../..")
+ .relativize("../..", "../../../../..")
+ .relativize("./..", "../../../..")
.relativize("a/b/c/d", "d")
+ .relativize("a/b/c/d/e", "d/e")
.relativize("a/x", "../../x")
- .relativize("x", "../../../x")
- .relativize("", "../../..");
+ .relativize("../x", "../../../../x")
+ .relativizeFail("/")
+ .relativizeFail("/x");
test("")
.relativize("a", "a")
.relativize("a/b/c", "a/b/c")
- .relativize("", "");
+ .relativize("", "")
+ .relativize(".", ".")
+ .relativize("..", "..")
+ .relativize("../..", "../..")
+ .relativize("./..", "./..") // ".." also valid
+ .relativizeFail("/")
+ .relativizeFail("/x");
+ test("..")
+ .relativize("../a", "a")
+ .relativize("..", "")
+ .relativize("./..", "")
+ .relativizeFail("/")
+ .relativizeFail("/x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("x");
+ test("../a")
+ .relativize("../a/b", "b")
+ .relativize("../a", "")
+ .relativize("..", "..")
+ .relativize("./..", "..")
+ .relativizeFail("/")
+ .relativizeFail("/x")
+ .relativizeFail("")
+ .relativizeFail(".")
+ .relativizeFail("x");
+ test("../a/b")
+ .relativize("../a/b/c", "c")
+ .relativize("../a/b", "")
+ .relativize("../a", "..")
+ .relativize("..", "../..")
+ .relativize("./..", "../..")
+ .relativizeFail("/")
+ .relativizeFail("/x")
+ .relativizeFail("")
+ .relativizeFail("x");
+ test("a/..")
+ .relativize("b", "b")
+ .relativize("", "")
+ .relativize(".", "") // "." also valid
+ .relativize("..", "..")
+ .relativize("a/../b", "b")
+ .relativize("a/..", "")
+ .relativize("../b", "../b")
+ .relativize("b/..", "")
+ .relativizeFail("/")
+ .relativizeFail("/x");
+ test("a/../b")
+ .relativize("a/../b", "")
+ .relativize("a/..", "..")
+ .relativize("", "..")
+ .relativize(".", "..")
+ .relativize("..", "../..")
+ .relativize("b", "")
+ .relativize("c", "../c")
+ .relativize("../c", "../../c")
+ .relativize("a/../b/c", "c")
+ .relativizeFail("/")
+ .relativizeFail("/x");
// normalize
test("/")