added MathTest to test math() using step labels, side-effects, and implicit current -- and with various uses of by()-modulation. This is a really cool step.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c36493b6 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c36493b6 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c36493b6 Branch: refs/heads/TINKERPOP-1799 Commit: c36493b6d66406b0d6b50e6c292e6d43216b4c4c Parents: 624a8d7 Author: Marko A. Rodriguez <[email protected]> Authored: Wed Oct 4 10:42:06 2017 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Wed Oct 4 10:42:06 2017 -0600 ---------------------------------------------------------------------- .../process/traversal/step/map/MathStep.java | 1 + .../gremlin/process/ProcessComputerSuite.java | 4 + .../gremlin/process/ProcessStandardSuite.java | 3 + .../process/traversal/step/map/MathTest.java | 88 ++++++++++++++++++++ .../structure/TinkerGraphPlayTest.java | 2 +- 5 files changed, 97 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c36493b6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java index aec395c..ef88aac 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java @@ -53,6 +53,7 @@ public final class MathStep<S> extends MapStep<S, Double> implements ByModulatin this.variables = MathStep.getVariables(this.equation); this.expression = new ExpressionBuilder(this.equation) .variables(this.variables) + .implicitMultiplication(false) .build(); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c36493b6/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 d5ec67a..0e0fc81 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 @@ -57,6 +57,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.LoopsTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.MathTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest; @@ -147,6 +148,7 @@ public class ProcessComputerSuite extends AbstractGremlinSuite { MapTest.Traversals.class, MatchTest.CountMatchTraversals.class, MatchTest.GreedyMatchTraversals.class, + MathTest.Traversals.class, MaxTest.Traversals.class, MeanTest.Traversals.class, MinTest.Traversals.class, @@ -230,6 +232,8 @@ public class ProcessComputerSuite extends AbstractGremlinSuite { CountTest.class, FlatMapTest.class, FoldTest.class, + MatchTest.class, + MathTest.class, MapTest.class, MaxTest.class, MeanTest.class, http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c36493b6/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 b6d1830..18e25d7 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 @@ -54,6 +54,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.LoopsTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest; +import org.apache.tinkerpop.gremlin.process.traversal.step.map.MathTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest; import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest; @@ -141,6 +142,7 @@ public class ProcessStandardSuite extends AbstractGremlinSuite { MapTest.Traversals.class, MatchTest.CountMatchTraversals.class, MatchTest.GreedyMatchTraversals.class, + MathTest.Traversals.class, MaxTest.Traversals.class, MeanTest.Traversals.class, MinTest.Traversals.class, @@ -223,6 +225,7 @@ public class ProcessStandardSuite extends AbstractGremlinSuite { LoopsTest.class, MapTest.class, MatchTest.class, + MathTest.class, MaxTest.class, MeanTest.class, MinTest.class, http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c36493b6/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java new file mode 100644 index 0000000..94065e9 --- /dev/null +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathTest.java @@ -0,0 +1,88 @@ +/* + * 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.map; + +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.Traversal; +import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Arrays; + +import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN; +import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +@RunWith(GremlinProcessRunner.class) +public abstract class MathTest extends AbstractGremlinProcessTest { + + public abstract Traversal<Vertex, Double> get_g_V_asXaX_outXknowsX_asXbX_mathXa_plus_bX_byXageX(); + + public abstract Traversal<Vertex, Double> get_g_withSideEffectXx_100X_V_age_mathX__plus_xX(); + + public abstract Traversal<Vertex, Double> get_g_V_asXaX_outXcreatedX_asXbX_mathXb_plus_aX_byXinXcreatedX_countX_byXageX(); + + @Test + @LoadGraphWith(MODERN) + public void g_V_asXaX_outXknowsX_asXbX_mathXa_plus_bX_byXageX() { + final Traversal<Vertex, Double> traversal = get_g_V_asXaX_outXknowsX_asXbX_mathXa_plus_bX_byXageX(); + printTraversalForm(traversal); + checkResults(Arrays.asList(56.0d, 61.0d), traversal); + } + + @Test + @LoadGraphWith(MODERN) + public void g_withSideEffectXx_100X_V_age_mathX__plus_xX() { + final Traversal<Vertex, Double> traversal = get_g_withSideEffectXx_100X_V_age_mathX__plus_xX(); + printTraversalForm(traversal); + checkResults(Arrays.asList(129.0d, 127.0d, 132.0d, 135.0d), traversal); + } + + @Test + @LoadGraphWith(MODERN) + public void g_V_asXaX_outXcreatedX_asXbX_mathXb_plus_aX_byXinXcreatedX_countX_byXageX() { + final Traversal<Vertex, Double> traversal = get_g_V_asXaX_outXcreatedX_asXbX_mathXb_plus_aX_byXinXcreatedX_countX_byXageX(); + printTraversalForm(traversal); + checkResults(Arrays.asList(32.0d, 33.0d, 35.0d, 38.0d), traversal); + } + + public static class Traversals extends MathTest { + + @Override + public Traversal<Vertex, Double> get_g_V_asXaX_outXknowsX_asXbX_mathXa_plus_bX_byXageX() { + return g.V().as("a").out("knows").as("b").math("a + b").by("age"); + } + + @Override + public Traversal<Vertex, Double> get_g_withSideEffectXx_100X_V_age_mathX__plus_xX() { + return g.withSideEffect("x", 100).V().values("age").math("_ + x"); + } + + @Override + public Traversal<Vertex, Double> get_g_V_asXaX_outXcreatedX_asXbX_mathXb_plus_aX_byXinXcreatedX_countX_byXageX() { + return g.V().as("a").out("created").as("b").math("b + a").by(in("created").count()).by("age"); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c36493b6/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java ---------------------------------------------------------------------- diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java index b93f7ab..736b146 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java @@ -71,7 +71,7 @@ public class TinkerGraphPlayTest { public void testPlay8() throws Exception { Graph graph = TinkerFactory.createModern(); GraphTraversalSource g = graph.traversal(); - System.out.println(g.withSideEffect("x",10.1d).V().as("a").out("knows").math("((a ^ _) / a) + x").by("age").by(bothE().count()).by().toList()); + System.out.println(g.V().values("age").toList()); } @Test
