Added new tests as suggested by @okram.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/4dcd6b2c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/4dcd6b2c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/4dcd6b2c Branch: refs/heads/TINKERPOP-1682 Commit: 4dcd6b2cf8fc6c69876b26cc3207ad802fa23e05 Parents: 13597f4 Author: Daniel Kuppitz <daniel_kupp...@hotmail.com> Authored: Mon Jun 19 18:24:39 2017 +0200 Committer: Daniel Kuppitz <daniel_kupp...@hotmail.com> Committed: Mon Mar 19 12:28:38 2018 -0700 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 2 +- .../process/traversal/step/map/OrderTest.java | 42 ++++++++++++++++++++ .../traversal/step/sideEffect/GroupTest.java | 40 +++++++++++++++++++ 3 files changed, 83 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4dcd6b2c/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index db9c1dc..8092d0c 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -110,8 +110,8 @@ This release also includes changes from <<release-3-2-6, 3.2.6>>. * Removed access to previously deprecated `CoreGremlinPlugin#INSTANCE` field. * `gremlin.sh` and `gremln.bat` no longer support the option to pass a script as an argument for execution mode without using the `-i` option. * Graphite and Ganglia are no longer packaged with the Gremlin Server distribution. -* `TransactionException` is no longer a class of `AbstractTransaction` and it extends `RuntimeException`. * Included an ellipse on long property names that are truncated. +* Added `TraversalParent.replaceTraversal()` which can replace a direct child traversal. * Added `ByModulatorOptimizationStrategy` which replaces certain standard traversals w/ optimized traversals (e.g. `TokenTraversal`). * Renamed `RangeByIsCountStrategy` to `CountStrategy`. * Added more specific typing to various `__` traversal steps. E.g. `<A,Vertex>out()` is `<Vertex,Vertex>out()`. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4dcd6b2c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java index bbf63ef..a44ac5a 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java @@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper; import org.apache.tinkerpop.gremlin.structure.Column; +import org.apache.tinkerpop.gremlin.structure.Property; import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.junit.Test; @@ -100,6 +101,10 @@ public abstract class OrderTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, Map.Entry<String, Number>> get_g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_decrX(); + public abstract Traversal<Vertex, Vertex> get_g_V_order_byXlabelX(); + + public abstract Traversal<Vertex, Vertex> get_g_V_order_byXlabel_decrX(); + @Test @LoadGraphWith(MODERN) public void g_V_name_order() { @@ -400,6 +405,21 @@ public abstract class OrderTest extends AbstractGremlinProcessTest { entry = iterator.next(); assertEquals("marko", entry.getKey()); assertEquals(1.9, entry.getValue().doubleValue(), 0.0001); + + public void g_V_order_byXlabelX() { + final Traversal<Vertex, Vertex> traversal = get_g_V_order_byXlabelX(); + printTraversalForm(traversal); + for (int i = 0; i < 4; i++) { + assertTrue(traversal.hasNext()); + final Vertex v = traversal.next(); + assertEquals("person", v.label()); + } + for (int i = 0; i < 2; i++) { + assertTrue(traversal.hasNext()); + final Vertex v = traversal.next(); + assertEquals("software", v.label()); + } + assertFalse(traversal.hasNext()); } @Test @@ -420,6 +440,20 @@ public abstract class OrderTest extends AbstractGremlinProcessTest { entry = traversal.next(); assertEquals("vadas", entry.getKey()); assertEquals(0.0, entry.getValue().doubleValue(), 0.0001); + + public void g_V_order_byXlabel_decrX() { + final Traversal<Vertex, Vertex> traversal = get_g_V_order_byXlabel_decrX(); + printTraversalForm(traversal); + for (int i = 0; i < 2; i++) { + assertTrue(traversal.hasNext()); + final Vertex v = traversal.next(); + assertEquals("software", v.label()); + } + for (int i = 0; i < 4; i++) { + assertTrue(traversal.hasNext()); + final Vertex v = traversal.next(); + assertEquals("person", v.label()); + } assertFalse(traversal.hasNext()); } @@ -542,6 +576,14 @@ public abstract class OrderTest extends AbstractGremlinProcessTest { @Override public Traversal<Vertex, Map.Entry<String, Number>> get_g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_decrX() { return g.V().hasLabel("person").group().by("name").by(outE().values("weight").sum()).<Map.Entry<String, Number>>unfold().order().by(Column.values, Order.decr); + + public Traversal<Vertex, Vertex> get_g_V_order_byXlabelX() { + return g.V().order().by(__.label()); + } + + @Override + public Traversal<Vertex, Vertex> get_g_V_order_byXlabel_decrX() { + return g.V().order().by(__.label(), Order.decr); } } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4dcd6b2c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java index 3e1e53b..91c3eb1 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroupTest.java @@ -99,6 +99,10 @@ public abstract class GroupTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_withSideEffectXa__marko_666_noone_blahX_V_groupXaX_byXnameX_byXoutE_label_foldX_capXaX(final Map<String, List<Object>> m); + public abstract Traversal<Vertex, Map<String, Long>> get_g_V_group_byXlabelX_byXlabel_countX(); + + public abstract Traversal<Vertex, Map<String, Long>> get_g_V_groupXmX_byXlabelX_byXlabel_countX_capXmX(); + @Test @LoadGraphWith(MODERN) public void g_V_group_byXnameX() { @@ -488,6 +492,32 @@ public abstract class GroupTest extends AbstractGremlinProcessTest { checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class); } + @Test + @LoadGraphWith(MODERN) + public void g_V_group_byXlabelX_byXlabel_countX() { + final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_group_byXlabelX_byXlabel_countX(); + printTraversalForm(traversal); + final Map<String, Long> map = traversal.next(); + assertEquals(2, map.size()); + assertTrue(map.containsKey("person")); + assertTrue(map.containsKey("software")); + assertEquals(4L, map.get("person").longValue()); + assertEquals(2L, map.get("software").longValue()); + } + + @Test + @LoadGraphWith(MODERN) + public void g_V_groupXmX_byXlabelX_byXlabel_countX_capXmX() { + final Traversal<Vertex, Map<String, Long>> traversal = get_g_V_groupXmX_byXlabelX_byXlabel_countX_capXmX(); + printTraversalForm(traversal); + final Map<String, Long> map = traversal.next(); + assertEquals(2, map.size()); + assertTrue(map.containsKey("person")); + assertTrue(map.containsKey("software")); + assertEquals(4L, map.get("person").longValue()); + assertEquals(2L, map.get("software").longValue()); + } + public static class Traversals extends GroupTest { @Override @@ -594,5 +624,15 @@ public abstract class GroupTest extends AbstractGremlinProcessTest { public Traversal<Vertex, Map<String, List<Object>>> get_g_withSideEffectXa__marko_666_noone_blahX_V_groupXaX_byXnameX_byXoutE_label_foldX_capXaX(final Map<String, List<Object>> m) { return g.withSideEffect("a", m).V().group("a").by("name").by(outE().label().fold()).cap("a"); } + + @Override + public Traversal<Vertex, Map<String, Long>> get_g_V_group_byXlabelX_byXlabel_countX() { + return g.V().<String, Long>group().by(__.label()).by(__.label().count()); + } + + @Override + public Traversal<Vertex, Map<String, Long>> get_g_V_groupXmX_byXlabelX_byXlabel_countX_capXmX() { + return g.V().group("m").by(__.label()).by(__.label().count()).cap("m"); + } } }