Repository: tinkerpop Updated Branches: refs/heads/TINKERPOP-1235 e376193ca -> a1dc42d20 (forced update)
added Pick.none and Pick.any to the CoreImports. Added it to both GraphSONModule and GryoMapper. Added two new test cases which use any and none -- one in ChooseTest and one in BranchTest. Added none/any to GroovyTranslator and PythonTranslator. All good in the hood. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0fec46db Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0fec46db Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0fec46db Branch: refs/heads/TINKERPOP-1235 Commit: 0fec46db21a3af0604a85b9b4bed4e47db8d1a70 Parents: 1148e82 Author: Marko A. Rodriguez <[email protected]> Authored: Fri Oct 21 13:07:18 2016 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Fri Oct 21 13:07:18 2016 -0600 ---------------------------------------------------------------------- .../structure/io/graphson/GraphSONModule.java | 4 +++ .../gremlin/structure/io/gryo/GryoMapper.java | 4 ++- .../tinkerpop/gremlin/util/CoreImports.java | 6 +++- .../step/branch/GroovyBranchTest.groovy | 13 ++++++++- .../step/branch/GroovyChooseTest.groovy | 10 +++++++ .../gremlin/groovy/jsr223/GroovyTranslator.java | 3 ++ .../gremlin/python/jsr223/PythonTranslator.java | 3 ++ .../jython/gremlin_python/process/traversal.py | 4 +++ .../traversal/step/branch/BranchTest.java | 29 ++++++++++++++++---- .../traversal/step/branch/ChooseTest.java | 19 +++++++++++++ 10 files changed, 87 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java index b361fac..a644d37 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONModule.java @@ -31,6 +31,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Scope; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; +import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent; import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategy; @@ -145,6 +146,7 @@ abstract class GraphSONModule extends TinkerPopJacksonModule { Order.values(), Pop.values(), SackFunctions.Barrier.values(), + TraversalOptionParent.Pick.values(), Scope.values(), T.values()).flatMap(Stream::of).forEach(e -> put(e.getClass(), e.getDeclaringClass().getSimpleName())); Arrays.asList( @@ -215,6 +217,7 @@ abstract class GraphSONModule extends TinkerPopJacksonModule { Pop.class, SackFunctions.Barrier.class, Scope.class, + TraversalOptionParent.Pick.class, T.class).forEach(e -> addSerializer(e, new GraphSONTraversalSerializersV2d0.EnumJacksonSerializer())); addSerializer(P.class, new GraphSONTraversalSerializersV2d0.PJacksonSerializer()); addSerializer(Lambda.class, new GraphSONTraversalSerializersV2d0.LambdaJacksonSerializer()); @@ -245,6 +248,7 @@ abstract class GraphSONModule extends TinkerPopJacksonModule { Pop.values(), SackFunctions.Barrier.values(), Scope.values(), + TraversalOptionParent.Pick.values(), T.values()).flatMap(Stream::of).forEach(e -> addDeserializer(e.getClass(), new GraphSONTraversalSerializersV2d0.EnumJacksonDeserializer(e.getDeclaringClass()))); addDeserializer(P.class, new GraphSONTraversalSerializersV2d0.PJacksonDeserializer()); addDeserializer(Lambda.class, new GraphSONTraversalSerializersV2d0.LambdaJacksonDeserializer()); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java index 0a7d277..fef7288 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java @@ -32,6 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Path; import org.apache.tinkerpop.gremlin.process.traversal.Pop; import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions; import org.apache.tinkerpop.gremlin.process.traversal.Scope; +import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent; import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldStep; import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupCountStep; @@ -349,7 +350,8 @@ public final class GryoMapper implements Mapper<Kryo> { add(GryoTypeReg.of(Column.class, 132)); add(GryoTypeReg.of(Pop.class, 133)); add(GryoTypeReg.of(SackFunctions.Barrier.class, 135)); - add(GryoTypeReg.of(HashSetSupplier.class, 136, new UtilSerializers.HashSetSupplierSerializer())); // ***LAST ID*** + add(GryoTypeReg.of(TraversalOptionParent.Pick.class, 137)); // ***LAST ID*** + add(GryoTypeReg.of(HashSetSupplier.class, 136, new UtilSerializers.HashSetSupplierSerializer())); add(GryoTypeReg.of(TraverserSet.class, 58)); add(GryoTypeReg.of(Tree.class, 61)); http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java index 1c76f0e..e6c64fd 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/CoreImports.java @@ -44,19 +44,20 @@ import org.apache.tinkerpop.gremlin.process.traversal.Translator; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; +import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy; -import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.LazyBarrierStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.MatchAlgorithmStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.AdjacentToIncidentStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.FilterRankingStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IncidentToAdjacentStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.LazyBarrierStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.MatchPredicateStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.OrderLimitStrategy; import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathProcessorStrategy; @@ -123,6 +124,8 @@ public final class CoreImports { CLASS_IMPORTS.add(Pop.class); CLASS_IMPORTS.add(Scope.class); CLASS_IMPORTS.add(T.class); + CLASS_IMPORTS.add(TraversalOptionParent.class); + CLASS_IMPORTS.add(TraversalOptionParent.Pick.class); CLASS_IMPORTS.add(P.class); // remote CLASS_IMPORTS.add(RemoteConnection.class); @@ -203,6 +206,7 @@ public final class CoreImports { Collections.addAll(ENUM_IMPORTS, Pop.values()); Collections.addAll(ENUM_IMPORTS, Scope.values()); Collections.addAll(ENUM_IMPORTS, T.values()); + Collections.addAll(ENUM_IMPORTS, TraversalOptionParent.Pick.values()); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy ---------------------------------------------------------------------- diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy index fe13e1d..e602f4e 100644 --- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy +++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyBranchTest.groovy @@ -35,7 +35,7 @@ public abstract class GroovyBranchTest { } @Override - public Traversal<Vertex, Object> get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX() { + public Traversal<Vertex, Object> get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX() { new ScriptTraversal<>(g, "gremlin-groovy", """ g.V.branch{it.label == 'person' ? 'a' : 'b'} .option('a', __.age) @@ -43,5 +43,16 @@ public abstract class GroovyBranchTest { .option('b', __.name) """) } + + @Override + public Traversal<Vertex, Object> get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX() { + new ScriptTraversal<>(g, "gremlin-groovy", """ + g.V.branch(label().is("person").count) + .option(1L,__.age) + .option(0L,__.lang) + .option(0L,__.name) + .option(any,label()) + """) + } } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy ---------------------------------------------------------------------- diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy index b92ab9b..99bb31b 100644 --- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy +++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyChooseTest.groovy @@ -43,5 +43,15 @@ public abstract class GroovyChooseTest { public Traversal<Vertex, String> get_g_V_chooseXhasLabelXpersonX_and_outXcreatedX__outXknowsX__identityX_name() { new ScriptTraversal<>(g, "gremlin-groovy", "g.V.choose(hasLabel('person').and().out('created'), out('knows'), identity()).name") } + + @Override + public Traversal<Vertex, String> get_g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name() { + new ScriptTraversal<>(g, "gremlin-groovy", """ + g.V.choose(label()) + .option("blah", out("knows")) + .option("bleep", out("created")) + .option(none, identity()).name + """) + } } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java index 02e49b1..d102037 100644 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java +++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java @@ -27,6 +27,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Translator; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; +import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent; import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy; import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP; import org.apache.tinkerpop.gremlin.process.traversal.util.OrP; @@ -151,6 +152,8 @@ public final class GroovyTranslator implements Translator.ScriptTranslator { return "SackFunctions.Barrier." + object.toString(); else if (object instanceof VertexProperty.Cardinality) return "VertexProperty.Cardinality." + object.toString(); + else if (object instanceof TraversalOptionParent.Pick) + return "TraversalOptionParent.Pick." + object.toString(); else if (object instanceof Enum) return ((Enum) object).getDeclaringClass().getSimpleName() + "." + object.toString(); else if (object instanceof Element) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java ---------------------------------------------------------------------- diff --git a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java index bfabbb8..0739c92 100644 --- a/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java +++ b/gremlin-python/src/main/java/org/apache/tinkerpop/gremlin/python/jsr223/PythonTranslator.java @@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; +import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent; import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy; import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP; import org.apache.tinkerpop.gremlin.process.traversal.util.OrP; @@ -183,6 +184,8 @@ public class PythonTranslator implements Translator.ScriptTranslator { return "Cardinality." + SymbolHelper.toPython(object.toString()); else if (object instanceof SackFunctions.Barrier) return "Barrier." + SymbolHelper.toPython(object.toString()); + else if (object instanceof TraversalOptionParent.Pick) + return "Pick." + SymbolHelper.toPython(object.toString()); else if (object instanceof Enum) return convertStatic(((Enum) object).getDeclaringClass().getSimpleName() + ".") + SymbolHelper.toPython(object.toString()); else if (object instanceof P) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-python/src/main/jython/gremlin_python/process/traversal.py ---------------------------------------------------------------------- diff --git a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py index a56dd74..d30db35 100644 --- a/gremlin-python/src/main/jython/gremlin_python/process/traversal.py +++ b/gremlin-python/src/main/jython/gremlin_python/process/traversal.py @@ -118,6 +118,10 @@ statics.add_static('keyDecr', Order.keyDecr) statics.add_static('valueDecr', Order.valueDecr) statics.add_static('shuffle', Order.shuffle) +Pick = Enum('Pick', 'any none') +statics.add_static('any', Pick.any) +statics.add_static('none', Pick.none) + Pop = Enum('Pop', 'all_ first last') statics.add_static('first', Pop.first) statics.add_static('last', Pop.last) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchTest.java index 049358f..44a63bd 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchTest.java @@ -22,7 +22,6 @@ 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.process.traversal.TraversalEngine; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.junit.Test; import org.junit.runner.RunWith; @@ -32,6 +31,7 @@ import java.util.Arrays; import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.label; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values; +import static org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent.Pick.any; /** * @author Marko A. Rodriguez (http://markorodriguez.com) @@ -41,7 +41,9 @@ public abstract class BranchTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, Object> get_g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX(); - public abstract Traversal<Vertex, Object> get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX(); + public abstract Traversal<Vertex, Object> get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX(); + + public abstract Traversal<Vertex, Object> get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX(); @Test @LoadGraphWith(MODERN) @@ -53,12 +55,20 @@ public abstract class BranchTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) - public void g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX() { - final Traversal<Vertex, Object> traversal = get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX(); + public void g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX() { + final Traversal<Vertex, Object> traversal = get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX(); printTraversalForm(traversal); checkResults(Arrays.asList("java", "java", "lop", "ripple", 29, 27, 32, 35), traversal); } + @Test + @LoadGraphWith(MODERN) + public void g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX() { + final Traversal<Vertex, Object> traversal = get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX(); + printTraversalForm(traversal); + checkResults(Arrays.asList("java", "java", "lop", "ripple", 29, 27, 32, 35, "person", "person", "person", "person", "software", "software"), traversal); + } + public static class Traversals extends BranchTest { @Override @@ -70,11 +80,20 @@ public abstract class BranchTest extends AbstractGremlinProcessTest { } @Override - public Traversal<Vertex, Object> get_g_V_branchXlabelX_optionXperson__ageX_optionXsoftware__langX_optionXsoftware__nameX() { + public Traversal<Vertex, Object> get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX() { return g.V().branch(label().is("person").count()) .option(1L, values("age")) .option(0L, values("lang")) .option(0L, values("name")); } + + @Override + public Traversal<Vertex, Object> get_g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX() { + return g.V().branch(label().is("person").count()) + .option(1L, values("age")) + .option(0L, values("lang")) + .option(0L, values("name")) + .option(any, label()); + } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0fec46db/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java index bf050e4..ce12daf 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/ChooseTest.java @@ -22,6 +22,7 @@ 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.process.traversal.step.TraversalOptionParent; import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.junit.Test; @@ -35,6 +36,7 @@ import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.hasLabel; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.identity; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.in; +import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.label; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.out; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.valueMap; import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.values; @@ -54,6 +56,7 @@ public abstract class ChooseTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, String> get_g_V_chooseXhasLabelXpersonX_and_outXcreatedX__outXknowsX__identityX_name(); + public abstract Traversal<Vertex, String> get_g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name(); @Test @LoadGraphWith(MODERN) @@ -89,6 +92,14 @@ public abstract class ChooseTest extends AbstractGremlinProcessTest { checkResults(Arrays.asList("lop", "ripple", "josh", "vadas", "vadas"), traversal); } + @Test + @LoadGraphWith(MODERN) + public void g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name() { + final Traversal<Vertex, String> traversal = get_g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name(); + printTraversalForm(traversal); + checkResults(Arrays.asList("marko", "vadas", "peter", "josh", "lop", "ripple"), traversal); + } + public static class Traversals extends ChooseTest { @Override @@ -107,5 +118,13 @@ public abstract class ChooseTest extends AbstractGremlinProcessTest { public Traversal<Vertex, String> get_g_V_chooseXhasLabelXpersonX_and_outXcreatedX__outXknowsX__identityX_name() { return g.V().choose(hasLabel("person").and().out("created"), out("knows"), identity()).values("name"); } + + @Override + public Traversal<Vertex, String> get_g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name() { + return g.V().choose(label()) + .option("blah", out("knows")) + .option("bleep", out("created")) + .option(TraversalOptionParent.Pick.none, identity()).values("name"); + } } } \ No newline at end of file
