/** * {@inheritDoc} * * @see org.modeshape.graph.property.Path#getSegment(int) */ @Override public Segment getSegment( int index ) { if (index == (size - 1)) return child; return parent.getSegment(index); }
@Test public void shouldCreateRelativePathWithMultipleSegmentIncludingParent() { path = paths.create("A/B/C[1]/../../D[2]"); assertThat(path.isAbsolute(), is(false)); 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(Path.PARENT_SEGMENT)); assertThat(path.getSegment(4), is(Path.PARENT_SEGMENT)); assertThat(path.getSegment(5), is(segment("D[2]"))); assertThat(path.size(), is(6)); }
@Test public void shouldCreateRelativePathWithMultipleSegmentIncludingSelf() { path = paths.create("A/B/C[1]/././D[2]"); assertThat(path.isAbsolute(), is(false)); 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(Path.SELF_SEGMENT)); assertThat(path.getSegment(4), is(Path.SELF_SEGMENT)); assertThat(path.getSegment(5), is(segment("D[2]"))); assertThat(path.size(), is(6)); }
@Test public void shouldCreateAbsolutePathWithMultipleSegmentIncludingParent() { path = paths.create("/A/B/C[1]/../../D[2]"); 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(Path.PARENT_SEGMENT)); assertThat(path.getSegment(4), is(Path.PARENT_SEGMENT)); assertThat(path.getSegment(5), is(segment("D[2]"))); assertThat(path.size(), is(6)); }
@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)); }
@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 shouldParsePathFromStringWithRootSegmentAndIdentifierSegment() { path = paths.create("/A/B/C/D[3]"); 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[3]"))); assertThat(path.size(), is(4)); }
@Test public void shouldParsePathFromStringWithNamespacesAndEndingWithSameNameSiblingIndexButWithoutTrailingSlash() { path = paths.create("/A/ex:B/ex:C/ex:D[3]"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("A[1]"))); assertThat(path.getSegment(1), is(segment("ex:B[1]"))); assertThat(path.getSegment(2), is(segment("ex:C[1]"))); assertThat(path.getSegment(3), is(segment("ex:D[3]"))); assertThat(path.size(), is(4)); }
@Test public void shouldParsePathFromStringWithNamespacesAndRootSegmentAndIdentifierSegment() { path = paths.create("/A/B/C/D[3]"); 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[3]"))); assertThat(path.size(), is(4)); }
@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 shouldParsePathFromStringWithNamespacesAndWithMultipleChildSegmentsWithSameNameSiblingIndex() { path = paths.create("/ex:A/ex:B[2]/ex:C"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("ex:A[1]"))); assertThat(path.getSegment(1), is(segment("ex:B[2]"))); assertThat(path.getSegment(2), is(segment("ex:C[1]"))); assertThat(path.size(), is(3)); }
@Test public void shouldParsePathFromStringWithoutRootSegmentAndIdentifierSegment() { path = paths.create("[f81d4fae-7dec-11d0-a765-00a0c91e6bf6]"); assertThat(path.isAbsolute(), is(true)); assertThat(path.isIdentifier(), is(true)); assertThat(path.size(), is(1)); assertThat(path.getSegment(0), is(segment("[f81d4fae-7dec-11d0-a765-00a0c91e6bf6]"))); assertThat(path.getSegment(0).getName(), is(name("f81d4fae-7dec-11d0-a765-00a0c91e6bf6"))); assertThat(path.getSegment(0).getIndex(), is(1)); assertThat(path.getSegment(0).isIdentifier(), is(true)); }
@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 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 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 shouldCreateAbsolutePathWithSingleSegment() { path = paths.create("/A"); assertThat(path.isAbsolute(), is(true)); assertThat(path.getSegment(0), is(segment("A[1]"))); assertThat(path.size(), is(1)); }