package com.beijunyi.parallelgit.filesystem;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class GitPathRelativizeTest extends AbstractGitFileSystemTest {
@Before
public void setupFileSystem() throws IOException {
initGitFileSystem();
}
@Test
public void absolutePathRelativizesParentTest() {
GitPath path = gfs.getPath("/a/b/c");
GitPath parent = gfs.getPath("/a/b");
GitPath result = path.relativize(parent);
assertEquals("..", result.toString());
}
@Test
public void absolutePathRelativizesGrandParentTest() {
GitPath path = gfs.getPath("/a/b/c");
GitPath parent = gfs.getPath("/a");
GitPath result = path.relativize(parent);
assertEquals("../..", result.toString());
}
@Test
public void absolutePathRelativizesChildTest() {
GitPath path = gfs.getPath("/a/b");
GitPath child = gfs.getPath("/a/b/c");
GitPath result = path.relativize(child);
assertEquals("c", result.toString());
}
@Test
public void absolutePathRelativizesGrandChildTest() {
GitPath path = gfs.getPath("/a");
GitPath child = gfs.getPath("/a/b/c");
GitPath result = path.relativize(child);
assertEquals("b/c", result.toString());
}
@Test
public void absolutePathRelativizesSiblingTest() {
GitPath path = gfs.getPath("/a/b/c");
GitPath sibling = gfs.getPath("/a/b/d");
GitPath result = path.relativize(sibling);
assertEquals("../d", result.toString());
}
@Test
public void absolutePathRelativizesSamePathTest() {
GitPath path = gfs.getPath("/a/b/c");
GitPath samePath = gfs.getPath("/a/b/c");
GitPath result = path.relativize(samePath);
assertEquals("", result.toString());
}
@Test(expected = IllegalArgumentException.class)
public void absolutePathRelativizesEmptyPathTest() {
GitPath path = gfs.getPath("/a/b/c");
GitPath emptyPath = gfs.getPath("");
path.relativize(emptyPath);
}
@Test(expected = IllegalArgumentException.class)
public void absolutePathRelativizesRelativePathTest() {
GitPath path = gfs.getPath("/a/b");
GitPath relativePath = gfs.getPath("a/b/c");
path.relativize(relativePath);
}
@Test
public void rootPathRelativizesAbsolutePathTest() {
GitPath path = gfs.getPath("/");
GitPath absolutePath = gfs.getPath("/a/b/c");
GitPath result = path.relativize(absolutePath);
assertEquals("a/b/c", result.toString());
}
@Test
public void rootPathRelativizesRootPathTest() {
GitPath path = gfs.getPath("/");
GitPath rootPath = gfs.getPath("/");
GitPath result = path.relativize(rootPath);
assertEquals("", result.toString());
}
@Test(expected = IllegalArgumentException.class)
public void rootPathRelativizesRelativePathTest() {
GitPath path = gfs.getPath("/");
GitPath relativePath = gfs.getPath("a/b/c");
GitPath result = path.relativize(relativePath);
assertEquals(relativePath.toString(), result.toString());
}
@Test
public void relativePathRelativizesParentTest() {
GitPath path = gfs.getPath("a/b/c");
GitPath parent = gfs.getPath("a/b");
GitPath result = path.relativize(parent);
assertEquals("..", result.toString());
}
@Test
public void relativePathRelativizesGrandParentTest() {
GitPath path = gfs.getPath("a/b/c");
GitPath parent = gfs.getPath("a");
GitPath result = path.relativize(parent);
assertEquals("../..", result.toString());
}
@Test
public void relativePathRelativizesChildTest() {
GitPath path = gfs.getPath("a/b");
GitPath child = gfs.getPath("a/b/c");
GitPath result = path.relativize(child);
assertEquals("c", result.toString());
}
@Test
public void relativePathRelativizesGrandChildTest() {
GitPath path = gfs.getPath("a");
GitPath child = gfs.getPath("a/b/c");
GitPath result = path.relativize(child);
assertEquals("b/c", result.toString());
}
@Test
public void relativePathRelativizesSiblingTest() {
GitPath path = gfs.getPath("/a/b/c");
GitPath sibling = gfs.getPath("/a/b/d");
GitPath result = path.relativize(sibling);
assertEquals("../d", result.toString());
}
@Test
public void relativePathRelativizesSamePathTest() {
GitPath path = gfs.getPath("a/b/c");
GitPath samePath = gfs.getPath("a/b/c");
GitPath result = path.relativize(samePath);
assertEquals("", result.toString());
}
@Test
public void relativePathRelativizesEmptyPathTest() {
GitPath path = gfs.getPath("a/b/c");
GitPath emptyPath = gfs.getPath("");
GitPath result = path.relativize(emptyPath);
assertEquals("../../..", result.toString());
}
@Test(expected = IllegalArgumentException.class)
public void relativePathRelativizesAbsolutePathTest() {
GitPath path = gfs.getPath("a/b");
GitPath absolutePath = gfs.getPath("/a/b/c");
path.relativize(absolutePath);
}
@Test(expected = IllegalArgumentException.class)
public void emptyPathRelativizesAbsolutePathTest() {
GitPath path = gfs.getPath("");
GitPath absolutePath = gfs.getPath("/a/b/c");
GitPath result = path.relativize(absolutePath);
assertEquals(absolutePath.toString(), result.toString());
}
@Test
public void emptyPathRelativizesRelativePathTest() {
GitPath path = gfs.getPath("");
GitPath relativePath = gfs.getPath("a/b/c");
GitPath result = path.relativize(relativePath);
assertEquals(relativePath.toString(), result.toString());
}
@Test
public void emptyPathRelativizesEmptyPathTest() {
GitPath path = gfs.getPath("");
GitPath emptyPath = gfs.getPath("");
GitPath result = path.relativize(emptyPath);
assertEquals(emptyPath.toString(), result.toString());
}
}