@Test public void shouldConsiderAsNotNormalizedAnAbsolutePathWithParentSegmentAtFront() { List<Path.Segment> segments = new ArrayList<Path.Segment>(); segments.add(Path.PARENT_SEGMENT); segments.addAll(validSegmentsList); path = new BasicPath(segments, true); assertThat(path.isAbsolute(), is(true)); assertThat(path.isNormalized(), is(false)); assertThat(path.getSegmentsList(), is(segments)); assertThat(path.size(), is(segments.size())); }
@Test public void shouldConsiderAsNormalizedARelativePathWithParentSegmentAtFront() { List<Path.Segment> segments = new ArrayList<Path.Segment>(); segments.add(Path.PARENT_SEGMENT); segments.addAll(validSegmentsList); path = new BasicPath(segments, false); assertThat(path.isAbsolute(), is(false)); assertThat(path.isNormalized(), is(true)); assertThat(path.getSegmentsList(), is(segments)); assertThat(path.size(), is(segments.size())); }
@Test public void shouldCreateRelativePathWithSelfSegment() { validSegmentsList.add(Path.SELF_SEGMENT); path = new BasicPath(validSegmentsList, false); assertThat(path.isAbsolute(), is(false)); assertThat(path.isNormalized(), is(false)); assertThat(path.getSegmentsList(), is(validSegmentsList)); assertThat(path.size(), is(validSegmentsList.size())); }
@Test public void shouldCreateAbsolutePathWithSelfSegment() { validSegmentsList.add(Path.SELF_SEGMENT); path = new BasicPath(validSegmentsList, true); assertThat(path.isAbsolute(), is(true)); assertThat(path.isNormalized(), is(false)); assertThat(path.getSegmentsList(), is(validSegmentsList)); assertThat(path.size(), is(validSegmentsList.size())); }
@Test public void shouldReturnRootForAnyAncestorExactDegreeFromRoot() { assertThat(path.getAncestor(path.size()), is(ROOT)); assertThat(ROOT.getAncestor(0), is(ROOT)); }
@Test public void shouldCreateRelativePathWithSelfSegment() { validSegmentsList.add(Path.SELF_SEGMENT); path = new BasicPath(validSegmentsList, false); assertThat(path.isAbsolute(), is(false)); assertThat(path.isNormalized(), is(false)); assertThat(path.getSegmentsList(), is(validSegmentsList)); assertThat(path.size(), is(validSegmentsList.size())); }
@Test public void shouldCreateRelativePathFromListOfValidSegments() { path = new BasicPath(validSegmentsList, false); assertThat(path.isAbsolute(), is(false)); assertThat(path.isNormalized(), is(true)); assertThat(path.getSegmentsList(), is(validSegmentsList)); assertThat(path.size(), is(validSegmentsList.size())); }
@Test public void shouldCreateRelativePathWithOnlySelf() { path = paths.create("."); assertThat(path.isAbsolute(), is(false)); assertThat(path.getSegment(0), is(Path.SELF_SEGMENT)); assertThat(path.size(), is(1)); }
@Test public void shouldParsePathFromStringWithRootSegmentAndSelfSegment() { path = paths.create("/."); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(Path.SELF_SEGMENT)); assertThat(path.size(), is(1)); }
@Test public void shouldCreateRelativePathWithSingleSegment() { path = paths.create("A"); assertThat(path.isAbsolute(), is(false)); assertThat(path.getSegment(0), is(segment("A[1]"))); assertThat(path.size(), is(1)); }
@Test public void shouldParsePathFromStringWithNamespacesAndWithSingleChildSegmentWithSameNameSiblingIndex() { path = paths.create("/ex:A[2]"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("ex:A[2]"))); assertThat(path.size(), is(1)); }
@Test public void shouldCreateRelativePathWithOnlySelfSegment() { path = paths.createRelativePath(name(".")); assertThat(path.isAbsolute(), is(false)); assertThat(path.getSegment(0), is(Path.SELF_SEGMENT)); assertThat(path.size(), is(1)); }
@Test public void shouldParsePathFromStringWithNamespacesAndWithSingleChildSegment() { path = paths.create("/ex:A"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("ex:A[1]"))); assertThat(path.size(), is(1)); }
@Test( expected = IndexOutOfBoundsException.class ) public void shouldNotAllowSubpathStartingAtIndexEqualToSize() { if (path.isRoot()) path.subpath(1); path.subpath(path.size()); }
@Test public void shouldConstructRelativePath() { assertThat(pathFactory.create("a/b/c").isAbsolute(), is(false)); assertThat(pathFactory.create("a/b/c").isNormalized(), is(true)); assertThat(pathFactory.create("a/b/c").size(), is(3)); assertThat(pathFactory.create("a/b/c").getString(namespaceRegistry), is("a/b/c")); }
@Test public void shouldParsePathFromStringWithMultipleChildSegments() { path = paths.create("/A/B/C"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("A[1]"))); assertThat(path.getSegment(1), is(segment("B[1]"))); assertThat(path.getSegment(2), is(segment("C[1]"))); assertThat(path.size(), is(3)); }
@Test public void shouldParsePathFromStringWithMultipleChildSegmentsWithSameNameSiblingIndex() { path = paths.create("/A/B[2]/C"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("A[1]"))); assertThat(path.getSegment(1), is(segment("B[2]"))); assertThat(path.getSegment(2), is(segment("C[1]"))); assertThat(path.size(), is(3)); }
@Test public void shouldParsePathFromStringWithoutTrailingSlash() { path = paths.create("/A/B/C/D"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("A[1]"))); assertThat(path.getSegment(1), is(segment("B[1]"))); assertThat(path.getSegment(2), is(segment("C[1]"))); assertThat(path.getSegment(3), is(segment("D[1]"))); assertThat(path.size(), is(4)); }
@Test public void shouldParsePathFromStringWithTrailingSlash() { path = paths.create("/A/B/C/D/"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("A[1]"))); assertThat(path.getSegment(1), is(segment("B[1]"))); assertThat(path.getSegment(2), is(segment("C[1]"))); assertThat(path.getSegment(3), is(segment("D[1]"))); assertThat(path.size(), is(4)); }