added a test to PathTest which tests Pop semantics. Right now, we will only support Pop.last -- but we are staged for support Pop.first in the future... if we want.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/07c92d92 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/07c92d92 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/07c92d92 Branch: refs/heads/TINKERPOP-1625 Commit: 07c92d92a444f865a954bcf0ac2e660cc3ca3bb9 Parents: 9160573 Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Thu Mar 23 09:53:59 2017 -0600 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Thu Mar 23 09:53:59 2017 -0600 ---------------------------------------------------------------------- .../gremlin/process/traversal/PathTest.java | 40 ++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/07c92d92/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java index ce21732..e9630f0 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java @@ -428,7 +428,7 @@ public class PathTest { assertTrue(subPath.labels().get(1).contains("d")); assertEquals(1, subPath.labels().get(1).size()); /// - subPath = path.subPath("c",null); + subPath = path.subPath("c", null); assertEquals(2, subPath.size()); assertEquals(2, subPath.objects().size()); assertEquals(2, subPath.labels().size()); @@ -440,7 +440,12 @@ public class PathTest { assertTrue(subPath.labels().get(1).contains("d")); assertEquals(1, subPath.labels().get(1).size()); /// - subPath = path.subPath("a","d"); + subPath = path.subPath("a", "d"); + assertEquals(4, subPath.size()); + assertEquals(4, subPath.objects().size()); + assertEquals(4, subPath.labels().size()); + /// + subPath = path.subPath(null, "d"); assertEquals(4, subPath.size()); assertEquals(4, subPath.objects().size()); assertEquals(4, subPath.labels().size()); @@ -449,7 +454,7 @@ public class PathTest { subPath = path.subPath("d", "a"); fail("Path labels must be ordered along path"); } catch (final IllegalArgumentException e) { - assertEquals(Path.Exceptions.couldNotIsolatedSubPath("d","a").getMessage(), e.getMessage()); + assertEquals(Path.Exceptions.couldNotIsolatedSubPath("d", "a").getMessage(), e.getMessage()); } /// try { @@ -467,4 +472,33 @@ public class PathTest { } }); } + + @Test + public void shouldHaveSubPathPopSupport() { + PATH_SUPPLIERS.forEach(supplier -> { + Path path = supplier.get(); + path = path.extend("marko", Collections.singleton("a")); + path = path.extend("stephen", Collections.singleton("a")); + path = path.extend("matthias", new HashSet<>(Arrays.asList("c", "x"))); + path = path.extend("bob", Collections.singleton("c")); + assertEquals(4, path.size()); + assertEquals(4, path.objects().size()); + assertEquals(4, path.labels().size()); + /// + Path subPath = path.subPath("a", "c"); + assertEquals(3, subPath.size()); + assertEquals(3, subPath.objects().size()); + assertEquals(3, subPath.labels().size()); + assertEquals("stephen", subPath.objects().get(0)); + assertEquals("matthias", subPath.objects().get(1)); + assertEquals("bob", subPath.objects().get(2)); + assertTrue(subPath.labels().get(0).contains("a")); + assertEquals(1, subPath.labels().get(0).size()); + assertTrue(subPath.labels().get(1).contains("c")); + assertTrue(subPath.labels().get(1).contains("x")); + assertEquals(2, subPath.labels().get(1).size()); + assertTrue(subPath.labels().get(2).contains("c")); + assertEquals(1, subPath.labels().get(2).size()); + }); + } }