You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2018/06/18 15:23:04 UTC
[50/50] tinkerpop git commit: Added failing tests for TINKERPOP-1643.
Added failing tests for TINKERPOP-1643.
Also simplified a few test queries and tweaked the assertions so that they should now work in STANDARD and COMPUTER mode.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9e80e420
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9e80e420
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9e80e420
Branch: refs/heads/TINKERPOP-1643
Commit: 9e80e420fe9a388d104a8fc3dc9e8eb3df0ebb19
Parents: 891bfa3
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Thu Mar 2 12:41:48 2017 +0100
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Mon Jun 18 08:21:22 2018 -0700
----------------------------------------------------------------------
.../step/branch/GroovyRepeatTest.groovy | 24 +++-
.../traversal/step/branch/RepeatTest.java | 126 ++++++++++++++-----
2 files changed, 119 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9e80e420/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
index 581c511..cbabffe 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
@@ -23,8 +23,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal
import org.apache.tinkerpop.gremlin.process.traversal.util.ScriptTraversal
import org.apache.tinkerpop.gremlin.structure.Vertex
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both
-
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
@@ -79,7 +77,7 @@ public abstract class GroovyRepeatTest {
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX() {
- new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both()).times(10).as('a').out().as('b').select('a', 'b')");
+ new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(both()).times(10).as('a').out().as('b').select('a', 'b')")
}
@Override
@@ -107,5 +105,25 @@ public abstract class GroovyRepeatTest {
public Traversal<Vertex, Path> get_g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name() {
new ScriptTraversal<>(g, "gremlin-groovy", "g.V().has('loops','name','loop').repeat(__.in()).times(5).path().by('name')")
}
+
+ @Override
+ public Traversal<Vertex, Long> get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXvX_count() {
+ new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('v').emit.repeat(both.as('v').dedup).select('v').count")
+ }
+
+ @Override
+ public Traversal<Vertex, List<Vertex>> get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXall_vX_order_byXcountXlocalXX() {
+ new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('v').emit.repeat(both.as('v').dedup).select(all, 'v').order.by(count(local))")
+ }
+
+ @Override
+ public Traversal<Vertex, Long> get_g_V_emit_repeatXboth_dedupX_count() {
+ new ScriptTraversal<>(g, "gremlin-groovy", "g.V.emit.repeat(both.dedup).count")
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_emit_repeatXboth_dedupX_order_byXcountXlocalXX() {
+ new ScriptTraversal<>(g, "gremlin-groovy", "g.V.emit.repeat(both.dedup).order.by(count(local))")
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9e80e420/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
index 6d90687..7e33d4f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
@@ -22,6 +22,8 @@ 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.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
@@ -39,6 +41,7 @@ import java.util.Map;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.SINK;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.count;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.groupCount;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in;
@@ -62,6 +65,27 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
// DO/WHILE
+ private static void assertPath(final Traversal<Vertex, Path> traversal) {
+ int path1 = 0;
+ int path2 = 0;
+ int path3 = 0;
+ while (traversal.hasNext()) {
+ final Path path = traversal.next();
+ if (path.size() == 1) {
+ path1++;
+ } else if (path.size() == 2) {
+ path2++;
+ } else if (path.size() == 3) {
+ path3++;
+ } else {
+ fail("Only path lengths of 1, 2, or 3 should be seen");
+ }
+ }
+ assertEquals(6, path1);
+ assertEquals(6, path2);
+ assertEquals(2, path3);
+ }
+
public abstract Traversal<Vertex, Path> get_g_V_repeatXoutX_timesX2X_emit_path();
public abstract Traversal<Vertex, String> get_g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name();
@@ -80,16 +104,16 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Path> get_g_V_emit_repeatXoutX_timesX2X_path();
- public abstract Traversal<Vertex, String> get_g_VX1X_emitXhasXlabel_personXX_repeatXoutX_name(final Object v1Id);
-
// SIDE-EFFECTS
- public abstract Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX();
+ public abstract Traversal<Vertex, String> get_g_VX1X_emitXhasXlabel_personXX_repeatXoutX_name(final Object v1Id);
public abstract Traversal<Vertex, Map<Integer, Long>> get_g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX(final Object v1Id);
//
+ public abstract Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX();
+
public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX();
public abstract Traversal<Vertex, String> get_g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name(final Object v1Id);
@@ -98,6 +122,14 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Path> get_g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX();
+ public abstract Traversal<Vertex, Long> get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXvX_count();
+
+ public abstract Traversal<Vertex, List<Vertex>> get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXall_vX_order_byXcountXlocalXX();
+
+ public abstract Traversal<Vertex, Long> get_g_V_emit_repeatXboth_dedupX_count();
+
+ public abstract Traversal<Vertex, Vertex> get_g_V_emit_repeatXboth_dedupX_order_byXcountXlocalXX();
+
@Test
@LoadGraphWith(MODERN)
public void g_V_repeatXoutX_timesX2X_emit_path() {
@@ -186,27 +218,6 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
assertPath(traversal);
}
- private static void assertPath(final Traversal<Vertex, Path> traversal) {
- int path1 = 0;
- int path2 = 0;
- int path3 = 0;
- while (traversal.hasNext()) {
- final Path path = traversal.next();
- if (path.size() == 1) {
- path1++;
- } else if (path.size() == 2) {
- path2++;
- } else if (path.size() == 3) {
- path3++;
- } else {
- fail("Only path lengths of 1, 2, or 3 should be seen");
- }
- }
- assertEquals(6, path1);
- assertEquals(6, path2);
- assertEquals(2, path3);
- }
-
@Test
@LoadGraphWith(SINK)
public void g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name() {
@@ -282,6 +293,22 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
+ public void g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXvX_count() {
+ final Traversal<Vertex, Long> traversal = get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXvX_count();
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_emit_repeatXboth_dedupX_count() {
+ final Traversal<Vertex, Long> traversal = get_g_V_emit_repeatXboth_dedupX_count();
+ printTraversalForm(traversal);
+ assertTrue(traversal.hasNext());
+ assertEquals(12L, traversal.next().longValue());
+ assertFalse(traversal.hasNext());
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
public void g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX() {
final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX();
printTraversalForm(traversal);
@@ -310,6 +337,29 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
assertEquals("ripple", path.get(4));
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXall_vX_order_byXcountXlocalXX() {
+ final Traversal<Vertex, List<Vertex>> traversal = get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXall_vX_order_byXcountXlocalXX();
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_emit_repeatXboth_dedupX_order_byXcountXlocalXXv() {
+ final Traversal<Vertex, Vertex> traversal = get_g_V_emit_repeatXboth_dedupX_order_byXcountXlocalXX();
+ printTraversalForm(traversal);
+ final Map<Vertex, Integer> tmp = new HashMap<>(6);
+ for (int j = 0; j < 2; j++) {
+ for (int i = 0; i < 6; i++) {
+ assertTrue(traversal.hasNext());
+ tmp.compute(traversal.next(), (k, v) -> v != null ? v + 1 : 1);
+ }
+ }
+ assertFalse(traversal.hasNext());
+ assertEquals(6, tmp.size());
+ assertTrue(tmp.values().stream().noneMatch(v -> v != 2));
+ }
+
public static class Traversals extends RepeatTest {
@Override
@@ -338,13 +388,13 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, Path> get_g_V_emit_repeatXoutX_timesX2X_path() {
- return g.V().emit().repeat(out()).times(2).path();
+ public Traversal<Vertex, Path> get_g_V_emit_timesX2X_repeatXoutX_path() {
+ return g.V().emit().times(2).repeat(out()).path();
}
@Override
- public Traversal<Vertex, Path> get_g_V_emit_timesX2X_repeatXoutX_path() {
- return g.V().emit().times(2).repeat(out()).path();
+ public Traversal<Vertex, Path> get_g_V_emit_repeatXoutX_timesX2X_path() {
+ return g.V().emit().repeat(out()).times(2).path();
}
@Override
@@ -386,5 +436,25 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
public Traversal<Vertex, Path> get_g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name() {
return g.V().has("loops","name","loop").repeat(__.in()).times(5).path().by("name");
}
+
+ @Override
+ public Traversal<Vertex, Long> get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXvX_count() {
+ return g.V().as("v").emit().repeat(both().as("v").dedup()).select("v").count();
+ }
+
+ @Override
+ public Traversal<Vertex, List<Vertex>> get_g_V_asXvX_emit_repeatXboth_asXvX_dedupX_selectXall_vX_order_byXcountXlocalXX() {
+ return g.V().as("v").emit().repeat(both().as("v").dedup()).<List<Vertex>>select(Pop.all, "v").order().by(count(Scope.local));
+ }
+
+ @Override
+ public Traversal<Vertex, Long> get_g_V_emit_repeatXboth_dedupX_count() {
+ return g.V().emit().repeat(both().dedup()).count();
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_emit_repeatXboth_dedupX_order_byXcountXlocalXX() {
+ return g.V().emit().repeat(both().dedup()).order().by(count(Scope.local));
+ }
}
}