package ch.x42.terye.path;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import javax.jcr.RepositoryException;
import org.junit.Test;
public class PathTest {
@Test
public void testIsNormalized() throws RepositoryException {
assertTrue(PathFactory.create("/").isNormalized());
assertTrue(PathFactory.create(".").isNormalized());
assertTrue(PathFactory.create("..").isNormalized());
assertTrue(PathFactory.create("/a").isNormalized());
assertTrue(PathFactory.create("a").isNormalized());
assertTrue(PathFactory.create("a/b").isNormalized());
assertTrue(PathFactory.create("/a/b").isNormalized());
assertTrue(PathFactory.create("../..").isNormalized());
assertTrue(PathFactory.create("../../a").isNormalized());
assertTrue(PathFactory.create("../../a/b/c").isNormalized());
assertFalse(PathFactory.create("/.").isNormalized());
assertFalse(PathFactory.create("./a").isNormalized());
assertFalse(PathFactory.create("./..").isNormalized());
assertFalse(PathFactory.create("../.").isNormalized());
assertFalse(PathFactory.create("/..").isNormalized());
assertFalse(PathFactory.create("/a/..").isNormalized());
assertFalse(PathFactory.create("/a/.").isNormalized());
assertFalse(PathFactory.create("../../a/.").isNormalized());
assertFalse(PathFactory.create("../../a/..").isNormalized());
assertFalse(PathFactory.create("a/b/../..").isNormalized());
assertFalse(PathFactory.create("../a/../../a/b/c").isNormalized());
}
private void assertNormalizedPathsEqual(String expected, String pathString)
throws RepositoryException {
assertEquals(expected, PathFactory.create(pathString)
.getNormalizedPath().toString());
}
@Test
public void testGetNormalized() throws RepositoryException {
assertNormalizedPathsEqual("/", "/");
assertNormalizedPathsEqual("/", "/.");
assertNormalizedPathsEqual("/", "/a/..");
assertNormalizedPathsEqual("/", "/a/../.");
assertNormalizedPathsEqual("/", "/a/./..");
assertNormalizedPathsEqual("/", "/./././././.");
assertNormalizedPathsEqual("/", "/a/b/c/.././.././././../");
assertNormalizedPathsEqual("/b", "/a/.././b");
assertNormalizedPathsEqual("/a/b/d", "/a/b/c/../d");
assertNormalizedPathsEqual("/c", "/a/../b/../c");
assertNormalizedPathsEqual(".", ".");
assertNormalizedPathsEqual("a", "./a");
assertNormalizedPathsEqual(".", "./a/..");
assertNormalizedPathsEqual(".", "a/..");
assertNormalizedPathsEqual("a", "a");
assertNormalizedPathsEqual("..", "./a/b/.././a/../../..");
assertNormalizedPathsEqual("../../..", "../../asdf/../..");
assertNormalizedPathsEqual("..", "./..");
assertNormalizedPathsEqual(".", "./");
assertNormalizedPathsEqual("/", "/a/./b/../../");
assertNormalizedPathsEqual("/a/b", "/a/b/");
}
}