added a ComplexTest for simplePath().from().to() that was provided by 
@dkuppitz. Works for both OLTP and OLAP. Sweet.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b9111c90
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b9111c90
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b9111c90

Branch: refs/heads/TINKERPOP-1625
Commit: b9111c90350548d675a8db3b95fe08c77f72a5d3
Parents: 07c92d9
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Thu Mar 23 12:09:27 2017 -0600
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Thu Mar 23 12:09:27 2017 -0600

----------------------------------------------------------------------
 .../process/traversal/step/ComplexTest.java     | 49 +++++++++++++++++---
 1 file changed, 42 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b9111c90/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java
index 98d19b5..d53f9d5 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java
@@ -27,6 +27,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathRetractionStrategy;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
@@ -74,6 +75,16 @@ import static org.junit.Assert.assertTrue;
 @RunWith(GremlinProcessRunner.class)
 public abstract class ComplexTest extends AbstractGremlinProcessTest {
 
+    public abstract Traversal<Vertex, String> getClassicRecommendation();
+
+    public abstract Traversal<Vertex, Map<String, Map<String, Map<String, 
Object>>>> getCoworkerSummary();
+
+    public abstract Traversal<Vertex, Map<String, Map<String, Map<String, 
Object>>>> getCoworkerSummaryOLTP();
+
+    public abstract Traversal<Vertex, List<Object>> getAllShortestPaths();
+
+    public abstract Traversal<Vertex, Map<String, List<String>>> 
getPlaylistPaths();
+
     /**
      * Checks the result of both coworkerSummary tests, which is expected to 
look as follows:
      * <p>
@@ -112,13 +123,6 @@ public abstract class ComplexTest extends 
AbstractGremlinProcessTest {
         }
     }
 
-    public abstract Traversal<Vertex, String> getClassicRecommendation();
-
-    public abstract Traversal<Vertex, Map<String, Map<String, Map<String, 
Object>>>> getCoworkerSummary();
-
-    public abstract Traversal<Vertex, Map<String, Map<String, Map<String, 
Object>>>> getCoworkerSummaryOLTP();
-
-    public abstract Traversal<Vertex, List<Object>> getAllShortestPaths();
 
     @Test
     @LoadGraphWith(LoadGraphWith.GraphData.GRATEFUL)
@@ -220,6 +224,24 @@ public abstract class ComplexTest extends 
AbstractGremlinProcessTest {
         checkResults(allShortestPaths, traversal);
     }
 
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.GRATEFUL)
+    public void playlistPaths() {
+        final Traversal<Vertex, Map<String, List<String>>> traversal = 
getPlaylistPaths();
+        printTraversalForm(traversal);
+        assertTrue(traversal.hasNext());
+        Map<String, List<String>> map = traversal.next();
+        assertTrue(map.get("artists").contains("Bob_Dylan"));
+        boolean hasJohnnyCash = false;
+        while (traversal.hasNext()) {
+            map = traversal.next();
+            if (map.get("artists").contains("Johnny_Cash"))
+                hasJohnnyCash = true;
+        }
+        assertTrue(hasJohnnyCash);
+        assertTrue(map.get("artists").contains("Grateful_Dead"));
+    }
+
     public static class Traversals extends ComplexTest {
 
         @Override
@@ -287,6 +309,19 @@ public abstract class ComplexTest extends 
AbstractGremlinProcessTest {
                             by(select("p").fold()).select("tgt").barrier()).
                     
cap("x").select(values).unfold().unfold().map(unfold().id().fold());
         }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<String>>> getPlaylistPaths() 
{
+            return g.V().has("name", "Bob_Dylan").in("sungBy").as("a").
+                    
repeat(out().order().by(Order.shuffle).simplePath().from("a")).
+                    until(out("writtenBy").has("name", 
"Johnny_Cash")).limit(1).as("b").
+                    
repeat(out().order().by(Order.shuffle).as("c").simplePath().from("b").to("c")).
+                    until(out("sungBy").has("name", "Grateful_Dead")).limit(1).
+                    path().from("a").unfold().
+                    <List<String>>project("song", "artists").
+                    by("name").
+                    by(__.coalesce(out("sungBy", 
"writtenBy").dedup().values("name"), constant("Unknown")).fold());
+        }
     }
 }
 

Reply via email to