diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java b/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java index 388c3fd754..04015dd28f 100644 --- a/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java +++ b/src/test/java/com/google/devtools/build/lib/windows/PathWindowsTest.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.Path.PathFactory; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.lib.vfs.RootedPath; import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; import com.google.devtools.build.lib.windows.WindowsFileSystem.WindowsPath; import java.util.ArrayList; @@ -65,6 +66,11 @@ public class PathWindowsTest { protected PathFactory getPathFactory() { return WindowsFileSystem.getPathFactoryForTesting(shortPathResolver); } + + @Override + public boolean isFilePathCaseSensitive() { + return false; + } }; root = (WindowsPath) filesystem.getRootDirectory().getRelative("C:/"); root.createDirectory(); @@ -280,4 +286,53 @@ public class PathWindowsTest { "D:/program files/microsoft something/foo/~bar_hello", "D:/program files/microsoft something/foo/will.exist"); } + + @Test + public void testCaseInsensitivePathFragment() { + // equals + assertThat(new PathFragment("c:/FOO/BAR")).isEqualTo(new PathFragment("c:\\foo\\bar")); + assertThat(new PathFragment("c:/FOO/BAR")).isNotEqualTo(new PathFragment("d:\\foo\\bar")); + assertThat(new PathFragment("c:/FOO/BAR")).isNotEqualTo(new PathFragment("/foo/bar")); + // equals for the string representation + assertThat(new PathFragment("c:/FOO/BAR").toString()) + .isNotEqualTo(new PathFragment("c:/foo/bar").toString()); + // hashCode + assertThat(new PathFragment("c:/FOO/BAR").hashCode()) + .isEqualTo(new PathFragment("c:\\foo\\bar").hashCode()); + assertThat(new PathFragment("c:/FOO/BAR").hashCode()) + .isNotEqualTo(new PathFragment("d:\\foo\\bar").hashCode()); + assertThat(new PathFragment("c:/FOO/BAR").hashCode()) + .isNotEqualTo(new PathFragment("/foo/bar").hashCode()); + // compareTo + assertThat(new PathFragment("c:/FOO/BAR").compareTo(new PathFragment("c:\\foo\\bar"))) + .isEqualTo(0); + assertThat(new PathFragment("c:/FOO/BAR").compareTo(new PathFragment("d:\\foo\\bar"))) + .isLessThan(0); + assertThat(new PathFragment("c:/FOO/BAR").compareTo(new PathFragment("/foo/bar"))) + .isGreaterThan(0); + // startsWith + assertThat(new PathFragment("c:/FOO/BAR").startsWith(new PathFragment("c:\\foo"))).isTrue(); + assertThat(new PathFragment("c:/FOO/BAR").startsWith(new PathFragment("d:\\foo"))).isFalse(); + // endsWith + assertThat(new PathFragment("c:/FOO/BAR/BAZ").endsWith(new PathFragment("bar\\baz"))).isTrue(); + assertThat(new PathFragment("c:/FOO/BAR/BAZ").endsWith(new PathFragment("/bar/baz"))).isFalse(); + assertThat(new PathFragment("c:/FOO/BAR/BAZ").endsWith(new PathFragment("d:\\bar\\baz"))) + .isFalse(); + // relativeTo + assertThat(new PathFragment("c:/FOO/BAR/BAZ/QUX").relativeTo(new PathFragment("c:\\foo\\bar"))) + .isEqualTo(new PathFragment("Baz/Qux")); + } + + @Test + public void testCaseInsensitiveRootedPath() { + Path ancestor = filesystem.getPath("C:\\foo\\bar"); + assertThat(ancestor).isInstanceOf(WindowsPath.class); + Path child = filesystem.getPath("C:\\FOO\\Bar\\baz"); + assertThat(child).isInstanceOf(WindowsPath.class); + assertThat(child.startsWith(ancestor)).isTrue(); + assertThat(child.relativeTo(ancestor)).isEqualTo(new PathFragment("baz")); + RootedPath actual = RootedPath.toRootedPath(ancestor, child); + assertThat(actual.getRoot()).isEqualTo(ancestor); + assertThat(actual.getRelativePath()).isEqualTo(new PathFragment("baz")); + } } |