package ch.x42.terye; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import javax.jcr.PathNotFoundException; import org.junit.Test; public class PathTest { private void assertPathsEqual(String expected, Path path) throws PathNotFoundException { assertEquals(expected, path.getCanonical().toString()); } @Test public void testIsNormalized() { assertTrue(new Path("/").isNormalized()); assertFalse(new Path("/..").isNormalized()); assertFalse(new Path("/.").isNormalized()); assertTrue(new Path("/a/b").isNormalized()); assertFalse(new Path("/a/b/..").isNormalized()); assertFalse(new Path("/a/b/.").isNormalized()); assertTrue(new Path("..").isNormalized()); assertFalse(new Path(".").isNormalized()); assertTrue(new Path("../../a").isNormalized()); assertFalse(new Path("../../a/.").isNormalized()); assertFalse(new Path("../../a/..").isNormalized()); assertFalse(new Path("a/b/../..").isNormalized()); } @Test public void testGetCanonical() throws PathNotFoundException { assertPathsEqual("/", new Path("/")); assertPathsEqual("/", new Path("/.")); assertPathsEqual("/", new Path("/a/..")); assertPathsEqual("/", new Path("/a/../.")); assertPathsEqual("/", new Path("/a/./..")); assertPathsEqual("/", new Path("/./././././././.")); assertPathsEqual("/", new Path("/a/b/c/.././.././././../")); assertPathsEqual("/b", new Path("/a/.././b")); assertPathsEqual("/a/b/d", new Path("/a/b/c/../d")); assertPathsEqual("/c", new Path("/a/../b/../c")); } @Test(expected = PathNotFoundException.class) public void testGetCanonical2() throws PathNotFoundException { new Path("/a/b/../../../c").getCanonical().toString(); } }