Got ComplexTest setup for @dkuppitz to go to town on. I don't think we need to 
include a GroovyComplexTest because @spmallette is doing the work for master/ 
that gets rid of the need for gremlin-groovy-test and thus, no need to waste 
the energy/time on GroovyComplexTest.


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

Branch: refs/heads/TINKERPOP-1564
Commit: e01aa721fd13e6cb6591aa3f54314071e118a087
Parents: 9e82b4d
Author: Marko A. Rodriguez <okramma...@gmail.com>
Authored: Mon Nov 28 15:49:08 2016 -0700
Committer: Marko A. Rodriguez <okramma...@gmail.com>
Committed: Mon Nov 28 15:49:08 2016 -0700

----------------------------------------------------------------------
 .../gremlin/process/ProcessComputerSuite.java   |   6 +-
 .../gremlin/process/ProcessStandardSuite.java   |   4 +-
 .../process/traversal/step/ComplexTest.java     | 104 +++++++++++++++++++
 3 files changed, 111 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e01aa721/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index 63c6e68..1d69a76 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -27,10 +27,11 @@ import 
org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.Pee
 import 
org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgramTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import 
org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ComplexTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndTest;
@@ -86,8 +87,8 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffect
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
@@ -185,6 +186,7 @@ public class ProcessComputerSuite extends 
AbstractGremlinSuite {
             TreeTest.Traversals.class,
 
             // compliance
+            ComplexTest.Traversals.class,
             TraversalInterruptionComputerTest.class,
 
             // algorithms

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e01aa721/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index c574601..5f469e0 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -22,6 +22,7 @@ import org.apache.tinkerpop.gremlin.AbstractGremlinSuite;
 import org.apache.tinkerpop.gremlin.process.traversal.CoreTraversalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import 
org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ComplexTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalTest;
@@ -80,11 +81,11 @@ import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffect
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeTest;
-import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest;
+import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategyProcessTest;
 import 
org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.StructureStandardSuite;
@@ -174,6 +175,7 @@ public class ProcessStandardSuite extends 
AbstractGremlinSuite {
             TreeTest.Traversals.class,
 
             // compliance
+            ComplexTest.Traversals.class,
             CoreTraversalTest.class,
             TraversalInterruptionTest.class,
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e01aa721/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
new file mode 100644
index 0000000..a33276f
--- /dev/null
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ComplexTest.java
@@ -0,0 +1,104 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.step;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+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.step.util.BulkSet;
+import org.apache.tinkerpop.gremlin.structure.Column;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import static 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(GremlinProcessRunner.class)
+public abstract class ComplexTest extends AbstractGremlinProcessTest {
+
+    public abstract Traversal<Vertex, String> getClassicRecommendation();
+
+    @Test
+    @LoadGraphWith(LoadGraphWith.GraphData.GRATEFUL)
+    public void classicRecommendation() {
+        final Traversal<Vertex, String> traversal = getClassicRecommendation();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList("LET IT GROW", "UNCLE JOHNS BAND", "I KNOW 
YOU RIDER", "SHIP OF FOOLS", "GOOD LOVING"), traversal);
+        final List<Map<String, Object>> list = new 
ArrayList<>(traversal.asAdmin().getSideEffects().<BulkSet<Map<String, 
Object>>>get("m"));
+        assertEquals(5, list.size());
+        assertFalse(traversal.hasNext());
+        assertEquals("LET IT GROW", list.get(0).get("x"));
+        assertEquals(276, list.get(0).get("y"));
+        assertEquals(21L, list.get(0).get("z"));
+        //
+        assertEquals("UNCLE JOHNS BAND", list.get(1).get("x"));
+        assertEquals(332, list.get(1).get("y"));
+        assertEquals(20L, list.get(1).get("z"));
+        //
+        assertEquals("I KNOW YOU RIDER", list.get(2).get("x"));
+        assertEquals(550, list.get(2).get("y"));
+        assertEquals(20L, list.get(2).get("z"));
+        //
+        assertEquals("SHIP OF FOOLS", list.get(3).get("x"));
+        assertEquals(225, list.get(3).get("y"));
+        assertEquals(18L, list.get(3).get("z"));
+        //
+        assertEquals("GOOD LOVING", list.get(4).get("x"));
+        assertEquals(428, list.get(4).get("y"));
+        assertEquals(18L, list.get(4).get("z"));
+        //
+        checkSideEffects(traversal.asAdmin().getSideEffects(), "m", 
BulkSet.class, "stash", BulkSet.class);
+
+    }
+
+    public static class Traversals extends ComplexTest {
+
+        @Override
+        public Traversal<Vertex, String> getClassicRecommendation() {
+            return g.V().has("name", "DARK 
STAR").as("a").out("followedBy").aggregate("stash").
+                    
in("followedBy").where(P.neq("a").and(P.not(P.within("stash")))).
+                    groupCount().
+                    unfold().
+                    project("x", "y", "z").
+                    by(select(Column.keys).values("name")).
+                    by(select(Column.keys).values("performances")).
+                    by(select(Column.values)).
+                    order().
+                    by(select("z"), Order.decr).
+                    by(select("y"), Order.incr).
+                    limit(5).store("m").select("x");
+        }
+
+    }
+}
+

Reply via email to