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());
+        });
+    }
 }

Reply via email to