You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by va...@apache.org on 2023/04/22 00:37:24 UTC
[tinkerpop] 01/01: merge from 3.5-dev
This is an automated email from the ASF dual-hosted git repository.
valentyn pushed a commit to branch 3.6-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 1eebe96278a0eb3be9d3e9170466456779f2ea0d
Merge: a8f0990330 a02617d3c3
Author: Valentyn Kahamlyk <va...@bitquilltech.com>
AuthorDate: Fri Apr 21 17:37:10 2023 -0700
merge from 3.5-dev
CHANGELOG.asciidoc | 1 +
docs/src/upgrade/release-3.5.x.asciidoc | 17 ++++++++++
.../process/traversal/step/map/CountLocalStep.java | 4 ++-
.../process/traversal/step/map/DedupLocalStep.java | 7 ++--
.../process/traversal/step/map/MaxLocalStep.java | 3 +-
.../process/traversal/step/map/MeanLocalStep.java | 3 +-
.../process/traversal/step/map/MinLocalStep.java | 3 +-
.../process/traversal/step/map/OrderLocalStep.java | 6 ++++
.../process/traversal/step/map/RangeLocalStep.java | 3 ++
.../traversal/step/map/SampleLocalStep.java | 6 ++--
.../process/traversal/step/map/SumLocalStep.java | 3 +-
.../process/traversal/step/map/TailLocalStep.java | 2 +-
.../gremlin/util/iterator/IteratorUtils.java | 2 ++
.../traversal/step/map/DedupLocalStepTest.java | 36 +++++++++++++++++++++
.../traversal/step/map/OrderLocalStepTest.java | 37 +++++++++++++++++++++-
.../gremlin/util/iterator/IteratorUtilsTest.java | 20 ++++++++++++
.../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 10 ++++++
gremlin-go/driver/cucumber/gremlin.go | 10 ++++++
.../gremlin-javascript/test/cucumber/gremlin.js | 10 ++++++
gremlin-python/src/main/python/radish/gremlin.py | 10 ++++++
.../process/traversal/step/filter/DedupTest.java | 15 +++++++++
.../process/traversal/step/filter/RangeTest.java | 16 ++++++++++
.../process/traversal/step/filter/SampleTest.java | 16 ++++++++++
.../process/traversal/step/filter/TailTest.java | 19 +++++++++++
.../process/traversal/step/map/CountTest.java | 15 +++++++++
.../process/traversal/step/map/IndexTest.java | 15 +++++++++
.../process/traversal/step/map/MaxTest.java | 15 +++++++++
.../process/traversal/step/map/MeanTest.java | 15 +++++++++
.../process/traversal/step/map/MinTest.java | 15 +++++++++
.../process/traversal/step/map/OrderTest.java | 15 +++++++++
.../process/traversal/step/map/SumTest.java | 15 +++++++++
.../gremlin/test/features/filter/Dedup.feature | 12 +++++++
.../gremlin/test/features/filter/Range.feature | 14 +++++++-
.../gremlin/test/features/filter/Sample.feature | 14 +++++++-
.../gremlin/test/features/filter/Tail.feature | 14 +++++++-
.../gremlin/test/features/map/Index.feature | 13 ++++++++
.../gremlin/test/features/map/Max.feature | 12 +++++++
.../gremlin/test/features/map/Mean.feature | 14 +++++++-
.../gremlin/test/features/map/Min.feature | 12 +++++++
.../gremlin/test/features/map/Order.feature | 14 +++++++-
.../gremlin/test/features/map/Sum.feature | 14 +++++++-
41 files changed, 480 insertions(+), 17 deletions(-)
diff --cc docs/src/upgrade/release-3.5.x.asciidoc
index 29dab41a36,b587a445aa..b8ddbfe65a
--- a/docs/src/upgrade/release-3.5.x.asciidoc
+++ b/docs/src/upgrade/release-3.5.x.asciidoc
@@@ -49,6 -67,6 +49,23 @@@ expensive step to propagate that data t
See: link:https://issues.apache.org/jira/browse/TINKERPOP-2855[TINKERPOP-2855],
link:https://issues.apache.org/jira/browse/TINKERPOP-2888[TINKERPOP-2888]
++===== Local steps should handle non-Iterables
++
++`index` steps and local steps `count`, `dedup`, `max`, `mean`, `min`, `order`, `range`, `sample`, `sum`, `tail` should
++work correctly with not only `Iterable` input, but also with arrays and single values.
++
++Examples of queries that should be supported:
++
++[source,groovy]
++----
++g.inject(1).max(local)
++----
++
++[source,java]
++----
++g.inject(new Integer[] {1,2},3).max(Scope.local).toList()
++----
++
== TinkerPop 3.5.5
*Release Date: January 16, 2023*
diff --cc gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
index fdcfaa439b,8d43925bd1..f8ddb458e1
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderLocalStep.java
@@@ -27,9 -27,9 +27,11 @@@ import org.apache.tinkerpop.gremlin.pro
import org.apache.tinkerpop.gremlin.process.traversal.step.Seedable;
import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalProduct;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+ import org.apache.tinkerpop.gremlin.util.function.ChainedComparator;
+ import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
import org.javatuples.Pair;
import java.util.ArrayList;
@@@ -62,24 -63,16 +64,28 @@@ public final class OrderLocalStep<S, C
@Override
protected S map(final Traverser.Admin<S> traverser) {
- if (null == this.chainedComparator)
- this.chainedComparator = new ChainedComparator<>(false, this.comparators);
final S start = traverser.get();
- if (start instanceof Collection)
- return (S) sortCollection((Collection) start, this.chainedComparator);
- else if (start instanceof Map)
- return (S) sortMap((Map) start, this.chainedComparator);
- else if (start != null && start.getClass().isArray()) {
- return (S) sortCollection(IteratorUtils.asList(start), this.chainedComparator);
+
+ // modulate each traverser object and keep its value to sort on as Pair<traverser-object,List<modulated-object>>
+ // as of 3.6.0 this transformation occurs in place and values held in memory so that unproductive by() values
+ // can be filtered. without this trade-off for more memory it would be necessary to apply the modulation twice
+ // once for the filter and once for the compare.
+ if (start instanceof Collection) {
+ final Collection<S> original = (Collection<S>) start;
+ final List<Pair<S, List<C>>> filteredAndModulated = filterAndModulate(original);
+ return (S) filteredAndModulated.stream().map(Pair::getValue0).collect(Collectors.toList());
+ } else if (start instanceof Map) {
+ final List<Pair<S, List<C>>> filteredAndModulated = filterAndModulate(((Map) start).entrySet());
+ final LinkedHashMap sortedMap = new LinkedHashMap();
+ filteredAndModulated.stream().map(Pair::getValue0).map(entry -> (Map.Entry) entry).
+ forEach(entry -> sortedMap.put(entry.getKey(), entry.getValue()));
+ return (S) sortedMap;
++ } else if (start != null && start.getClass().isArray()) {
++ final Collection<S> original = (Collection<S>) IteratorUtils.asList(start);
++ final List<Pair<S, List<C>>> filteredAndModulated = filterAndModulate(original);
++ return (S) filteredAndModulated.stream().map(Pair::getValue0).collect(Collectors.toList());
}
+
return start;
}
diff --cc gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index 8b5238b2ba,5929439eb7..1bac89076f
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@@ -157,9 -154,7 +157,10 @@@ namespace Gremlin.Net.IntegrationTest.G
{"g_V_both_properties_dedup_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Properties<object>().Dedup().Count()}},
{"g_V_both_properties_properties_dedup_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Properties<object>().Properties<object>().Dedup().Count()}},
{"g_V_order_byXname_descX_barrier_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By("name",Order.Desc).Barrier().Dedup().By("age").Values<object>("name")}},
+ {"g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Order().By("name",Order.Desc).Barrier().Dedup().By("age").Values<object>("name")}},
+ {"g_V_both_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Dedup().By("age").Values<object>("name")}},
+ {"g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).As("a").Both().As("b").Both().As("c").Dedup("a","b").By("age").Select<object>("a","b","c").By("name")}},
+ {"g_VX1X_valuesXageX_dedupXlocalX_unfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Values<object>("age").Dedup(Scope.Local).Unfold<object>()}},
{"g_V_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().As("a").AddV().As("b").AddE("knows").To("a"), (g,p) =>g.V().Drop(), (g,p) =>g.V(), (g,p) =>g.E()}},
{"g_V_outE_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().As("a").AddV().As("b").AddE("knows").To("a"), (g,p) =>g.V().OutE().Drop(), (g,p) =>g.V(), (g,p) =>g.E()}},
{"g_V_properties_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("name","bob").AddV().Property("name","alice"), (g,p) =>g.V().Properties<object>().Drop(), (g,p) =>g.V(), (g,p) =>g.V().Properties<object>()}},
@@@ -300,9 -287,9 +302,10 @@@
{"g_E_sampleX1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Sample(1)}},
{"g_E_sampleX2X_byXweightX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Sample(2).By("weight")}},
{"g_V_localXoutE_sampleX1X_byXweightXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Local<object>(__.OutE().Sample(1).By("weight"))}},
- {"g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By(T.Label).By(__.BothE().Values<object>("weight").Sample(2).Fold())}},
- {"g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By(T.Label).By(__.BothE().Values<object>("weight").Fold().Sample(Scope.Local,5))}},
+ {"g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_sampleX2X_foldXunfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SeedStrategy(seed: 999999)).V().Group<object,object>().By(T.Label).By(__.BothE().Values<object>("weight").Order().Sample(2).Fold()).Unfold<object>()}},
+ {"g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_fold_sampleXlocal_5XXunfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SeedStrategy(seed: 999999)).V().Group<object,object>().By(T.Label).By(__.BothE().Values<object>("weight").Order().Fold().Sample(Scope.Local,5)).Unfold<object>()}},
+ {"g_withStrategiesXSeedStrategyX_V_order_byXlabel_descX_sampleX1X_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new SeedStrategy(seed: 999999)).V().Order().By(T.Label,Order.Desc).Sample(1).By("age")}},
+ {"g_VX1X_valuesXageX_sampleXlocal_5X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Values<object>("age").Sample(Scope.Local,5)}},
{"g_VX1X_outXcreatedX_inXcreatedX_simplePath", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out("created").In("created").SimplePath()}},
{"g_V_repeatXboth_simplePathX_timesX3X_path", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Both().SimplePath()).Times(3).Path()}},
{"g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().As("a").Out().As("b").Out().As("c").SimplePath().By(T.Label).From("b").To("c").Path().By("name")}},
@@@ -604,93 -480,12 +610,94 @@@
{"g_V_foo_fold_meanXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("foo").Fold().Mean<object>(Scope.Local)}},
{"g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("software").Group<object,object>().By("name").By(__.BothE().Values<object>("weight").Mean<object>())}},
{"g_V_aggregateXaX_byXageX_meanXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("age").Cap<object>("a").Mean<object>(Scope.Local)}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_meanXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("age").Cap<object>("a").Mean<object>(Scope.Local)}},
{"g_V_aggregateXaX_byXageX_capXaX_unfold_mean", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("age").Cap<object>("a").Unfold<object>().Mean<object>()}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_mean", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("age").Cap<object>("a").Unfold<object>().Mean<object>()}},
{"g_V_aggregateXaX_byXfooX_meanXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("foo").Cap<object>("a").Mean<object>(Scope.Local)}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_meanXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("foo").Cap<object>("a").Mean<object>(Scope.Local)}},
{"g_V_aggregateXaX_byXfooX_capXaX_unfold_mean", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("foo").Cap<object>("a").Unfold<object>().Mean<object>()}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_mean", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("foo").Cap<object>("a").Unfold<object>().Mean<object>()}},
{"g_injectXnull_10_20_nullX_mean", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null,p["xx1"],p["xx2"],null).Mean<object>()}},
{"g_injectXlistXnull_10_20_nullXX_meanXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Mean<object>(Scope.Local)}},
+ {"g_VX1X_valuesXageX_meanXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Values<object>("age").Mean<object>(Scope.Local)}},
+ {"g_V_mergeEXlabel_selfX_optionXonMatch_emptyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).AddE("self"), (g,p) =>g.V().MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnMatch, (IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.E(), (g,p) =>g.E().Properties<object>(), (g,p) =>g.V()}},
+ {"g_V_mergeEXlabel_selfX_optionXonMatch_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).AddE("self"), (g,p) =>g.V().MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnMatch, (IDictionary<object,object>) null), (g,p) =>g.E(), (g,p) =>g.E().Properties<object>(), (g,p) =>g.V()}},
+ {"g_V_mergeEXemptyX_optionXonCreate_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.V().As("v").MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) null).Option(Merge.OutV, (ITraversal) __.Select<object>("v")).Option(Merge.InV, (ITraversal) __.Select<object>("v")), (g,p) =>g.E(), (g,p) =>g.V()}},
+ {"g_mergeEXemptyX_exists", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).AddE("self"), (g,p) =>g.MergeE((IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.E(), (g,p) =>g.V()}},
+ {"g_mergeEXemptyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeE((IDictionary<object,object>) new Dictionary<object,object> {})}},
+ {"g_V_mergeEXemptyX_two_exist", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).AddV("person").Property("name","vadas").Property("age",27), (g,p) =>g.V().As("v").MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OutV, (ITraversal) __.Select<object>("v")).Option(Merge.InV, (ITraversal) __.Select<object>("v")), (g,p) =>g.E(), (g,p) =>g.V()}},
+ {"g_mergeEXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeE((IDictionary<object,object>) null)}},
+ {"g_V_mergeEXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.V().MergeE((IDictionary<object,object>) null)}},
+ {"g_mergeEXlabel_knows_out_marko_in_vadasX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").AddV("person").Property(T.Id,101).Property("name","vadas"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","marko").Out("knows").Has("person","name","vadas")}},
+ {"g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").AddV("person").Property(T.Id,101).Property("name","vadas"), (g,p) =>g.WithSideEffect("a",p["xx1"]).MergeE((ITraversal) __.Select<object>("a")), (g,p) =>g.V().Has("person","name","marko").Out("knows").Has("person","name","vadas")}},
+ {"g_mergeEXlabel_knows_out_marko1_in_vadas1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").AddV("person").Property(T.Id,101).Property("name","vadas"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","marko").Out("knows").Has("person","name","vadas")}},
+ {"g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","marko").OutE("knows").Has("weight",0.5).InV().Has("person","name", [...]
+ {"g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"])}},
+ {"g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]).Option(Merge.OnMatch, (IDictionary<object,object>) p["xx3"])}},
+ {"g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2" [...]
+ {"g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b").Property("created","Y"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDi [...]
+ {"g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b").Property("created","Y").AddE("knows").From("a").To("b"), (g,p) =>g.V().Has("person","name","marko").M [...]
+ {"g_injectXlabel_knows_out_marko_in_vadasX_mergeE", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").AddV("person").Property(T.Id,101).Property("name","vadas"), (g,p) =>g.Inject(p["xx1"]).MergeE(), (g,p) =>g.V().Has("person","name","marko").Out("knows").Has("person","name","vadas")}},
+ {"g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b").Property("created","Y").AddE("knows").From("b").To("a").Property("created","Y"), (g,p) =>g.MergeE((IDictionary<object, [...]
+ {"g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b").Property("created","Y").AddE("knows").From("b").To("a").Property("created","Y"), (g,p) =>g.MergeE((IDictionary<object [...]
+ {"g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b").Property("created","Y").AddE("knows").From("b").To("a").Property("created","Y"), (g,p) =>g.MergeE((IDictionary<object,object>) p[ [...]
+ {"g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").AddV("person").Property(T.Id,101).Property("name","vadas"), (g,p) =>g.V().Has("person","name","marko").MergeE((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.E().HasLabel("self").BothV().Has("name","vadas")}},
+ {"g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").From("a").To("b"), (g,p) =>g.WithSideEffect("c",p["xx2"]).WithSideEffect("m",p[" [...]
+ {"g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b"), (g,p) =>g.WithSideEffect("c",p["xx2"]).WithSideEffect("m",p["xx3"]).MergeE((IDictionary<object,objec [...]
+ {"g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b"), (g,p) =>g.WithSideEffect("c",p["xx2"]).WithSideEffect("m",p["xx3"]).MergeE((IDictionary<object,obj [...]
+ {"g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").AddV("person").Property(T.Id,101).Property("name","vadas"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","marko").Out("knows").Has("person","name","vadas")}},
+ {"g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").AddV("person").Property(T.Id,101).Property("name","vadas"), (g,p) =>g.Inject(p["xx1"],p["xx2"]).MergeE(), (g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.V().Has("person","name","marko").Out("knows").Has("person","name","vadas"), (g,p) =>g.V().Has("person","nam [...]
+ {"g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,100).Property("name","marko").As("a").AddV("person").Property(T.Id,101).Property("name","vadas").As("b").AddE("knows").Property("weight",0.5).From("a").To("b"), (g [...]
+ {"g_mergeE_with_outVinV_options_map", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OutV, (IDictionary<object,object>) p["xx2"]).Option(Merge.InV, (IDictionary<object,object>) p["xx3"]), (g,p) =>g.V(), (g,p) =>g.V(1).Out("knows").HasId(2)}},
+ {"g_mergeE_with_outVinV_options_select", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.V(1).As("x").V(2).As("y").MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OutV, (ITraversal) __.Select<object>("x")).Option(Merge.InV, (ITraversal) __.Select<object>("y")), (g,p) =>g.V(), (g,p) =>g.V(1).Out("knows").Ha [...]
+ {"g_mergeE_with_eid_specified_and_inheritance_1", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.E(201), (g,p) =>g.V(1).Out("knows").HasId(2)}},
+ {"g_mergeE_with_eid_specified_and_inheritance_2", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.E(201), (g,p) =>g.V(1).Out("knows").HasId(2)}},
+ {"g_mergeE_outV_override_prohibited", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"])}},
+ {"g_mergeE_inV_override_prohibited", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"])}},
+ {"g_mergeE_label_override_prohibited", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"])}},
+ {"g_mergeE_id_override_prohibited", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).Property("name","a").AddV("person").Property(T.Id,2).Property("name","b"), (g,p) =>g.MergeE((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"])}},
+ {"g_mergeV_mergeE_combination_new_vertices", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).As("outV").MergeV((IDictionary<object,object>) p["xx2"]).As("inV").MergeE((IDictionary<object,object>) p["xx3"]).Option(Merge.OutV, (ITraversal) __.Select<object>("outV")).Option(Merge.InV, (ITraversal) __.Select<object>("inV")), (g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.V(1).Out("knows").HasId(2)}},
+ {"g_mergeV_mergeE_combination_existing_vertices", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(T.Id,1).AddV("person").Property(T.Id,2), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).As("outV").MergeV((IDictionary<object,object>) p["xx2"]).As("inV").MergeE((IDictionary<object,object>) p["xx3"]).Option(Merge.OutV, (ITraversal) __.Select<object>("outV")).Option(Merge.InV, (ITraversal) __.Select<obj [...]
+ {"g_mergeVXemptyX_optionXonMatch_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> {}).Option(Merge.OnMatch, (IDictionary<object,object>) null), (g,p) =>g.V().Has("person","name","marko").Has("age",29)}},
+ {"g_V_mergeVXemptyX_optionXonMatch_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.V().MergeV((IDictionary<object,object>) new Dictionary<object,object> {}).Option(Merge.OnMatch, (IDictionary<object,object>) null), (g,p) =>g.V().Has("person","name","marko").Has("age",29)}},
+ {"g_mergeVXnullX_optionXonCreate_label_null_name_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"])}},
+ {"g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.V().MergeV((IDictionary<object,object>) p["xx1"])}},
+ {"g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) null), (g,p) =>g.V(), (g,p) =>g.V().Has("person","name","marko"), (g,p) =>g.V().Has("person","name","stephen")}},
+ {"g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.V().MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) null), (g,p) =>g.V(), (g,p) =>g.V().Has("person","name","marko"), (g,p) =>g.V().Has("person","name","stephen")}},
+ {"g_mergeVXnullX_optionXonCreate_emptyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) null).Option(Merge.OnCreate, (IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.V()}},
+ {"g_V_mergeVXnullX_optionXonCreate_emptyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.V().MergeV((IDictionary<object,object>) null).Option(Merge.OnCreate, (IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.V()}},
+ {"g_mergeVXemptyX_no_existing", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.V()}},
+ {"g_injectX0X_mergeVXemptyX_no_existing", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(0).MergeV((IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.V()}},
+ {"g_mergeVXemptyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.V().Has("person","name","marko").Has("age",29)}},
+ {"g_V_mergeVXemptyX_two_exist", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29).AddV("person").Property("name","vadas").Property("age",27), (g,p) =>g.V().MergeV((IDictionary<object,object>) new Dictionary<object,object> {}), (g,p) =>g.V(), (g,p) =>g.V().Has("person","name","marko").Has("age",29), (g,p) =>g.V().Has("person","name","vadas").Has("age",27)}},
+ {"g_mergeVXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) null), (g,p) =>g.V()}},
+ {"g_V_mergeVXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.V().MergeV((IDictionary<object,object>) null), (g,p) =>g.V()}},
+ {"g_mergeVXlabel_person_name_stephenX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","stephen")}},
+ {"g_mergeVXlabel_person_name_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","marko")}},
+ {"g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V().Has("person","name","stephen").Has("age",19)}},
+ {"g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnMatch, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V().Has("person","name","marko").Has("age",19)}},
+ {"g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.WithSideEffect("c",p["xx1"]).WithSideEffect("m",p["xx2"]).MergeV((ITraversal) __.Select<object>("c")).Option(Merge.OnCreate, (ITraversal) __.Select<object>("m")), ( [...]
+ {"g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.WithSideEffect("c",p["xx1"]).WithSideEffect("m",p["xx2"]).MergeV((ITraversal) __.Select<object>("c")).Option(Merge.OnMatch, (ITraversal) __.Select<object>("m")), (g,p) =>g.V().Has("person","nam [...]
+ {"g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Property("name","vadas","acl","public"), (g,p) =>g.V().Properties<object>("name").HasValue("vadas").Has("acl","public")}},
+ {"g_injectX0X_mergeVXlabel_person_name_stephenX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.Inject(0).MergeV((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","stephen")}},
+ {"g_injectX0X_mergeVXlabel_person_name_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.Inject(0).MergeV((IDictionary<object,object>) p["xx1"]), (g,p) =>g.V().Has("person","name","marko")}},
+ {"g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.Inject(0).MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V().Has("person","name","stephen").Has("age",19)}},
+ {"g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.Inject(0).MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnMatch, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V().Has("person","name","marko").Has("age",19)}},
+ {"g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.WithSideEffect("c",p["xx1"]).WithSideEffect("m",p["xx2"]).Inject(0).MergeV((ITraversal) __.Select<object>("c")).Option(Merge.OnCreate, (ITraversal) __.Sel [...]
+ {"g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.WithSideEffect("c",p["xx1"]).WithSideEffect("m",p["xx2"]).Inject(0).MergeV((ITraversal) __.Select<object>("c")).Option(Merge.OnMatch, (ITraversal) __.Select<object>("m")), (g,p) =>g.V [...]
+ {"g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.Inject(0).MergeV((IDictionary<object,object>) p["xx1"]).Property("name","vadas","acl","public"), (g,p) =>g.V().Properties<object>("name").HasValue("vadas").Has("acl","public")}},
+ {"g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.Inject(p["xx1"],p["xx2"]).MergeV((ITraversal) __.Identity()), (g,p) =>g.V().Has("person","name","stephen"), (g,p) =>g.V().Has("person","name","marko"), (g,p) =>g.V()}},
+ {"g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property("age",29), (g,p) =>g.Inject(p["xx1"],p["xx2"]).MergeV(), (g,p) =>g.V().Has("person","name","stephen"), (g,p) =>g.V().Has("person","name","marko"), (g,p) =>g.V()}},
+ {"g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(Cardinality.List,"name","stephen"), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Property(Cardinality.List,"name","steve"), (g,p) =>g.V(), (g,p) =>g.V().Properties<object>("name").HasValue("steve"), (g,p) =>g.V().Properties<object>("name").HasValue("stephen"), (g,p) =>g.V().Properties< [...]
+ {"g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","vadas").Property("age",29).AddV("person").Property("name","vadas").Property("age",27), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnMatch, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V().Has("age",35), (g,p) =>g.V()}},
+ {"g_V_mapXmergeXlabel_person_name_joshXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","vadas").Property("age",29).AddV("person").Property("name","stephen").Property("age",27), (g,p) =>g.V().Map<object>(__.MergeV((IDictionary<object,object>) p["xx1"])), (g,p) =>g.V().Has("person","name","josh"), (g,p) =>g.V()}},
+ {"g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32), (g,p) =>g.WithSideEffect("c",p["xx1"]).WithSideEffect("m",p["xx2"]).MergeV((ITrav [...]
+ {"g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32), (g,p) =>g.WithSideEffect("m",p["xx1"]).V().Has("person","name","marko").MergeV((IDictionary<object [...]
+ {"g_mergeV_onCreate_inheritance_existing", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","mike").Property(T.Id,1), (g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V(), (g,p) =>g.V(1).Has("person","name","mike")}},
+ {"g_mergeV_onCreate_inheritance_new_1", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V(), (g,p) =>g.V(1).Has("person","name","mike")}},
+ {"g_mergeV_onCreate_inheritance_new_2", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"]), (g,p) =>g.V(), (g,p) =>g.V(1).Has("person","name","mike")}},
+ {"g_mergeV_label_override_prohibited", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"])}},
+ {"g_mergeV_id_override_prohibited", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.MergeV((IDictionary<object,object>) p["xx1"]).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx2"])}},
{"g_V_age_min", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Min<object>()}},
{"g_V_foo_min", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("foo").Min<object>()}},
{"g_V_name_min", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("name").Min<object>()}},
@@@ -727,25 -519,19 +735,26 @@@
{"g_V_both_hasLabelXpersonX_order_byXage_descX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().HasLabel("person").Order().By("age",Order.Desc).Values<object>("name")}},
{"g_V_order_byXoutE_count_descX_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By(__.OutE().Count(),Order.Desc).By("name")}},
{"g_V_hasLabelXpersonX_order_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("person").Order().By("age")}},
+ {"g_V_order_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By("age")}},
+ {"g_V_fold_orderXlocalX_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Fold().Order(Scope.Local).By("age")}},
+ {"g_V_fold_orderXlocalX_byXage_descX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Fold().Order(Scope.Local).By("age",Order.Desc)}},
{"g_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Or(__.HasLabel("person"),__.Has("software","name","lop")).Order().By("age")}},
+ {"g_withStrategiesXProductiveByStrategyX_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Or(__.HasLabel("person"),__.Has("software","name","lop")).Order().By("age")}},
{"g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V((Vertex) p["v1"]).HasLabel("person").Map<object>((IFunction) p["l1"]).Order(Scope.Local).By(Column.Values,Order.Desc).By(Column.Keys,Order.Asc)}},
+ {"g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_descX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("song","name","OH BOY").Out("followedBy").Out("followedBy").Order().By("performances").By("songType",Order.Desc).By("name")}},
+ {"g_V_hasLabelXsongX_order_byXperformances_descX_byXnameX_rangeX110_120X_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("song").Order().By("performances",Order.Desc).By("name").Range<object>(110,120).Values<object>("name")}},
{"g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).ElementMap<object>().Order(Scope.Local).By(Column.Keys,Order.Desc).Unfold<object>()}},
+ {"g_VX1X_elementMap_orderXlocalX_byXkeys_ascXunfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).ElementMap<object>().Order(Scope.Local).By(Column.Keys,Order.Asc).Unfold<object>()}},
+ {"g_VX1X_valuesXageX_orderXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Values<object>("age").Order(Scope.Local)}},
- {"g_V_pageRank_hasXpageRankX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().PageRank().Has("gremlin.pageRankVertexProgram.pageRank"), (g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().PageRank().Has("gremlin.pageRankVertexPr [...]
- {"g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().Out("created").PageRank().With("~tinkerpop.pageRank.edges",__.BothE()).With("~tinkerpop.pageRank.propertyName","projectRank").With("~tinkerpop. [...]
- {"g_V_pageRank_order_byXpageRank_descX_byXnameX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank",Order.Desc).By("name").Values<object>("name")}},
- {"g_V_pageRank_order_byXpageRank_descX_name_limitX2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank",Order.Desc).Values<object>("name").Limit<object>(2)}},
- {"g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().PageRank().With("~tinkerpop.pageRank.edges",__.OutE("knows")).With("~tinkerpop.pageRank.propertyName","friendRank").Project<object>("name","friendR [...]
- {"g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().HasLabel("person").PageRank().With("~tinkerpop.pageRank.propertyName","pageRank").Project<object>("name","pageRank").By("name").By(__.Values<object>("pageRan [...]
- {"g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().PageRank().With("~tinkerpop.pageRank.propertyName","pageRank").As("a").Out("knows").Values<object>("pageRank").As("b").Select<object>("a","b").By().By(__.Math("ce [...]
- {"g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().HasLabel("software").Has("name","ripple").PageRank(1.0).With("~tinkerpop.pageRank.edges [...]
- {"g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new VertexProgramStrategy(graphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer")).V().Out("created").Group("m").By(T.Label).PageRank(1.0).With("~tinkerpop.pageRank.propertyName","pageRank").With("~t [...]
+ {"g_V_pageRank_hasXpageRankX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().PageRank().Has("gremlin.pageRankVertexProgram.pageRank")}},
+ {"g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").PageRank().With("~tinkerpop.pageRank.edges",__.BothE()).With("~tinkerpop.pageRank.propertyName","projectRank").With("~tinkerpop.pageRank.times",0).ValueMap<object,object>("name","projectRank")}},
+ {"g_V_pageRank_order_byXpageRank_descX_byXnameX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank",Order.Desc).By("name").Values<object>("name")}},
+ {"g_V_pageRank_order_byXpageRank_descX_name_limitX2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank",Order.Desc).Values<object>("name").Limit<object>(2)}},
+ {"g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().PageRank().With("~tinkerpop.pageRank.edges",__.OutE("knows")).With("~tinkerpop.pageRank.propertyName","friendRank").Project<object>("name","friendRank").By("name").By(__.Values<object>("friendRank").Math("ceil(_ * 100)"))}},
+ {"g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("person").PageRank().With("~tinkerpop.pageRank.propertyName","pageRank").Project<object>("name","pageRank").By("name").By(__.Values<object>("pageRank").Math("ceil(_ * 100)"))}},
+ {"g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().PageRank().With("~tinkerpop.pageRank.propertyName","pageRank").As("a").Out("knows").Values<object>("pageRank").As("b").Select<object>("a","b").By().By(__.Math("ceil(_ * 100)"))}},
+ {"g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("software").Has("name","ripple").PageRank(1.0).With("~tinkerpop.pageRank.edges",__.InE("created")).With("~tinkerpop.pageRank.times",1).With("~tinkerpop.pageRank.propertyName","priors").In("created") [...]
+ {"g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").Group("m").By(T.Label).PageRank(1.0).With("~tinkerpop.pageRank.propertyName","pageRank").With("~tinkerpop.pageRank.edges",__.InE()).With("~tinkerpop.pageRank.times",1).In("created").Group("m").By("pageRank").Cap<objec [...]
{"g_VX1X_name_path", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Values<object>("name").Path()}},
{"g_VX1X_out_path_byXageX_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().Path().By("age").By("name")}},
{"g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Out()).Times(2).Path().By().By("name").By("lang")}},
@@@ -858,15 -639,12 +867,16 @@@
{"g_V_foo_fold_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("foo").Fold().Sum<object>(Scope.Local)}},
{"g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("software").Group<object,object>().By("name").By(__.BothE().Values<object>("weight").Sum<object>())}},
{"g_V_aggregateXaX_byXageX_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("age").Cap<object>("a").Sum<object>(Scope.Local)}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("age").Cap<object>("a").Sum<object>(Scope.Local)}},
{"g_V_aggregateXaX_byXageX_capXaX_unfold_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("age").Cap<object>("a").Unfold<object>().Sum<object>()}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("age").Cap<object>("a").Unfold<object>().Sum<object>()}},
{"g_V_aggregateXaX_byXfooX_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("foo").Cap<object>("a").Sum<object>(Scope.Local)}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("foo").Cap<object>("a").Sum<object>(Scope.Local)}},
{"g_V_aggregateXaX_byXfooX_capXaX_unfold_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").By("foo").Cap<object>("a").Unfold<object>().Sum<object>()}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("a").By("foo").Cap<object>("a").Unfold<object>().Sum<object>()}},
{"g_injectXnull_10_5_nullX_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null,p["xx1"],p["xx2"],null).Sum<object>()}},
{"g_injectXlistXnull_10_5_nullXX_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Sum<object>(Scope.Local)}},
+ {"g_VX1X_valuesXageX_sumXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Values<object>("age").Sum<object>(Scope.Local)}},
{"g_V_localXoutE_foldX_unfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Local<object>(__.OutE().Fold()).Unfold<object>()}},
{"g_V_valueMap_unfold_mapXkeyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().ValueMap<object,object>().Unfold<object>().Map<object>((IFunction) p["l1"])}},
{"g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Repeat(__.Both().SimplePath()).Until(__.HasId(p["vid6"])).Path().By("name").Unfold<object>()}},
diff --cc gremlin-go/driver/cucumber/gremlin.go
index 31faef9293,24877ae13f..0584b6da86
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@@ -128,9 -125,7 +128,10 @@@ var translationMap = map[string][]func(
"g_V_both_properties_dedup_count": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Both().Properties().Dedup().Count()}},
"g_V_both_properties_properties_dedup_count": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Both().Properties().Properties().Dedup().Count()}},
"g_V_order_byXname_descX_barrier_dedup_age_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Order().By("name", gremlingo.Order.Desc).Barrier().Dedup().By("age").Values("name")}},
+ "g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Order().By("name", gremlingo.Order.Desc).Barrier().Dedup().By("age").Values("name")}},
+ "g_V_both_dedup_age_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Both().Dedup().By("age").Values("name")}},
+ "g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).As("a").Both().As("b").Both().As("c").Dedup("a", "b").By("age").Select("a", "b", "c").By("name")}},
+ "g_VX1X_valuesXageX_dedupXlocalX_unfold": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Values("age").Dedup(gremlingo.Scope.Local).Unfold()}},
"g_V_drop": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV().As("a").AddV().As("b").AddE("knows").To("a")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Drop()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {re [...]
"g_V_outE_drop": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV().As("a").AddV().As("b").AddE("knows").To("a")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().OutE().Drop()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphT [...]
"g_V_properties_drop": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV().Property("name", "bob").AddV().Property("name", "alice")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Properties().Drop()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, func(g *gremlingo.GraphTraversalSource, p map[string]interf [...]
@@@ -271,9 -258,9 +273,10 @@@
"g_E_sampleX1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E().Sample(1)}},
"g_E_sampleX2X_byXweightX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E().Sample(2).By("weight")}},
"g_V_localXoutE_sampleX1X_byXweightXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Local(gremlingo.T__.OutE().Sample(1).By("weight"))}},
- "g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Group().By(gremlingo.T.Label).By(gremlingo.T__.BothE().Values("weight").Sample(2).Fold())}},
- "g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Group().By(gremlingo.T.Label).By(gremlingo.T__.BothE().Values("weight").Fold().Sample(gremlingo.Scope.Local, 5))}},
+ "g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_sampleX2X_foldXunfold": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.SeedStrategy(gremlingo.SeedStrategyConfig{Seed: 999999})).V().Group().By(gremlingo.T.Label).By(gremlingo.T__.BothE().Values("weight").Order().Sample(2).Fold()).Unfold()}},
+ "g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_fold_sampleXlocal_5XXunfold": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.SeedStrategy(gremlingo.SeedStrategyConfig{Seed: 999999})).V().Group().By(gremlingo.T.Label).By(gremlingo.T__.BothE().Values("weight").Order().Fold().Sample(gremlingo.Scope.Local, 5)).Unfold()}},
+ "g_withStrategiesXSeedStrategyX_V_order_byXlabel_descX_sampleX1X_byXageX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.SeedStrategy(gremlingo.SeedStrategyConfig{Seed: 999999})).V().Order().By(gremlingo.T.Label, gremlingo.Order.Desc).Sample(1).By("age")}},
+ "g_VX1X_valuesXageX_sampleXlocal_5X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Values("age").Sample(gremlingo.Scope.Local, 5)}},
"g_VX1X_outXcreatedX_inXcreatedX_simplePath": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out("created").In("created").SimplePath()}},
"g_V_repeatXboth_simplePathX_timesX3X_path": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Repeat(gremlingo.T__.Both().SimplePath()).Times(3).Path()}},
"g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().As("a").Out().As("b").Out().As("c").SimplePath().By(gremlingo.T.Label).From("b").To("c").Path().By("name")}},
@@@ -575,93 -451,12 +581,94 @@@
"g_V_foo_fold_meanXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("foo").Fold().Mean(gremlingo.Scope.Local)}},
"g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("software").Group().By("name").By(gremlingo.T__.BothE().Values("weight").Mean())}},
"g_V_aggregateXaX_byXageX_meanXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("age").Cap("a").Mean(gremlingo.Scope.Local)}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_meanXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("age").Cap("a").Mean(gremlingo.Scope.Local)}},
"g_V_aggregateXaX_byXageX_capXaX_unfold_mean": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("age").Cap("a").Unfold().Mean()}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_mean": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("age").Cap("a").Unfold().Mean()}},
"g_V_aggregateXaX_byXfooX_meanXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("foo").Cap("a").Mean(gremlingo.Scope.Local)}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_meanXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("foo").Cap("a").Mean(gremlingo.Scope.Local)}},
"g_V_aggregateXaX_byXfooX_capXaX_unfold_mean": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("foo").Cap("a").Unfold().Mean()}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_mean": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("foo").Cap("a").Unfold().Mean()}},
"g_injectXnull_10_20_nullX_mean": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(nil, p["xx1"], p["xx2"], nil).Mean()}},
"g_injectXlistXnull_10_20_nullXX_meanXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).Mean(gremlingo.Scope.Local)}},
+ "g_VX1X_valuesXageX_meanXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Values("age").Mean(gremlingo.Scope.Local)}},
+ "g_V_mergeEXlabel_selfX_optionXonMatch_emptyX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddE("self")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeE(p["xx1"]).Option(gremlingo.Merge.OnMatch, map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *greml [...]
+ "g_V_mergeEXlabel_selfX_optionXonMatch_nullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddE("self")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeE(p["xx1"]).Option(gremlingo.Merge.OnMatch, nil)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return [...]
+ "g_V_mergeEXemptyX_optionXonCreate_nullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().As("v").MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, nil).Option(gremlingo.Merge.OutV, gremlingo.T__.Select("v")).Option(gremlingo.Merge.InV, gremlingo.T__.Select("v") [...]
+ "g_mergeEXemptyX_exists": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddE("self")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversal [...]
+ "g_mergeEXemptyX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(map[interface{}]interface{}{})}},
+ "g_V_mergeEXemptyX_two_exist": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().As("v").MergeE(p["xx1"]).Option(gremlingo.Merge.OutV, gremlingo.T__.Select("v")).Option(gremlingo.Merge.InV, gremlingo.T__. [...]
+ "g_mergeEXnullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(nil)}},
+ "g_V_mergeEXnullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeE(nil)}},
+ "g_mergeEXlabel_knows_out_marko_in_vadasX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremling [...]
+ "g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", p["xx1"]).MergeE(gremlingo.T__.Select("a"))}, [...]
+ "g_mergeEXlabel_knows_out_marko1_in_vadas1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremli [...]
+ "g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"])}, func(g *gr [...]
+ "g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"])}},
+ "g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"]).Option(gremlingo.Merge.OnMatch, p["xx3"])}},
+ "g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraver [...]
+ "g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b").Property("created", "Y")}, func(g *gremlingo.GraphTraversalSource, p map[string]in [...]
+ "g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b").Property("created", "Y").AddE("knows").From("a").To("b")}, func(g *gremling [...]
+ "g_injectXlabel_knows_out_marko_in_vadasX_mergeE": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).MergeE()}, func(g *gremlingo.GraphTraversalSource, p map[string]interf [...]
+ "g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b").Property("created", "Y").AddE("knows").From("b").To("a").Property("created", "Y")}, func(g * [...]
+ "g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b").Property("created", "Y").AddE("knows").From("b").To("a").Property("created", "Y")}, func(g [...]
+ "g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b").Property("created", "Y").AddE("knows").From("b").To("a").Property("created", "Y")}, func(g *gremlingo.G [...]
+ "g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("person", "name", "marko").MergeE(p["xx1"])}, func(g *greml [...]
+ "g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").From("a").To("b")}, func(g *gremlingo.GraphTraversalSo [...]
+ "g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremli [...]
+ "g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *grem [...]
+ "g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]inte [...]
+ "g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"], p["xx2"]).MergeE()}, func(g *gremlingo.GraphTra [...]
+ "g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 100).Property("name", "marko").As("a").AddV("person").Property(gremlingo.T.Id, 101).Property("name", "vadas").As("b").AddE("knows").Property("weight", [...]
+ "g_mergeE_with_outVinV_options_map": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OutV, p["xx2"]).Option(gremlingo.Merge.InV, p["xx3"])}, func(g *gremlingo [...]
+ "g_mergeE_with_outVinV_options_select": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(1).As("x").V(2).As("y").MergeE(p["xx1"]).Option(gremlingo.Merge.OutV, gremlingo.T__.Select("x")).Option(grem [...]
+ "g_mergeE_with_eid_specified_and_inheritance_1": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, [...]
+ "g_mergeE_with_eid_specified_and_inheritance_2": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, [...]
+ "g_mergeE_outV_override_prohibited": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}},
+ "g_mergeE_inV_override_prohibited": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}},
+ "g_mergeE_label_override_prohibited": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}},
+ "g_mergeE_id_override_prohibited": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).Property("name", "a").AddV("person").Property(gremlingo.T.Id, 2).Property("name", "b")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeE(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}},
+ "g_mergeV_mergeE_combination_new_vertices": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).As("outV").MergeV(p["xx2"]).As("inV").MergeE(p["xx3"]).Option(gremlingo.Merge.OutV, gremlingo.T__.Select("outV")).Option(gremlingo.Merge.InV, gremlingo.T__.Select("inV"))}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, func(g *gremlingo.GraphTraversalSource, p [...]
+ "g_mergeV_mergeE_combination_existing_vertices": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.T.Id, 1).AddV("person").Property(gremlingo.T.Id, 2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).As("outV").MergeV(p["xx2"]).As("inV").MergeE(p["xx3"]).Option(gremlingo.Merge.OutV, gremlingo.T__.Select("outV")).Option(gremlin [...]
+ "g_mergeVXemptyX_optionXonMatch_nullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{}).Option(gremlingo.Merge.OnMatch, nil)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g. [...]
+ "g_V_mergeVXemptyX_optionXonMatch_nullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeV(map[interface{}]interface{}{}).Option(gremlingo.Merge.OnMatch, nil)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {ret [...]
+ "g_mergeVXnullX_optionXonCreate_label_null_name_markoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"])}},
+ "g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeV(p["xx1"])}},
+ "g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, nil)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g [...]
+ "g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, nil)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {re [...]
+ "g_mergeVXnullX_optionXonCreate_emptyX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(nil).Option(gremlingo.Merge.OnCreate, map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return [...]
+ "g_V_mergeVXnullX_optionXonCreate_emptyX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeV(nil).Option(gremlingo.Merge.OnCreate, map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {r [...]
+ "g_mergeVXemptyX_no_existing": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}},
+ "g_injectX0X_mergeVXemptyX_no_existing": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(0).MergeV(map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}},
+ "g_mergeVXemptyX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("person", "name", "marko").Has("age", 29)}},
+ "g_V_mergeVXemptyX_two_exist": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeV(map[interface{}]interface{}{})}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphT [...]
+ "g_mergeVXnullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(nil)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}},
+ "g_V_mergeVXnullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().MergeV(nil)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}},
+ "g_mergeVXlabel_person_name_stephenX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("person", "name", "stephen")}},
+ "g_mergeVXlabel_person_name_markoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("person", "name", "marko")}},
+ "g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interfac [...]
+ "g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnMatch, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal [...]
+ "g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("c", p["xx1"]).WithSideEffect("m", p["xx2"]).MergeV( [...]
+ "g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("c", p["xx1"]).WithSideEffect("m", p["xx2"]).MergeV(gremlingo.T__.Select("c")).Op [...]
+ "g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Property("name", "vadas", "acl", "public")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraver [...]
+ "g_injectX0X_mergeVXlabel_person_name_stephenX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(0).MergeV(p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("person", "name", "stephen")}},
+ "g_injectX0X_mergeVXlabel_person_name_markoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(0).MergeV(p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("person", "name", "marko")}},
+ "g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(0).MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p [...]
+ "g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(0).MergeV(p["xx1"]).Option(gremlingo.Merge.OnMatch, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *grem [...]
+ "g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("c", p["xx1"]).WithSideEffect("m", p["xx2" [...]
+ "g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("c", p["xx1"]).WithSideEffect("m", p["xx2"]).Inject(0).MergeV(gremlingo [...]
+ "g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(0).MergeV(p["xx1"]).Property("name", "vadas", "acl", "public")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *g [...]
+ "g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"], p["xx2"]).MergeV(gremlingo.T__.Identity())}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo. [...]
+ "g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"], p["xx2"]).MergeV()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has(" [...]
+ "g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property(gremlingo.Cardinality.List, "name", "stephen")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Property(gremlingo.Cardinality.List, "name", "steve")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *grem [...]
+ "g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "vadas").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnMatch, p["xx2"])}, func(g *gremlingo.GraphTraversalSource [...]
+ "g_V_mapXmergeXlabel_person_name_joshXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "vadas").Property("age", 29).AddV("person").Property("name", "stephen").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Map(gremlingo.T__.MergeV(p["xx1"]))}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *greml [...]
+ "g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property(gremlingo.Cardinality.List, "age", 29).Property(gremlingo.Cardinality.List, "age", 31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g *gremlingo.GraphTraversalSource, p [...]
+ "g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property(gremlingo.Cardinality.List, "age", 29).Property(gremlingo.Cardinality.List, "age", 31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g *gremlingo.GraphTraversalSource, p map[string]inter [...]
+ "g_mergeV_onCreate_inheritance_existing": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "mike").Property(gremlingo.T.Id, 1)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, [...]
+ "g_mergeV_onCreate_inheritance_new_1": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(1).Has("person", "name", "mike")}},
+ "g_mergeV_onCreate_inheritance_new_2": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(1).Has("person", "name", "mike")}},
+ "g_mergeV_label_override_prohibited": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}},
+ "g_mergeV_id_override_prohibited": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.MergeV(p["xx1"]).Option(gremlingo.Merge.OnCreate, p["xx2"])}},
"g_V_age_min": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Min()}},
"g_V_foo_min": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("foo").Min()}},
"g_V_name_min": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("name").Min()}},
@@@ -698,25 -490,19 +706,26 @@@
"g_V_both_hasLabelXpersonX_order_byXage_descX_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Both().HasLabel("person").Order().By("age", gremlingo.Order.Desc).Values("name")}},
"g_V_order_byXoutE_count_descX_byXnameX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Order().By(gremlingo.T__.OutE().Count(), gremlingo.Order.Desc).By("name")}},
"g_V_hasLabelXpersonX_order_byXageX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("person").Order().By("age")}},
+ "g_V_order_byXageX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Order().By("age")}},
+ "g_V_fold_orderXlocalX_byXageX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Fold().Order(gremlingo.Scope.Local).By("age")}},
+ "g_V_fold_orderXlocalX_byXage_descX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Fold().Order(gremlingo.Scope.Local).By("age", gremlingo.Order.Desc)}},
"g_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Or(gremlingo.T__.HasLabel("person"), gremlingo.T__.Has("software", "name", "lop")).Order().By("age")}},
+ "g_withStrategiesXProductiveByStrategyX_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Or(gremlingo.T__.HasLabel("person"), gremlingo.T__.Has("software", "name", "lop")).Order().By("age")}},
"g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["v1"]).HasLabel("person").Map(p["l1"]).Order(gremlingo.Scope.Local).By(gremlingo.Column.Values, gremlingo.Order.Desc).By(gremlingo.Column.Keys, gremlingo.Order.Asc)}},
+ "g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_descX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("song", "name", "OH BOY").Out("followedBy").Out("followedBy").Order().By("performances").By("songType", gremlingo.Order.Desc).By("name")}},
+ "g_V_hasLabelXsongX_order_byXperformances_descX_byXnameX_rangeX110_120X_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("song").Order().By("performances", gremlingo.Order.Desc).By("name").Range(110, 120).Values("name")}},
"g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).ElementMap().Order(gremlingo.Scope.Local).By(gremlingo.Column.Keys, gremlingo.Order.Desc).Unfold()}},
+ "g_VX1X_elementMap_orderXlocalX_byXkeys_ascXunfold": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).ElementMap().Order(gremlingo.Scope.Local).By(gremlingo.Column.Keys, gremlingo.Order.Asc).Unfold()}},
+ "g_VX1X_valuesXageX_orderXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Values("age").Order(gremlingo.Scope.Local)}},
- "g_V_pageRank_hasXpageRankX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().PageRank().Has("gremlin.pageRankVertexProgram.pageRank")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlin [...]
- "g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().Out("created").PageRank().With("~tinkerpop.pageRank.edges", gremlingo.T__.BothE()).With("~tink [...]
- "g_V_pageRank_order_byXpageRank_descX_byXnameX_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank", gremlingo.Order.Desc).By("name").Values("name")}},
- "g_V_pageRank_order_byXpageRank_descX_name_limitX2X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank", gremlingo.Order.Desc).Values("name").Limit(2)}},
- "g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().PageRank().With("~tinkerpop.pageRank.edges", gremlingo.T__.OutE("knows")).With("~tinkerpop.pageRan [...]
- "g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().HasLabel("person").PageRank().With("~tinkerpop.pageRank.propertyName", "pageRank").Project("name", "pageRank [...]
- "g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().PageRank().With("~tinkerpop.pageRank.propertyName", "pageRank").As("a").Out("knows").Values("pageRank").As("b").S [...]
- "g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().HasLabel("software").Has("name", "ripp [...]
- "g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.VertexProgramStrategy(gremlingo.VertexProgramStrategyConfig{GraphComputer: "org.apache.tinkerpop.gremlin.process.computer.GraphComputer", })).V().Out("created").Group("m").By(gremlingo.T.Label).PageRank(1.0).W [...]
+ "g_V_pageRank_hasXpageRankX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().PageRank().Has("gremlin.pageRankVertexProgram.pageRank")}},
+ "g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Out("created").PageRank().With("~tinkerpop.pageRank.edges", gremlingo.T__.BothE()).With("~tinkerpop.pageRank.propertyName", "projectRank").With("~tinkerpop.pageRank.times", 0).ValueMap("name", "projectRank")}},
+ "g_V_pageRank_order_byXpageRank_descX_byXnameX_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank", gremlingo.Order.Desc).By("name").Values("name")}},
+ "g_V_pageRank_order_byXpageRank_descX_name_limitX2X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().PageRank().Order().By("gremlin.pageRankVertexProgram.pageRank", gremlingo.Order.Desc).Values("name").Limit(2)}},
+ "g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().PageRank().With("~tinkerpop.pageRank.edges", gremlingo.T__.OutE("knows")).With("~tinkerpop.pageRank.propertyName", "friendRank").Project("name", "friendRank").By("name").By(gremlingo.T__.Values("friendRank").Math("ceil(_ * 100)"))}},
+ "g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("person").PageRank().With("~tinkerpop.pageRank.propertyName", "pageRank").Project("name", "pageRank").By("name").By(gremlingo.T__.Values("pageRank").Math("ceil(_ * 100)"))}},
+ "g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().PageRank().With("~tinkerpop.pageRank.propertyName", "pageRank").As("a").Out("knows").Values("pageRank").As("b").Select("a", "b").By().By(gremlingo.T__.Math("ceil(_ * 100)"))}},
+ "g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("software").Has("name", "ripple").PageRank(1.0).With("~tinkerpop.pageRank.edges", gremlingo.T__.InE("created")).With("~tinkerpop.pageRank.times", 1).With("~tinkerpop.pageRank.propertyName", "prior [...]
+ "g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Out("created").Group("m").By(gremlingo.T.Label).PageRank(1.0).With("~tinkerpop.pageRank.propertyName", "pageRank").With("~tinkerpop.pageRank.edges", gremlingo.T__.InE()).With("~tinkerpop.pageRank.times", 1).In("created").Group("m" [...]
"g_VX1X_name_path": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Values("name").Path()}},
"g_VX1X_out_path_byXageX_byXnameX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out().Path().By("age").By("name")}},
"g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Repeat(gremlingo.T__.Out()).Times(2).Path().By().By("name").By("lang")}},
@@@ -829,15 -610,12 +838,16 @@@
"g_V_foo_fold_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("foo").Fold().Sum(gremlingo.Scope.Local)}},
"g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("software").Group().By("name").By(gremlingo.T__.BothE().Values("weight").Sum())}},
"g_V_aggregateXaX_byXageX_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("age").Cap("a").Sum(gremlingo.Scope.Local)}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("age").Cap("a").Sum(gremlingo.Scope.Local)}},
"g_V_aggregateXaX_byXageX_capXaX_unfold_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("age").Cap("a").Unfold().Sum()}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("age").Cap("a").Unfold().Sum()}},
"g_V_aggregateXaX_byXfooX_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("foo").Cap("a").Sum(gremlingo.Scope.Local)}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("foo").Cap("a").Sum(gremlingo.Scope.Local)}},
"g_V_aggregateXaX_byXfooX_capXaX_unfold_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").By("foo").Cap("a").Unfold().Sum()}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("a").By("foo").Cap("a").Unfold().Sum()}},
"g_injectXnull_10_5_nullX_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(nil, p["xx1"], p["xx2"], nil).Sum()}},
"g_injectXlistXnull_10_5_nullXX_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"]).Sum(gremlingo.Scope.Local)}},
+ "g_VX1X_valuesXageX_sumXlocalX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Values("age").Sum(gremlingo.Scope.Local)}},
"g_V_localXoutE_foldX_unfold": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Local(gremlingo.T__.OutE().Fold()).Unfold()}},
"g_V_valueMap_unfold_mapXkeyX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().ValueMap().Unfold().Map(p["l1"])}},
"g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Repeat(gremlingo.T__.Both().SimplePath()).Until(gremlingo.T__.HasId(p["vid6"])).Path().By("name").Unfold()}},
diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index bd003f5d24,680ce38e25..5130b479cc
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@@ -147,9 -142,7 +147,10 @@@ const gremlins =
g_V_both_properties_dedup_count: [function({g}) { return g.V().both().properties().dedup().count() }],
g_V_both_properties_properties_dedup_count: [function({g}) { return g.V().both().properties().properties().dedup().count() }],
g_V_order_byXname_descX_barrier_dedup_age_name: [function({g}) { return g.V().order().by("name",Order.desc).barrier().dedup().by("age").values("name") }],
+ g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().order().by("name",Order.desc).barrier().dedup().by("age").values("name") }],
+ g_V_both_dedup_age_name: [function({g}) { return g.V().both().dedup().by("age").values("name") }],
+ g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name: [function({g, vid1}) { return g.V(vid1).as("a").both().as("b").both().as("c").dedup("a","b").by("age").select("a","b","c").by("name") }],
+ g_VX1X_valuesXageX_dedupXlocalX_unfold: [function({g, vid1}) { return g.V(vid1).values("age").dedup(Scope.local).unfold() }],
g_V_drop: [function({g}) { return g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return g.V().drop() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
g_V_outE_drop: [function({g}) { return g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return g.V().outE().drop() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
g_V_properties_drop: [function({g}) { return g.addV().property("name","bob").addV().property("name","alice") }, function({g}) { return g.V().properties().drop() }, function({g}) { return g.V() }, function({g}) { return g.V().properties() }],
@@@ -290,9 -275,9 +292,10 @@@
g_E_sampleX1X: [function({g}) { return g.E().sample(1) }],
g_E_sampleX2X_byXweightX: [function({g}) { return g.E().sample(2).by("weight") }],
g_V_localXoutE_sampleX1X_byXweightXX: [function({g}) { return g.V().local(__.outE().sample(1).by("weight")) }],
- g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").sample(2).fold()) }],
- g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").fold().sample(Scope.local,5)) }],
+ g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_sampleX2X_foldXunfold: [function({g}) { return g.withStrategies(new SeedStrategy({seed:999999})).V().group().by(T.label).by(__.bothE().values("weight").order().sample(2).fold()).unfold() }],
+ g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_fold_sampleXlocal_5XXunfold: [function({g}) { return g.withStrategies(new SeedStrategy({seed:999999})).V().group().by(T.label).by(__.bothE().values("weight").order().fold().sample(Scope.local,5)).unfold() }],
+ g_withStrategiesXSeedStrategyX_V_order_byXlabel_descX_sampleX1X_byXageX: [function({g}) { return g.withStrategies(new SeedStrategy({seed:999999})).V().order().by(T.label,Order.desc).sample(1).by("age") }],
+ g_VX1X_valuesXageX_sampleXlocal_5X: [function({g, vid1}) { return g.V(vid1).values("age").sample(Scope.local,5) }],
g_VX1X_outXcreatedX_inXcreatedX_simplePath: [function({g, vid1}) { return g.V(vid1).out("created").in_("created").simplePath() }],
g_V_repeatXboth_simplePathX_timesX3X_path: [function({g}) { return g.V().repeat(__.both().simplePath()).times(3).path() }],
g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX: [function({g}) { return g.V().as("a").out().as("b").out().as("c").simplePath().by(T.label).from_("b").to("c").path().by("name") }],
@@@ -594,93 -468,12 +600,94 @@@
g_V_foo_fold_meanXlocalX: [function({g}) { return g.V().values("foo").fold().mean(Scope.local) }],
g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").mean()) }],
g_V_aggregateXaX_byXageX_meanXlocalX: [function({g}) { return g.V().aggregate("a").by("age").cap("a").mean(Scope.local) }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_meanXlocalX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("age").cap("a").mean(Scope.local) }],
g_V_aggregateXaX_byXageX_capXaX_unfold_mean: [function({g}) { return g.V().aggregate("a").by("age").cap("a").unfold().mean() }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_mean: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("age").cap("a").unfold().mean() }],
g_V_aggregateXaX_byXfooX_meanXlocalX: [function({g}) { return g.V().aggregate("a").by("foo").cap("a").mean(Scope.local) }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_meanXlocalX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("foo").cap("a").mean(Scope.local) }],
g_V_aggregateXaX_byXfooX_capXaX_unfold_mean: [function({g}) { return g.V().aggregate("a").by("foo").cap("a").unfold().mean() }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_mean: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("foo").cap("a").unfold().mean() }],
g_injectXnull_10_20_nullX_mean: [function({g, xx1, xx2}) { return g.inject(null,xx1,xx2,null).mean() }],
g_injectXlistXnull_10_20_nullXX_meanXlocalX: [function({g, xx1}) { return g.inject(xx1).mean(Scope.local) }],
+ g_VX1X_valuesXageX_meanXlocalX: [function({g, vid1}) { return g.V(vid1).values("age").mean(Scope.local) }],
+ g_V_mergeEXlabel_selfX_optionXonMatch_emptyX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29).addE("self") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch,new Map([])) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().properties() }, function({g, xx1}) { return g.V() }],
+ g_V_mergeEXlabel_selfX_optionXonMatch_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29).addE("self") }, function({g, xx1}) { return g.V().mergeE(xx1).option(Merge.onMatch,null) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().properties() }, function({g, xx1}) { return g.V() }],
+ g_V_mergeEXemptyX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.V().as("v").mergeE(xx1).option(Merge.onCreate,null).option(Merge.outV,__.select("v")).option(Merge.inV,__.select("v")) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.V() }],
+ g_mergeEXemptyX_exists: [function({g}) { return g.addV("person").property("name","marko").property("age",29).addE("self") }, function({g}) { return g.mergeE(new Map([])) }, function({g}) { return g.E() }, function({g}) { return g.V() }],
+ g_mergeEXemptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeE(new Map([])) }],
+ g_V_mergeEXemptyX_two_exist: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29).addV("person").property("name","vadas").property("age",27) }, function({g, xx1}) { return g.V().as("v").mergeE(xx1).option(Merge.outV,__.select("v")).option(Merge.inV,__.select("v")) }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.V() }],
+ g_mergeEXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeE(null) }],
+ g_V_mergeEXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeE(null) }],
+ g_mergeEXlabel_knows_out_marko_in_vadasX: [function({g, xx1}) { return g.addV("person").property(T.id,100).property("name","marko").addV("person").property(T.id,101).property("name","vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }],
+ g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX: [function({g, xx1}) { return g.addV("person").property(T.id,100).property("name","marko").addV("person").property(T.id,101).property("name","vadas") }, function({g, xx1}) { return g.withSideEffect("a",xx1).mergeE(__.select("a")) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }],
+ g_mergeEXlabel_knows_out_marko1_in_vadas1X: [function({g, xx1}) { return g.addV("person").property(T.id,100).property("name","marko").addV("person").property(T.id,101).property("name","vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }],
+ g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists: [function({g, xx1}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").outE("knows").has("weight",0.5).inV().has("person","name","vadas") }, function({g, xx1}) { return g.V().has("person","n [...]
+ g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X: [function({g, xx1}) { return g.mergeE(xx1) }],
+ g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX: [function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }],
+ g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, x [...]
+ g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) }, function({g, xx1, xx3, xx2}) { ret [...]
+ g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.V().has("person","name","marko").mergeE(xx1).option(Merge.onCr [...]
+ g_injectXlabel_knows_out_marko_in_vadasX_mergeE: [function({g, xx1}) { return g.addV("person").property(T.id,100).property("name","marko").addV("person").property(T.id,101).property("name","vadas") }, function({g, xx1}) { return g.inject(xx1).mergeE() }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }],
+ g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("b").to("a").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onM [...]
+ g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("b").to("a").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.on [...]
+ g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b").property("created","Y").addE("knows").from_("b").to("a").property("created","Y") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2).option(Merge.onMatch,xx3) } [...]
+ g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X: [function({g, xx1}) { return g.addV("person").property(T.id,100).property("name","marko").addV("person").property(T.id,101).property("name","vadas") }, function({g, xx1}) { return g.V().has("person","name","marko").mergeE(xx1) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.E() }, function({g, xx1}) { return g.E().hasLabel("self").bothV().has("name","vadas") }],
+ g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx2).withSideEffect("m",xx3).mergeE(xx1).option(Merge.onCreat [...]
+ g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx2).withSideEffect("m",xx3).mergeE(xx1).option(Merge.onCreate,__.select("c")).option(Merge.onMatch,_ [...]
+ g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx2).withSideEffect("m",xx3).mergeE(xx1).option(Merge.onCreate,__.select("c")).option(Merge.onMatch [...]
+ g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction: [function({g, xx1}) { return g.addV("person").property(T.id,100).property("name","marko").addV("person").property(T.id,101).property("name","vadas") }, function({g, xx1}) { return g.mergeE(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") }],
+ g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX: [function({g, xx1, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").addV("person").property(T.id,101).property("name","vadas") }, function({g, xx1, xx2}) { return g.inject(xx1,xx2).mergeE() }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").out("knows").has("person","name","vadas") } [...]
+ g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,100).property("name","marko").as("a").addV("person").property(T.id,101).property("name","vadas").as("b").addE("knows").property("weight",0.5).from_("a").to("b") }, function({g, xx1, xx3, xx2}) { return g.withSideEffect("c",xx [...]
+ g_mergeE_with_outVinV_options_map: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1, xx3, xx2}) { return g.mergeE(xx1).option(Merge.outV,xx2).option(Merge.inV,xx3) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.V(1).out("knows").hasId(2) }],
+ g_mergeE_with_outVinV_options_select: [function({g, xx1}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1}) { return g.V(1).as("x").V(2).as("y").mergeE(xx1).option(Merge.outV,__.select("x")).option(Merge.inV,__.select("y")) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V(1).out("knows").hasId(2) }],
+ g_mergeE_with_eid_specified_and_inheritance_1: [function({g, xx1, xx2}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.E(201) }, function({g, xx1, xx2}) { return g.V(1).out("knows").hasId(2) }],
+ g_mergeE_with_eid_specified_and_inheritance_2: [function({g, xx1, xx2}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.E() }, function({g, xx1, xx2}) { return g.E(201) }, function({g, xx1, xx2}) { return g.V(1).out("knows").hasId(2) }],
+ g_mergeE_outV_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }],
+ g_mergeE_inV_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }],
+ g_mergeE_label_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }],
+ g_mergeE_id_override_prohibited: [function({g, xx1, xx2}) { return g.addV("person").property(T.id,1).property("name","a").addV("person").property(T.id,2).property("name","b") }, function({g, xx1, xx2}) { return g.mergeE(xx1).option(Merge.onCreate,xx2) }],
+ g_mergeV_mergeE_combination_new_vertices: [function({g, xx1, xx3, xx2}) { return g.mergeV(xx1).as("outV").mergeV(xx2).as("inV").mergeE(xx3).option(Merge.outV,__.select("outV")).option(Merge.inV,__.select("inV")) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E() }, function({g, xx1, xx3, xx2}) { return g.V(1).out("knows").hasId(2) }],
+ g_mergeV_mergeE_combination_existing_vertices: [function({g, xx1, xx3, xx2}) { return g.addV("person").property(T.id,1).addV("person").property(T.id,2) }, function({g, xx1, xx3, xx2}) { return g.mergeV(xx1).as("outV").mergeV(xx2).as("inV").mergeE(xx3).option(Merge.outV,__.select("outV")).option(Merge.inV,__.select("inV")) }, function({g, xx1, xx3, xx2}) { return g.V() }, function({g, xx1, xx3, xx2}) { return g.E() }, function({g, xx1, xx3, xx2}) { return g.V(1).out("knows").hasId(2) }],
+ g_mergeVXemptyX_optionXonMatch_nullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(new Map([])).option(Merge.onMatch,null) }, function({g}) { return g.V().has("person","name","marko").has("age",29) }],
+ g_V_mergeVXemptyX_optionXonMatch_nullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeV(new Map([])).option(Merge.onMatch,null) }, function({g}) { return g.V().has("person","name","marko").has("age",29) }],
+ g_mergeVXnullX_optionXonCreate_label_null_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1) }],
+ g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.V().mergeV(xx1) }],
+ g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1).option(Merge.onCreate,null) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().has("person","name","marko") }, function({g, xx1}) { return g.V().has("person","name","stephen") }],
+ g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.V().mergeV(xx1).option(Merge.onCreate,null) }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().has("person","name","marko") }, function({g, xx1}) { return g.V().has("person","name","stephen") }],
+ g_mergeVXnullX_optionXonCreate_emptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(null).option(Merge.onCreate,new Map([])) }, function({g}) { return g.V() }],
+ g_V_mergeVXnullX_optionXonCreate_emptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeV(null).option(Merge.onCreate,new Map([])) }, function({g}) { return g.V() }],
+ g_mergeVXemptyX_no_existing: [function({g}) { return g.mergeV(new Map([])) }, function({g}) { return g.V() }],
+ g_injectX0X_mergeVXemptyX_no_existing: [function({g}) { return g.inject(0).mergeV(new Map([])) }, function({g}) { return g.V() }],
+ g_mergeVXemptyX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(new Map([])) }, function({g}) { return g.V().has("person","name","marko").has("age",29) }],
+ g_V_mergeVXemptyX_two_exist: [function({g}) { return g.addV("person").property("name","marko").property("age",29).addV("person").property("name","vadas").property("age",27) }, function({g}) { return g.V().mergeV(new Map([])) }, function({g}) { return g.V() }, function({g}) { return g.V().has("person","name","marko").has("age",29) }, function({g}) { return g.V().has("person","name","vadas").has("age",27) }],
+ g_mergeVXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.mergeV(null) }, function({g}) { return g.V() }],
+ g_V_mergeVXnullX: [function({g}) { return g.addV("person").property("name","marko").property("age",29) }, function({g}) { return g.V().mergeV(null) }, function({g}) { return g.V() }],
+ g_mergeVXlabel_person_name_stephenX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","stephen") }],
+ g_mergeVXlabel_person_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko") }],
+ g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").has("age",19) }],
+ g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }],
+ g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).mergeV(__.select("c")).option(Merge.onCreate,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").has("age",19) }],
+ g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).mergeV(__.select("c")).option(Merge.onMatch,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }],
+ g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.mergeV(xx1).property("name","vadas","acl","public") }, function({g, xx1}) { return g.V().properties("name").hasValue("vadas").has("acl","public") }],
+ g_injectX0X_mergeVXlabel_person_name_stephenX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","stephen") }],
+ g_injectX0X_mergeVXlabel_person_name_markoX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1) }, function({g, xx1}) { return g.V().has("person","name","marko") }],
+ g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(0).mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").has("age",19) }],
+ g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(0).mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }],
+ g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).inject(0).mergeV(__.select("c")).option(Merge.onCreate,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen").ha [...]
+ g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).inject(0).mergeV(__.select("c")).option(Merge.onMatch,__.select("m")) }, function({g, xx1, xx2}) { return g.V().has("person","name","marko").has("age",19) }],
+ g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX: [function({g, xx1}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1}) { return g.inject(0).mergeV(xx1).property("name","vadas","acl","public") }, function({g, xx1}) { return g.V().properties("name").hasValue("vadas").has("acl","public") }],
+ g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(xx1,xx2).mergeV(__.identity()) }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen") }, function({g, xx1, xx2}) { return g.V().has("person","name","marko") }, function({g, xx1, xx2}) { return g.V() }],
+ g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property("age",29) }, function({g, xx1, xx2}) { return g.inject(xx1,xx2).mergeV() }, function({g, xx1, xx2}) { return g.V().has("person","name","stephen") }, function({g, xx1, xx2}) { return g.V().has("person","name","marko") }, function({g, xx1, xx2}) { return g.V() }],
+ g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX: [function({g, xx1}) { return g.addV("person").property(Cardinality.list,"name","stephen") }, function({g, xx1}) { return g.mergeV(xx1).property(Cardinality.list,"name","steve") }, function({g, xx1}) { return g.V() }, function({g, xx1}) { return g.V().properties("name").hasValue("steve") }, function({g, xx1}) { return g.V().properties("name").hasValue("stephen") }, function({g, xx1}) { return g.V().properties("name") }],
+ g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X: [function({g, xx1, xx2}) { return g.addV("person").property("name","vadas").property("age",29).addV("person").property("name","vadas").property("age",27) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onMatch,xx2) }, function({g, xx1, xx2}) { return g.V().has("age",35) }, function({g, xx1, xx2}) { return g.V() }],
+ g_V_mapXmergeXlabel_person_name_joshXX: [function({g, xx1}) { return g.addV("person").property("name","vadas").property("age",29).addV("person").property("name","stephen").property("age",27) }, function({g, xx1}) { return g.V().map(__.mergeV(xx1)) }, function({g, xx1}) { return g.V().has("person","name","josh") }, function({g, xx1}) { return g.V() }],
+ g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option: [function({g, xx1, xx2}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g, xx1, xx2}) { return g.withSideEffect("c",xx1).withSideEffect("m",xx2).mergeV(__.select("c")).option(Merge.onMatch,__.sideEffect(__.pr [...]
+ g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option: [function({g, xx1}) { return g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32) }, function({g, xx1}) { return g.withSideEffect("m",xx1).V().has("person","name","marko").mergeV(new Map([])).option(Merge.onMatch,__.sideEffect(__.properties("age").drop( [...]
+ g_mergeV_onCreate_inheritance_existing: [function({g, xx1, xx2}) { return g.addV("person").property("name","mike").property(T.id,1) }, function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V(1).has("person","name","mike") }],
+ g_mergeV_onCreate_inheritance_new_1: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V(1).has("person","name","mike") }],
+ g_mergeV_onCreate_inheritance_new_2: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }, function({g, xx1, xx2}) { return g.V() }, function({g, xx1, xx2}) { return g.V(1).has("person","name","mike") }],
+ g_mergeV_label_override_prohibited: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }],
+ g_mergeV_id_override_prohibited: [function({g, xx1, xx2}) { return g.mergeV(xx1).option(Merge.onCreate,xx2) }],
g_V_age_min: [function({g}) { return g.V().values("age").min() }],
g_V_foo_min: [function({g}) { return g.V().values("foo").min() }],
g_V_name_min: [function({g}) { return g.V().values("name").min() }],
@@@ -717,25 -507,19 +725,26 @@@
g_V_both_hasLabelXpersonX_order_byXage_descX_name: [function({g}) { return g.V().both().hasLabel("person").order().by("age",Order.desc).values("name") }],
g_V_order_byXoutE_count_descX_byXnameX: [function({g}) { return g.V().order().by(__.outE().count(),Order.desc).by("name") }],
g_V_hasLabelXpersonX_order_byXageX: [function({g}) { return g.V().hasLabel("person").order().by("age") }],
+ g_V_order_byXageX: [function({g}) { return g.V().order().by("age") }],
+ g_V_fold_orderXlocalX_byXageX: [function({g}) { return g.V().fold().order(Scope.local).by("age") }],
+ g_V_fold_orderXlocalX_byXage_descX: [function({g}) { return g.V().fold().order(Scope.local).by("age",Order.desc) }],
g_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX: [function({g}) { return g.V().or(__.hasLabel("person"),__.has("software","name","lop")).order().by("age") }],
+ g_withStrategiesXProductiveByStrategyX_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().or(__.hasLabel("person"),__.has("software","name","lop")).order().by("age") }],
g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX: [function({g, l1, v1}) { return g.V(v1).hasLabel("person").map(l1).order(Scope.local).by(Column.values,Order.desc).by(Column.keys,Order.asc) }],
+ g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_descX: [function({g}) { return g.V().has("song","name","OH BOY").out("followedBy").out("followedBy").order().by("performances").by("songType",Order.desc).by("name") }],
+ g_V_hasLabelXsongX_order_byXperformances_descX_byXnameX_rangeX110_120X_name: [function({g}) { return g.V().hasLabel("song").order().by("performances",Order.desc).by("name").range(110,120).values("name") }],
g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold: [function({g, vid1}) { return g.V(vid1).elementMap().order(Scope.local).by(Column.keys,Order.desc).unfold() }],
+ g_VX1X_elementMap_orderXlocalX_byXkeys_ascXunfold: [function({g, vid1}) { return g.V(vid1).elementMap().order(Scope.local).by(Column.keys,Order.asc).unfold() }],
+ g_VX1X_valuesXageX_orderXlocalX: [function({g, vid1}) { return g.V(vid1).values("age").order(Scope.local) }],
- g_V_pageRank_hasXpageRankX: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().pageRank().has("gremlin.pageRankVertexProgram.pageRank") }, function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().pageRank().has("gremlin.pageRankVertexProgram.pageRank") }],
- g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().out("created").pageRank().with_("~tinkerpop.pageRank.edges",__.bothE()).with_("~tinkerpop.pageRank.propertyName","projectRank").with_("~tinkerpop.pageRank.times",0).valueMap("name","projectRank") }],
- g_V_pageRank_order_byXpageRank_descX_byXnameX_name: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).by("name").values("name") }],
- g_V_pageRank_order_byXpageRank_descX_name_limitX2X: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).values("name").limit(2) }],
- g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().pageRank().with_("~tinkerpop.pageRank.edges",__.outE("knows")).with_("~tinkerpop.pageRank.propertyName","friendRank").project("name","friendRank").by("name").by(__.values("friendRank").math("ceil(_ * 100)")) }],
- g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().hasLabel("person").pageRank().with_("~tinkerpop.pageRank.propertyName","pageRank").project("name","pageRank").by("name").by(__.values("pageRank").math("ceil(_ * 100)")) }],
- g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().pageRank().with_("~tinkerpop.pageRank.propertyName","pageRank").as("a").out("knows").values("pageRank").as("b").select("a","b").by().by(__.math("ceil(_ * 100)")) }],
- g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().hasLabel("software").has("name","ripple").pageRank(1.0).with_("~tinkerpop.pageRank.edges",__.inE("created")).with_("~tinkerpop.pageRank.times",1).with_("~tinkerpop [...]
- g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX: [function({g}) { return g.withStrategies(new VertexProgramStrategy({graphComputer:"org.apache.tinkerpop.gremlin.process.computer.GraphComputer"})).V().out("created").group("m").by(T.label).pageRank(1.0).with_("~tinkerpop.pageRank.propertyName","pageRank").with_("~tinkerpop.pageRank.edges",__.inE()).with_("~tinkerpop.pageRank.times",1).in [...]
+ g_V_pageRank_hasXpageRankX: [function({g}) { return g.V().pageRank().has("gremlin.pageRankVertexProgram.pageRank") }],
+ g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX: [function({g}) { return g.V().out("created").pageRank().with_("~tinkerpop.pageRank.edges",__.bothE()).with_("~tinkerpop.pageRank.propertyName","projectRank").with_("~tinkerpop.pageRank.times",0).valueMap("name","projectRank") }],
+ g_V_pageRank_order_byXpageRank_descX_byXnameX_name: [function({g}) { return g.V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).by("name").values("name") }],
+ g_V_pageRank_order_byXpageRank_descX_name_limitX2X: [function({g}) { return g.V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).values("name").limit(2) }],
+ g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX: [function({g}) { return g.V().pageRank().with_("~tinkerpop.pageRank.edges",__.outE("knows")).with_("~tinkerpop.pageRank.propertyName","friendRank").project("name","friendRank").by("name").by(__.values("friendRank").math("ceil(_ * 100)")) }],
+ g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX: [function({g}) { return g.V().hasLabel("person").pageRank().with_("~tinkerpop.pageRank.propertyName","pageRank").project("name","pageRank").by("name").by(__.values("pageRank").math("ceil(_ * 100)")) }],
+ g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX: [function({g}) { return g.V().pageRank().with_("~tinkerpop.pageRank.propertyName","pageRank").as("a").out("knows").values("pageRank").as("b").select("a","b").by().by(__.math("ceil(_ * 100)")) }],
+ g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX: [function({g}) { return g.V().hasLabel("software").has("name","ripple").pageRank(1.0).with_("~tinkerpop.pageRank.edges",__.inE("created")).with_("~tinkerpop.pageRank.times",1).with_("~tinkerpop.pageRank.propertyName","priors").in_("created").union(__.both(),__.identity()).valueMap("name","priors") }],
+ g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX: [function({g}) { return g.V().out("created").group("m").by(T.label).pageRank(1.0).with_("~tinkerpop.pageRank.propertyName","pageRank").with_("~tinkerpop.pageRank.edges",__.inE()).with_("~tinkerpop.pageRank.times",1).in_("created").group("m").by("pageRank").cap("m") }],
g_VX1X_name_path: [function({g, vid1}) { return g.V(vid1).values("name").path() }],
g_VX1X_out_path_byXageX_byXnameX: [function({g, vid1}) { return g.V(vid1).out().path().by("age").by("name") }],
g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX: [function({g}) { return g.V().repeat(__.out()).times(2).path().by().by("name").by("lang") }],
@@@ -848,15 -627,12 +857,16 @@@
g_V_foo_fold_sumXlocalX: [function({g}) { return g.V().values("foo").fold().sum(Scope.local) }],
g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").sum()) }],
g_V_aggregateXaX_byXageX_sumXlocalX: [function({g}) { return g.V().aggregate("a").by("age").cap("a").sum(Scope.local) }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_sumXlocalX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("age").cap("a").sum(Scope.local) }],
g_V_aggregateXaX_byXageX_capXaX_unfold_sum: [function({g}) { return g.V().aggregate("a").by("age").cap("a").unfold().sum() }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_sum: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("age").cap("a").unfold().sum() }],
g_V_aggregateXaX_byXfooX_sumXlocalX: [function({g}) { return g.V().aggregate("a").by("foo").cap("a").sum(Scope.local) }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_sumXlocalX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("foo").cap("a").sum(Scope.local) }],
g_V_aggregateXaX_byXfooX_capXaX_unfold_sum: [function({g}) { return g.V().aggregate("a").by("foo").cap("a").unfold().sum() }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_sum: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("a").by("foo").cap("a").unfold().sum() }],
g_injectXnull_10_5_nullX_sum: [function({g, xx1, xx2}) { return g.inject(null,xx1,xx2,null).sum() }],
g_injectXlistXnull_10_5_nullXX_sumXlocalX: [function({g, xx1}) { return g.inject(xx1).sum(Scope.local) }],
+ g_VX1X_valuesXageX_sumXlocalX: [function({g, vid1}) { return g.V(vid1).values("age").sum(Scope.local) }],
g_V_localXoutE_foldX_unfold: [function({g}) { return g.V().local(__.outE().fold()).unfold() }],
g_V_valueMap_unfold_mapXkeyX: [function({g, l1}) { return g.V().valueMap().unfold().map(l1) }],
g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold: [function({g, vid6, vid1}) { return g.V(vid1).repeat(__.both().simplePath()).until(__.hasId(vid6)).path().by("name").unfold() }],
diff --cc gremlin-python/src/main/python/radish/gremlin.py
index ae5cbafac6,6397b767ab..2e1d6a932e
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@@ -129,9 -127,7 +129,10 @@@ world.gremlins =
'g_V_both_properties_dedup_count': [(lambda g:g.V().both().properties().dedup().count())],
'g_V_both_properties_properties_dedup_count': [(lambda g:g.V().both().properties().properties().dedup().count())],
'g_V_order_byXname_descX_barrier_dedup_age_name': [(lambda g:g.V().order().by('name',Order.desc).barrier().dedup().by('age').name)],
+ 'g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().order().by('name',Order.desc).barrier().dedup().by('age').name)],
+ 'g_V_both_dedup_age_name': [(lambda g:g.V().both().dedup().by('age').name)],
+ 'g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name': [(lambda g, vid1=None:g.V(vid1).as_('a').both().as_('b').both().as_('c').dedup('a','b').by('age').select('a','b','c').by('name'))],
+ 'g_VX1X_valuesXageX_dedupXlocalX_unfold': [(lambda g, vid1=None:g.V(vid1).age.dedup(Scope.local).unfold())],
'g_V_drop': [(lambda g:g.addV().as_('a').addV().as_('b').addE('knows').to('a')), (lambda g:g.V().drop()), (lambda g:g.V()), (lambda g:g.E())],
'g_V_outE_drop': [(lambda g:g.addV().as_('a').addV().as_('b').addE('knows').to('a')), (lambda g:g.V().outE().drop()), (lambda g:g.V()), (lambda g:g.E())],
'g_V_properties_drop': [(lambda g:g.addV().property('name','bob').addV().property('name','alice')), (lambda g:g.V().properties().drop()), (lambda g:g.V()), (lambda g:g.V().properties())],
@@@ -272,9 -260,9 +274,10 @@@
'g_E_sampleX1X': [(lambda g:g.E().sample(1))],
'g_E_sampleX2X_byXweightX': [(lambda g:g.E().sample(2).by('weight'))],
'g_V_localXoutE_sampleX1X_byXweightXX': [(lambda g:g.V().local(__.outE().sample(1).by('weight')))],
- 'g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX': [(lambda g:g.V().group().by(T.label).by(__.bothE().weight.sample(2).fold()))],
- 'g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX': [(lambda g:g.V().group().by(T.label).by(__.bothE().weight.fold().sample(Scope.local,5)))],
+ 'g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_sampleX2X_foldXunfold': [(lambda g:g.withStrategies(*[TraversalStrategy('SeedStrategy',{'seed':999999,'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy')]).V().group().by(T.label).by(__.bothE().weight.order().sample(2).fold()).unfold())],
+ 'g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_fold_sampleXlocal_5XXunfold': [(lambda g:g.withStrategies(*[TraversalStrategy('SeedStrategy',{'seed':999999,'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy')]).V().group().by(T.label).by(__.bothE().weight.order().fold().sample(Scope.local,5)).unfold())],
+ 'g_withStrategiesXSeedStrategyX_V_order_byXlabel_descX_sampleX1X_byXageX': [(lambda g:g.withStrategies(*[TraversalStrategy('SeedStrategy',{'seed':999999,'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SeedStrategy')]).V().order().by(T.label,Order.desc).sample(1).by('age'))],
+ 'g_VX1X_valuesXageX_sampleXlocal_5X': [(lambda g, vid1=None:g.V(vid1).age.sample(Scope.local,5))],
'g_VX1X_outXcreatedX_inXcreatedX_simplePath': [(lambda g, vid1=None:g.V(vid1).out('created').in_('created').simplePath())],
'g_V_repeatXboth_simplePathX_timesX3X_path': [(lambda g:g.V().repeat(__.both().simplePath()).times(3).path())],
'g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX': [(lambda g:g.V().as_('a').out().as_('b').out().as_('c').simplePath().by(T.label).from_('b').to('c').path().by('name'))],
@@@ -576,93 -453,12 +582,94 @@@
'g_V_foo_fold_meanXlocalX': [(lambda g:g.V().foo.fold().mean(Scope.local))],
'g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX': [(lambda g:g.V().hasLabel('software').group().by('name').by(__.bothE().weight.mean()))],
'g_V_aggregateXaX_byXageX_meanXlocalX': [(lambda g:g.V().aggregate('a').by('age').cap('a').mean(Scope.local))],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_meanXlocalX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('age').cap('a').mean(Scope.local))],
'g_V_aggregateXaX_byXageX_capXaX_unfold_mean': [(lambda g:g.V().aggregate('a').by('age').cap('a').unfold().mean())],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_mean': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('age').cap('a').unfold().mean())],
'g_V_aggregateXaX_byXfooX_meanXlocalX': [(lambda g:g.V().aggregate('a').by('foo').cap('a').mean(Scope.local))],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_meanXlocalX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('foo').cap('a').mean(Scope.local))],
'g_V_aggregateXaX_byXfooX_capXaX_unfold_mean': [(lambda g:g.V().aggregate('a').by('foo').cap('a').unfold().mean())],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_mean': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('foo').cap('a').unfold().mean())],
'g_injectXnull_10_20_nullX_mean': [(lambda g, xx1=None,xx2=None:g.inject(None,xx1,xx2,None).mean())],
'g_injectXlistXnull_10_20_nullXX_meanXlocalX': [(lambda g, xx1=None:g.inject(xx1).mean(Scope.local))],
+ 'g_VX1X_valuesXageX_meanXlocalX': [(lambda g, vid1=None:g.V(vid1).age.mean(Scope.local))],
+ 'g_V_mergeEXlabel_selfX_optionXonMatch_emptyX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29).addE('self')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match,{})), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().properties()), (lambda g, xx1=None:g.V())],
+ 'g_V_mergeEXlabel_selfX_optionXonMatch_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29).addE('self')), (lambda g, xx1=None:g.V().merge_e(xx1).option(Merge.on_match,None)), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().properties()), (lambda g, xx1=None:g.V())],
+ 'g_V_mergeEXemptyX_optionXonCreate_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.V().as_('v').merge_e(xx1).option(Merge.on_create,None).option(Merge.out_v,__.select('v')).option(Merge.in_v,__.select('v'))), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.V())],
+ 'g_mergeEXemptyX_exists': [(lambda g:g.addV('person').property('name','marko').property('age',29).addE('self')), (lambda g:g.merge_e({})), (lambda g:g.E()), (lambda g:g.V())],
+ 'g_mergeEXemptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_e({}))],
+ 'g_V_mergeEXemptyX_two_exist': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29).addV('person').property('name','vadas').property('age',27)), (lambda g, xx1=None:g.V().as_('v').merge_e(xx1).option(Merge.out_v,__.select('v')).option(Merge.in_v,__.select('v'))), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.V())],
+ 'g_mergeEXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_e(None))],
+ 'g_V_mergeEXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_e(None))],
+ 'g_mergeEXlabel_knows_out_marko_in_vadasX': [(lambda g, xx1=None:g.addV('person').property(T.id_,100).property('name','marko').addV('person').property(T.id_,101).property('name','vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))],
+ 'g_withSideEffectXa_label_knows_out_marko_in_vadasX_mergeEXselectXaXX': [(lambda g, xx1=None:g.addV('person').property(T.id_,100).property('name','marko').addV('person').property(T.id_,101).property('name','vadas')), (lambda g, xx1=None:g.withSideEffect('a',xx1).merge_e(__.select('a'))), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))],
+ 'g_mergeEXlabel_knows_out_marko1_in_vadas1X': [(lambda g, xx1=None:g.addV('person').property(T.id_,100).property('name','marko').addV('person').property(T.id_,101).property('name','vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))],
+ 'g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X_exists': [(lambda g, xx1=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').outE('knows').has('weight',float(0.5)).in_v().has('person','name','vadas')), (lambda g, xx1=None:g.V().has('person','name','marko').out('k [...]
+ 'g_mergeEXlabel_knows_out_marko_in_vadas_weight_05X': [(lambda g, xx1=None:g.merge_e(xx1))],
+ 'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX': [(lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3))],
+ 'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx [...]
+ 'g_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_match,xx3)), (lambda g, xx1=None,xx3=Non [...]
+ 'g_V_hasXperson_name_marko_X_mergeEXlabel_knowsX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.V().has('person','name','marko').merge_e(xx1).option(Merg [...]
+ 'g_injectXlabel_knows_out_marko_in_vadasX_mergeE': [(lambda g, xx1=None:g.addV('person').property(T.id_,100).property('name','marko').addV('person').property(T.id_,101).property('name','vadas')), (lambda g, xx1=None:g.inject(xx1).merge_e()), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))],
+ 'g_mergeEXlabel_knows_in_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('b').to('a').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Me [...]
+ 'g_mergeEXlabel_knows_out_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('b').to('a').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(M [...]
+ 'g_mergeEXout_vadasX_optionXonCreate_created_YX_optionXonMatch_created_NX_exists_updated': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b').property('created','Y').addE('knows').from_('b').to('a').property('created','Y')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2).option(Merge.on_matc [...]
+ 'g_V_hasXperson_name_marko_X_mergeEXlabel_self_out_vadas1_in_vadas1X': [(lambda g, xx1=None:g.addV('person').property(T.id_,100).property('name','marko').addV('person').property(T.id_,101).property('name','vadas')), (lambda g, xx1=None:g.V().has('person','name','marko').merge_e(xx1)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.E()), (lambda g, xx1=None:g.E().hasLabel('self').bothV().has('name','vadas'))],
+ 'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideEffect('c',xx2).withSideEffect('m',xx3).merge_e(xx1).option(Merge.o [...]
+ 'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideEffect('c',xx2).withSideEffect('m',xx3).merge_e(xx1).option(Merge.on_create,__.select('c')).option(Merge.on [...]
+ 'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko1_in_vadas1X_optionXonCreate_selectXcXX_optionXonMatch_selectXmXX': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideEffect('c',xx2).withSideEffect('m',xx3).merge_e(xx1).option(Merge.on_create,__.select('c')).option(Merge. [...]
+ 'g_mergeEXlabel_knows_out_marko_in_vadasX_aliased_direction': [(lambda g, xx1=None:g.addV('person').property(T.id_,100).property('name','marko').addV('person').property(T.id_,101).property('name','vadas')), (lambda g, xx1=None:g.merge_e(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas'))],
+ 'g_injectXlabel_knows_out_marko_in_vadas_label_self_out_vadas_in_vadasX': [(lambda g, xx1=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').addV('person').property(T.id_,101).property('name','vadas')), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).merge_e()), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').out('knows').has('person','name','vadas')), (lambda g, xx1=Non [...]
+ 'g_withSideEffectXc_created_YX_withSideEffectXm_matchedX_mergeEXlabel_knows_out_marko_in_vadasX_optionXonCreate_selectXcXX_optionXonMatch_sideEffectXpropertiesXweightX_dropX_selectXmXX_exists': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,100).property('name','marko').as_('a').addV('person').property(T.id_,101).property('name','vadas').as_('b').addE('knows').property('weight',float(0.5)).from_('a').to('b')), (lambda g, xx1=None,xx3=None,xx2=None:g.withSideE [...]
+ 'g_mergeE_with_outVinV_options_map': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_e(xx1).option(Merge.out_v,xx2).option(Merge.in_v,xx3)), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.V(1).out('knows').hasId(2))],
+ 'g_mergeE_with_outVinV_options_select': [(lambda g, xx1=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None:g.V(1).as_('x').V(2).as_('y').merge_e(xx1).option(Merge.out_v,__.select('x')).option(Merge.in_v,__.select('y'))), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V(1).out('knows').hasId(2))],
+ 'g_mergeE_with_eid_specified_and_inheritance_1': [(lambda g, xx1=None,xx2=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.E(201)), (lambda g, xx1=None,xx2=None:g.V(1).out('knows').hasId(2))],
+ 'g_mergeE_with_eid_specified_and_inheritance_2': [(lambda g, xx1=None,xx2=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.E()), (lambda g, xx1=None,xx2=None:g.E(201)), (lambda g, xx1=None,xx2=None:g.V(1).out('knows').hasId(2))],
+ 'g_mergeE_outV_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))],
+ 'g_mergeE_inV_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))],
+ 'g_mergeE_label_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))],
+ 'g_mergeE_id_override_prohibited': [(lambda g, xx1=None,xx2=None:g.addV('person').property(T.id_,1).property('name','a').addV('person').property(T.id_,2).property('name','b')), (lambda g, xx1=None,xx2=None:g.merge_e(xx1).option(Merge.on_create,xx2))],
+ 'g_mergeV_mergeE_combination_new_vertices': [(lambda g, xx1=None,xx3=None,xx2=None:g.merge_v(xx1).as_('outV').merge_v(xx2).as_('inV').merge_e(xx3).option(Merge.out_v,__.select('outV')).option(Merge.in_v,__.select('inV'))), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E()), (lambda g, xx1=None,xx3=None,xx2=None:g.V(1).out('knows').hasId(2))],
+ 'g_mergeV_mergeE_combination_existing_vertices': [(lambda g, xx1=None,xx3=None,xx2=None:g.addV('person').property(T.id_,1).addV('person').property(T.id_,2)), (lambda g, xx1=None,xx3=None,xx2=None:g.merge_v(xx1).as_('outV').merge_v(xx2).as_('inV').merge_e(xx3).option(Merge.out_v,__.select('outV')).option(Merge.in_v,__.select('inV'))), (lambda g, xx1=None,xx3=None,xx2=None:g.V()), (lambda g, xx1=None,xx3=None,xx2=None:g.E()), (lambda g, xx1=None,xx3=None,xx2=None:g.V(1).out('knows').h [...]
+ 'g_mergeVXemptyX_optionXonMatch_nullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v({}).option(Merge.on_match,None)), (lambda g:g.V().has('person','name','marko').has('age',29))],
+ 'g_V_mergeVXemptyX_optionXonMatch_nullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_v({}).option(Merge.on_match,None)), (lambda g:g.V().has('person','name','marko').has('age',29))],
+ 'g_mergeVXnullX_optionXonCreate_label_null_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1))],
+ 'g_V_mergeVXnullX_optionXonCreate_label_null_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.V().merge_v(xx1))],
+ 'g_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1).option(Merge.on_create,None)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().has('person','name','marko')), (lambda g, xx1=None:g.V().has('person','name','stephen'))],
+ 'g_V_mergeVXlabel_person_name_stephenX_optionXonCreate_nullX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.V().merge_v(xx1).option(Merge.on_create,None)), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().has('person','name','marko')), (lambda g, xx1=None:g.V().has('person','name','stephen'))],
+ 'g_mergeVXnullX_optionXonCreate_emptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v(None).option(Merge.on_create,{})), (lambda g:g.V())],
+ 'g_V_mergeVXnullX_optionXonCreate_emptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_v(None).option(Merge.on_create,{})), (lambda g:g.V())],
+ 'g_mergeVXemptyX_no_existing': [(lambda g:g.merge_v({})), (lambda g:g.V())],
+ 'g_injectX0X_mergeVXemptyX_no_existing': [(lambda g:g.inject(0).merge_v({})), (lambda g:g.V())],
+ 'g_mergeVXemptyX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v({})), (lambda g:g.V().has('person','name','marko').has('age',29))],
+ 'g_V_mergeVXemptyX_two_exist': [(lambda g:g.addV('person').property('name','marko').property('age',29).addV('person').property('name','vadas').property('age',27)), (lambda g:g.V().merge_v({})), (lambda g:g.V()), (lambda g:g.V().has('person','name','marko').has('age',29)), (lambda g:g.V().has('person','name','vadas').has('age',27))],
+ 'g_mergeVXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.merge_v(None)), (lambda g:g.V())],
+ 'g_V_mergeVXnullX': [(lambda g:g.addV('person').property('name','marko').property('age',29)), (lambda g:g.V().merge_v(None)), (lambda g:g.V())],
+ 'g_mergeVXlabel_person_name_stephenX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','stephen'))],
+ 'g_mergeVXlabel_person_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko'))],
+ 'g_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))],
+ 'g_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))],
+ 'g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).merge_v(__.select('c')).option(Merge.on_create,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))],
+ 'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).merge_v(__.select('c')).option(Merge.on_match,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))],
+ 'g_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.merge_v(xx1).property('name','vadas','acl','public')), (lambda g, xx1=None:g.V().properties('name').hasValue('vadas').has('acl','public'))],
+ 'g_injectX0X_mergeVXlabel_person_name_stephenX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','stephen'))],
+ 'g_injectX0X_mergeVXlabel_person_name_markoX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1)), (lambda g, xx1=None:g.V().has('person','name','marko'))],
+ 'g_injectX0X_mergeVXlabel_person_name_stephenX_optionXonCreate_label_person_name_stephen_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(0).merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))],
+ 'g_injectX0X_mergeVXlabel_person_name_markoX_optionXonMatch_age_19X_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(0).merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))],
+ 'g_withSideEffectXc_label_person_name_stephenX_withSideEffectXm_label_person_name_stephen_age_19X_injectX0X_mergeVXselectXcXX_optionXonCreate_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).inject(0).merge_v(__.select('c')).option(Merge.on_create,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen').has('age',19))],
+ 'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_injectX0X_mergeVXselectXcXX_optionXonMatch_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).inject(0).merge_v(__.select('c')).option(Merge.on_match,__.select('m'))), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko').has('age',19))],
+ 'g_injectX0X_mergeVXlabel_person_name_markoX_propertyXname_vadas_acl_publicX': [(lambda g, xx1=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None:g.inject(0).merge_v(xx1).property('name','vadas','acl','public')), (lambda g, xx1=None:g.V().properties('name').hasValue('vadas').has('acl','public'))],
+ 'g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeVXidentityX': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).merge_v(__.identity())), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen')), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko')), (lambda g, xx1=None,xx2=None:g.V())],
+ 'g_injectXlabel_person_name_marko_label_person_name_stephenX_mergeV': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property('age',29)), (lambda g, xx1=None,xx2=None:g.inject(xx1,xx2).merge_v()), (lambda g, xx1=None,xx2=None:g.V().has('person','name','stephen')), (lambda g, xx1=None,xx2=None:g.V().has('person','name','marko')), (lambda g, xx1=None,xx2=None:g.V())],
+ 'g_mergeVXlabel_person_name_stephenX_propertyXlist_name_steveX': [(lambda g, xx1=None:g.addV('person').property(Cardinality.list_,'name','stephen')), (lambda g, xx1=None:g.merge_v(xx1).property(Cardinality.list_,'name','steve')), (lambda g, xx1=None:g.V()), (lambda g, xx1=None:g.V().properties('name').hasValue('steve')), (lambda g, xx1=None:g.V().properties('name').hasValue('stephen')), (lambda g, xx1=None:g.V().properties('name'))],
+ 'g_mergeXlabel_person_name_vadasX_optionXonMatch_age_35X': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','vadas').property('age',29).addV('person').property('name','vadas').property('age',27)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_match,xx2)), (lambda g, xx1=None,xx2=None:g.V().has('age',35)), (lambda g, xx1=None,xx2=None:g.V())],
+ 'g_V_mapXmergeXlabel_person_name_joshXX': [(lambda g, xx1=None:g.addV('person').property('name','vadas').property('age',29).addV('person').property('name','stephen').property('age',27)), (lambda g, xx1=None:g.V().map(__.merge_v(xx1))), (lambda g, xx1=None:g.V().has('person','name','josh')), (lambda g, xx1=None:g.V())],
+ 'g_withSideEffectXc_label_person_name_markoX_withSideEffectXm_age_19X_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g, xx1=None,xx2=None:g.withSideEffect('c',xx1).withSideEffect('m',xx2).merge_v(__.select('c')).option(Merge.on_match,__.sideEffect(__.prop [...]
+ 'g_withSideEffectXm_age_19X_V_hasXperson_name_markoX_mergeVXselectXcXX_optionXonMatch_sideEffectXpropertiesXageX_dropX_selectXmXX_option': [(lambda g, xx1=None:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)), (lambda g, xx1=None:g.withSideEffect('m',xx1).V().has('person','name','marko').merge_v({}).option(Merge.on_match,__.sideEffect(__.properties('age').drop()).select('m'))), ( [...]
+ 'g_mergeV_onCreate_inheritance_existing': [(lambda g, xx1=None,xx2=None:g.addV('person').property('name','mike').property(T.id_,1)), (lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V(1).has('person','name','mike'))],
+ 'g_mergeV_onCreate_inheritance_new_1': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V(1).has('person','name','mike'))],
+ 'g_mergeV_onCreate_inheritance_new_2': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2)), (lambda g, xx1=None,xx2=None:g.V()), (lambda g, xx1=None,xx2=None:g.V(1).has('person','name','mike'))],
+ 'g_mergeV_label_override_prohibited': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2))],
+ 'g_mergeV_id_override_prohibited': [(lambda g, xx1=None,xx2=None:g.merge_v(xx1).option(Merge.on_create,xx2))],
'g_V_age_min': [(lambda g:g.V().age.min_())],
'g_V_foo_min': [(lambda g:g.V().foo.min_())],
'g_V_name_min': [(lambda g:g.V().name.min_())],
@@@ -699,25 -492,19 +707,26 @@@
'g_V_both_hasLabelXpersonX_order_byXage_descX_name': [(lambda g:g.V().both().hasLabel('person').order().by('age',Order.desc).name)],
'g_V_order_byXoutE_count_descX_byXnameX': [(lambda g:g.V().order().by(__.outE().count(),Order.desc).by('name'))],
'g_V_hasLabelXpersonX_order_byXageX': [(lambda g:g.V().hasLabel('person').order().by('age'))],
+ 'g_V_order_byXageX': [(lambda g:g.V().order().by('age'))],
+ 'g_V_fold_orderXlocalX_byXageX': [(lambda g:g.V().fold().order(Scope.local).by('age'))],
+ 'g_V_fold_orderXlocalX_byXage_descX': [(lambda g:g.V().fold().order(Scope.local).by('age',Order.desc))],
'g_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX': [(lambda g:g.V().or_(__.hasLabel('person'),__.has('software','name','lop')).order().by('age'))],
+ 'g_withStrategiesXProductiveByStrategyX_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().or_(__.hasLabel('person'),__.has('software','name','lop')).order().by('age'))],
'g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX': [(lambda g, l1=None,v1=None:g.V(v1).hasLabel('person').map(l1).order(Scope.local).by(Column.values,Order.desc).by(Column.keys,Order.asc))],
+ 'g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_descX': [(lambda g:g.V().has('song','name','OH BOY').out('followedBy').out('followedBy').order().by('performances').by('songType',Order.desc).by('name'))],
+ 'g_V_hasLabelXsongX_order_byXperformances_descX_byXnameX_rangeX110_120X_name': [(lambda g:g.V().hasLabel('song').order().by('performances',Order.desc).by('name')[110:120].name)],
'g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold': [(lambda g, vid1=None:g.V(vid1).elementMap().order(Scope.local).by(Column.keys,Order.desc).unfold())],
+ 'g_VX1X_elementMap_orderXlocalX_byXkeys_ascXunfold': [(lambda g, vid1=None:g.V(vid1).elementMap().order(Scope.local).by(Column.keys,Order.asc).unfold())],
+ 'g_VX1X_valuesXageX_orderXlocalX': [(lambda g, vid1=None:g.V(vid1).age.order(Scope.local))],
- 'g_V_pageRank_hasXpageRankX': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().pageRank().has('gremlin.pageRankVertexProgram.pageRank')), (lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.Gra [...]
- 'g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().out('created').pageRank().with_('~tinkerpop.pageRank.edges',__.bothE()).with_('~tinkerpop.pageRank.propertyN [...]
- 'g_V_pageRank_order_byXpageRank_descX_byXnameX_name': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().pageRank().order().by('gremlin.pageRankVertexProgram.pageRank',Order.desc).by('name').name)],
- 'g_V_pageRank_order_byXpageRank_descX_name_limitX2X': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().pageRank().order().by('gremlin.pageRankVertexProgram.pageRank',Order.desc).name[0:2])],
- 'g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().pageRank().with_('~tinkerpop.pageRank.edges',__.outE('knows')).with_('~tinkerpop.pageRank.propertyName','friendR [...]
- 'g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().hasLabel('person').pageRank().with_('~tinkerpop.pageRank.propertyName','pageRank').project('name','pageRank').by('name').b [...]
- 'g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().pageRank().with_('~tinkerpop.pageRank.propertyName','pageRank').as_('a').out('knows').values('pageRank').as_('b').select('a','b [...]
- 'g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().hasLabel('software').has('name','ripple').pageRank(f [...]
- 'g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX': [(lambda g:g.withStrategies(*[TraversalStrategy('VertexProgramStrategy',{'graphComputer':'org.apache.tinkerpop.gremlin.process.computer.GraphComputer'}, 'org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy')]).V().out('created').group('m').by(T.label).pageRank(float(1.0)).with_('~tinkerpop. [...]
+ 'g_V_pageRank_hasXpageRankX': [(lambda g:g.V().pageRank().has('gremlin.pageRankVertexProgram.pageRank'))],
+ 'g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX': [(lambda g:g.V().out('created').pageRank().with_('~tinkerpop.pageRank.edges',__.bothE()).with_('~tinkerpop.pageRank.propertyName','projectRank').with_('~tinkerpop.pageRank.times',0).valueMap('name','projectRank'))],
+ 'g_V_pageRank_order_byXpageRank_descX_byXnameX_name': [(lambda g:g.V().pageRank().order().by('gremlin.pageRankVertexProgram.pageRank',Order.desc).by('name').name)],
+ 'g_V_pageRank_order_byXpageRank_descX_name_limitX2X': [(lambda g:g.V().pageRank().order().by('gremlin.pageRankVertexProgram.pageRank',Order.desc).name[0:2])],
+ 'g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX': [(lambda g:g.V().pageRank().with_('~tinkerpop.pageRank.edges',__.outE('knows')).with_('~tinkerpop.pageRank.propertyName','friendRank').project('name','friendRank').by('name').by(__.friendRank.math('ceil(_ * 100)')))],
+ 'g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX': [(lambda g:g.V().hasLabel('person').pageRank().with_('~tinkerpop.pageRank.propertyName','pageRank').project('name','pageRank').by('name').by(__.values('pageRank').math('ceil(_ * 100)')))],
+ 'g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX': [(lambda g:g.V().pageRank().with_('~tinkerpop.pageRank.propertyName','pageRank').as_('a').out('knows').values('pageRank').as_('b').select('a','b').by().by(__.math('ceil(_ * 100)')))],
+ 'g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX': [(lambda g:g.V().hasLabel('software').has('name','ripple').pageRank(float(1.0)).with_('~tinkerpop.pageRank.edges',__.inE('created')).with_('~tinkerpop.pageRank.times',1).with_('~tinkerpop.pageRank.propertyName','priors').in_('created').union(__.both(),__.identity()).valueMap('name','priors'))],
+ 'g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX': [(lambda g:g.V().out('created').group('m').by(T.label).pageRank(float(1.0)).with_('~tinkerpop.pageRank.propertyName','pageRank').with_('~tinkerpop.pageRank.edges',__.inE()).with_('~tinkerpop.pageRank.times',1).in_('created').group('m').by('pageRank').cap('m'))],
'g_VX1X_name_path': [(lambda g, vid1=None:g.V(vid1).name.path())],
'g_VX1X_out_path_byXageX_byXnameX': [(lambda g, vid1=None:g.V(vid1).out().path().by('age').by('name'))],
'g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX': [(lambda g:g.V().repeat(__.out()).times(2).path().by().by('name').by('lang'))],
@@@ -830,15 -612,12 +839,16 @@@
'g_V_foo_fold_sumXlocalX': [(lambda g:g.V().foo.fold().sum_(Scope.local))],
'g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX': [(lambda g:g.V().hasLabel('software').group().by('name').by(__.bothE().weight.sum_()))],
'g_V_aggregateXaX_byXageX_sumXlocalX': [(lambda g:g.V().aggregate('a').by('age').cap('a').sum_(Scope.local))],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_sumXlocalX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('age').cap('a').sum_(Scope.local))],
'g_V_aggregateXaX_byXageX_capXaX_unfold_sum': [(lambda g:g.V().aggregate('a').by('age').cap('a').unfold().sum_())],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_sum': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('age').cap('a').unfold().sum_())],
'g_V_aggregateXaX_byXfooX_sumXlocalX': [(lambda g:g.V().aggregate('a').by('foo').cap('a').sum_(Scope.local))],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_sumXlocalX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('foo').cap('a').sum_(Scope.local))],
'g_V_aggregateXaX_byXfooX_capXaX_unfold_sum': [(lambda g:g.V().aggregate('a').by('foo').cap('a').unfold().sum_())],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_sum': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('a').by('foo').cap('a').unfold().sum_())],
'g_injectXnull_10_5_nullX_sum': [(lambda g, xx1=None,xx2=None:g.inject(None,xx1,xx2,None).sum_())],
'g_injectXlistXnull_10_5_nullXX_sumXlocalX': [(lambda g, xx1=None:g.inject(xx1).sum_(Scope.local))],
+ 'g_VX1X_valuesXageX_sumXlocalX': [(lambda g, vid1=None:g.V(vid1).age.sum_(Scope.local))],
'g_V_localXoutE_foldX_unfold': [(lambda g:g.V().local(__.outE().fold()).unfold())],
'g_V_valueMap_unfold_mapXkeyX': [(lambda g, l1=None:g.V().valueMap().unfold().map(l1))],
'g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold': [(lambda g, vid6=None,vid1=None:g.V(vid1).repeat(__.both().simplePath()).until(__.hasId(vid6)).path().by('name').unfold())],
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Dedup.feature
index 9162544bd9,0000000000..3bfb5a98d9
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Dedup.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Dedup.feature
@@@ -1,367 -1,0 +1,379 @@@
+# 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.
+
+@StepClassFilter @StepDedup
+Feature: Step - dedup()
+
+ Scenario: g_V_out_in_valuesXnameX_fold_dedupXlocalX_unfold
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().out().in().values("name").fold().dedup(Scope.local).unfold()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | marko |
+ | josh |
+ | peter |
+
+ Scenario: g_V_out_asXxX_in_asXyX_selectXx_yX_byXnameX_fold_dedupXlocal_x_yX_unfold
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().out().as("x").in().as("y").select("x", "y").by("name").fold().dedup(Scope.local, "x", "y").unfold()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"x":"lop","y":"marko"}] |
+ | m[{"x":"lop","y":"josh"}] |
+ | m[{"x":"lop","y":"peter"}] |
+ | m[{"x":"vadas","y":"marko"}] |
+ | m[{"x":"josh","y":"marko"}] |
+ | m[{"x":"ripple","y":"josh"}] |
+
+ Scenario: g_V_both_dedup_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().dedup().values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | lop |
+ | vadas |
+ | josh |
+ | peter |
+ | marko |
+ | ripple |
+
+ Scenario: g_V_both_hasXlabel_softwareX_dedup_byXlangX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().has(T.label, "software").dedup().by("lang").values("name")
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | lop |
+ | ripple |
+
+ Scenario: g_V_both_name_order_byXa_bX_dedup_value
+ Given the modern graph
+ And using the parameter c1 defined as "c[a,b -> a.value().compareTo(b.value())]"
+ And the traversal of
+ """
+ g.V().both().properties("name").order().by(c1).dedup().value()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | josh |
+ | lop |
+ | marko |
+ | peter |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_both_both_name_dedup
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().both().values("name").dedup()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | josh |
+ | lop |
+ | marko |
+ | peter |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_both_both_dedup
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().both().dedup()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[josh] |
+ | v[lop] |
+ | v[marko] |
+ | v[peter] |
+ | v[ripple] |
+ | v[vadas] |
+
+ Scenario: g_V_both_both_dedup_byXlabelX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().both().dedup().by(T.label)
+ """
+ When iterated to list
+ Then the result should have a count of 2
+
+ Scenario: g_V_group_byXlabelX_byXbothE_weight_dedup_foldX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().group().by(T.label).by(__.bothE().values("weight").dedup().order().by(Order.asc).fold())
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"software":[0.2,0.4,1.0],"person":[0.2,0.4,0.5,1.0]}] |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_both_asXbX_dedupXa_bX_byXlabelX_selectXa_bX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").both().as("b").dedup("a", "b").by(T.label).select("a", "b")
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | m[{"a":"v[marko]","b":"v[lop]"}] |
+ | m[{"a":"v[marko]","b":"v[vadas]"}] |
+ | m[{"a":"v[marko]","b":"v[josh]"}] |
+ | m[{"a":"v[vadas]","b":"v[marko]"}] |
+ | m[{"a":"v[lop]","b":"v[marko]"}] |
+ | m[{"a":"v[lop]","b":"v[josh]"}] |
+ | m[{"a":"v[lop]","b":"v[peter]"}] |
+ | m[{"a":"v[josh]","b":"v[ripple]"}] |
+ | m[{"a":"v[josh]","b":"v[lop]"}] |
+ | m[{"a":"v[josh]","b":"v[marko]"}] |
+ | m[{"a":"v[ripple]","b":"v[josh]"}] |
+ | m[{"a":"v[peter]","b":"v[lop]"}] |
+
+ Scenario: g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_dedupXa_bX_path
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out("created").as("b").in("created").as("c").dedup("a", "b").path()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | p[v[marko],v[lop],v[marko]] |
+ | p[v[josh],v[ripple],v[josh]] |
+ | p[v[josh],v[lop],v[marko]] |
+ | p[v[peter],v[lop],v[marko]] |
+
+ Scenario: g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().outE().as("e").inV().as("v").select("e").order().by("weight", Order.asc).select("v").values("name").dedup()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | lop |
+ | vadas |
+ | josh |
+ | ripple |
+
+ # no order guarantees so result may come up with either ripple | lop | vadas with a count of zero edges
+ Scenario: g_V_both_both_dedup_byXoutE_countX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().both().dedup().by(__.outE().count()).values("name")
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | marko |
+ | josh |
+ | peter |
+ | ripple |
+ | lop |
+ | vadas |
+ And the result should have a count of 4
+
+ Scenario: g_V_groupCount_selectXvaluesX_unfold_dedup
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().groupCount().select(Column.values).unfold().dedup()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[1].l |
+
+ Scenario: g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").repeat(__.both()).times(3).emit().values("name").as("b").group().by(__.select("a")).by(__.select("b").dedup().order().fold()).select(Column.values).unfold().dedup()
+ """
+ When iterated next
+ Then the result should be unordered
+ | result |
+ | josh |
+ | lop |
+ | marko |
+ | peter |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_repeatXdedupX_timesX2X_count
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().repeat(__.dedup()).times(2).count()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[0].l |
+
+ # https://issues.apache.org/jira/browse/TINKERPOP-2529
+ @GraphComputerVerificationStarGraphExceeded
+ Scenario: g_V_both_group_by_byXout_dedup_foldX_unfold_selectXvaluesX_unfold_out_order_byXnameX_limitX1X_valuesXnameX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().
+ group().by().by(__.out().dedup().fold()).
+ unfold().
+ select(Column.values).
+ unfold().
+ out().order().by("name").limit(1).values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | lop |
+
+ Scenario: g_V_bothE_properties_dedup_count
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().bothE().properties().dedup().count()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[4].l |
+
+ Scenario: g_V_both_properties_dedup_count
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().properties().dedup().count()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[12].l |
+
+ @MultiMetaProperties
+ Scenario: g_V_both_properties_properties_dedup_count
+ Given the crew graph
+ And the traversal of
+ """
+ g.V().both().properties().properties().dedup().count()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[21].l |
+
+ Scenario: g_V_order_byXname_descX_barrier_dedup_age_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().order().by("name",desc).barrier().dedup().by("age").values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | vadas |
+ | peter |
+ | marko |
+ | josh |
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().order().by("name",desc).barrier().dedup().by("age").values("name")
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | vadas |
+ | ripple |
+ | lop |
+ | peter |
+ | marko |
+ | josh |
+ And the result should have a count of 5
+
+ Scenario: g_V_both_dedup_age_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().dedup().by("age").values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | vadas |
+ | peter |
+ | marko |
+ | josh |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).as("a").both().as("b").both().as("c").dedup("a","b").by("age").select("a","b","c").by("name")
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | m[{"a":"marko", "b":"vadas", "c":"marko"}] |
+ | m[{"a":"marko", "b":"josh", "c":"ripple"}] |
+ | m[{"a":"marko", "b":"josh", "c":"lop"}] |
+ | m[{"a":"marko", "b":"josh", "c":"marko"}] |
+ And the result should have a count of 2
++
++ Scenario: g_VX1X_valuesXageX_dedupXlocalX_unfold
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").dedup(Scope.local).unfold()
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Range.feature
index c3dc520f75,0000000000..233c5f3254
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Range.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Range.feature
@@@ -1,271 -1,0 +1,283 @@@
+# 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.
+
+@StepClassFilter @StepRange
+Feature: Step - range()
+
+ Scenario: g_VX1X_out_limitX2X
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).out().limit(2)
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[josh] |
+ | v[vadas] |
+ | v[lop] |
+ And the result should have a count of 2
+
+ Scenario: g_V_localXoutE_limitX1X_inVX_limitX3X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().local(__.outE().limit(1)).inV().limit(3)
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[josh] |
+ | v[vadas] |
+ | v[lop] |
+ | v[ripple] |
+ And the result should have a count of 3
+
+ Scenario: g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).out("knows").outE("created").range(0, 1).inV()
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[lop] |
+ | v[ripple] |
+ And the result should have a count of 1
+
+ Scenario: g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).out("knows").out("created").range(0, 1)
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[lop] |
+ | v[ripple] |
+ And the result should have a count of 1
+
+ Scenario: g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).out("created").in("created").range(1, 3)
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+ And the result should have a count of 2
+
+ Scenario: g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).out("created").inE("created").range(1, 3).outV()
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+ And the result should have a count of 2
+
+ Scenario: g_V_repeatXbothX_timesX3X_rangeX5_11X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().repeat(__.both()).times(3).range(5, 11)
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+ | v[lop] |
+ | v[vadas] |
+ | v[ripple] |
+ And the result should have a count of 6
+
+ Scenario: g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").in().as("b").in().as("c").select("a","b","c").by("name").limit(Scope.local, 2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"a":"lop","b":"josh"}] |
+ | m[{"a":"ripple","b":"josh"}] |
+
+ Scenario: g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").in().as("b").in().as("c").select("a","b","c").by("name").limit(Scope.local, 1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"a":"lop"}] |
+ | m[{"a":"ripple"}] |
+
+ Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local, 1, 3)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"b":"josh","c":"lop"}] |
+ | m[{"b":"josh","c":"ripple"}] |
+
+ Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local, 1, 2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"b":"josh"}] |
+ | m[{"b":"josh"}] |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_3X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).range(Scope.local, 1, 3)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | l[josh,ripple] |
+ | l[josh,lop] |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).range(Scope.local, 1, 2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | josh |
+ | josh |
+
+ Scenario: g_V_hasLabelXpersonX_order_byXageX_skipX1X_valuesXnameX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").order().by("age").skip(1).values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | marko |
+ | josh |
+ | peter |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_4_5X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).range(Scope.local, 4, 5)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_outE_valuesXweightX_fold_orderXlocalX_skipXlocal_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().outE().values("weight").fold().order(Scope.local).skip(Scope.local, 2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | l[d[0.4].d,d[0.5].d,d[1.0].d,d[1.0].d] |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_in_asXaX_in_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_limitXlocal_1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").in().as("a").in().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).limit(Scope.local, 1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | lop |
+ | ripple |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_in_asXaX_in_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_limitXlocal_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").in().as("a").in().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).limit(Scope.local, 2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | l[lop,josh] |
+ | l[ripple,josh] |
+
+ Scenario: g_V_hasLabelXpersonX_order_byXageX_valuesXnameX_skipX1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").order().by("age").values("name").skip(1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | marko |
+ | josh |
- | peter |
++ | peter |
++
++ Scenario: g_VX1X_valuesXageX_rangeXlocal_20_30X
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").range(Scope.local, 20, 30)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Sample.feature
index 8a8bee78da,0000000000..c18e01a8b5
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Sample.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Sample.feature
@@@ -1,88 -1,0 +1,100 @@@
+# 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.
+
+@StepClassFilter @StepSample
+Feature: Step - sample()
+
+ Scenario: g_E_sampleX1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.E().sample(1)
+ """
+ When iterated to list
+ Then the result should have a count of 1
+
+ Scenario: g_E_sampleX2X_byXweightX
+ Given the modern graph
+ And the traversal of
+ """
+ g.E().sample(2).by("weight")
+ """
+ When iterated to list
+ Then the result should have a count of 2
+
+ Scenario: g_V_localXoutE_sampleX1X_byXweightXX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().local(__.outE().sample(1).by("weight"))
+ """
+ When iterated to list
+ Then the result should have a count of 3
+
+ @WithSeedStrategy
+ Scenario: g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_sampleX2X_foldXunfold
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(new SeedStrategy(seed: 999999)).V().group().by(T.label).by(__.bothE().values("weight").order().sample(2).fold()).unfold()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"software":"l[d[1.0].d,d[0.4].d]"}] |
+ | m[{"person":"l[d[0.5].d,d[1.0].d]"}] |
+
+ @WithSeedStrategy
+ Scenario: g_withStrategiesXSeedStrategyX_V_group_byXlabelX_byXbothE_weight_order_fold_sampleXlocal_5XXunfold
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(new SeedStrategy(seed: 999999)).V().group().by(T.label).by(__.bothE().values("weight").order().fold().sample(Scope.local, 5)).unfold()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"software":"l[d[0.2].d,d[0.4].d,d[0.4].d,d[1.0].d]"}] |
+ | m[{"person":"l[d[0.5].d,d[1.0].d,d[0.4].d,d[0.2].d,d[1.0].d]"}] |
+
+ @WithSeedStrategy
+ Scenario: g_withStrategiesXSeedStrategyX_V_order_byXlabel_descX_sampleX1X_byXageX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(new SeedStrategy(seed: 999999)).V().order().by(T.label, Order.desc).sample(1).by("age")
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | v[peter] |
+ | v[marko] |
+ | v[josh] |
+ | v[vadas] |
- Then the result should have a count of 1
++ Then the result should have a count of 1
++
++ Scenario: g_VX1X_valuesXageX_sampleXlocal_5X
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").sample(Scope.local, 5)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Tail.feature
index 17af1125a7,0000000000..e8a2284c77
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Tail.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Tail.feature
@@@ -1,189 -1,0 +1,201 @@@
+# 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.
+
+@StepClassFilter @StepTail
+Feature: Step - tail()
+
+ Scenario: g_V_valuesXnameX_order_tailXglobal_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").order().tail(Scope.global, 2)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_valuesXnameX_order_tailX2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").order().tail(2)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_valuesXnameX_order_tail
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").order().tail()
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | vadas |
+
+ Scenario: g_V_valuesXnameX_order_tailX7X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").order().tail(7)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | josh |
+ | lop |
+ | marko |
+ | peter |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_repeatXbothX_timesX3X_tailX7X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().repeat(both()).times(3).tail(7)
+ """
+ When iterated to list
+ Then the result should have a count of 7
+
+ Scenario: g_V_repeatXin_outX_timesX3X_tailX7X_count
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().repeat(__.in().out()).times(3).tail(7).count()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[7].l |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local, 1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | ripple |
+ | lop |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | ripple |
+ | lop |
+
+ Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local, 2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"b":"josh","c":"ripple"}] |
+ | m[{"b":"josh","c":"lop"}] |
+
+ Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local, 1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"c":"ripple"}] |
+ | m[{"c":"lop"}] |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocal_1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).tail(Scope.local, 1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | ripple |
+ | lop |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).tail(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | ripple |
+ | lop |
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXlimitXlocal_0XX_tailXlocal_1X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select(Pop.mixed, "a").by(__.limit(Scope.local, 0)).tail(Scope.local, 1)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ @GraphComputerVerificationReferenceOnly
+ Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocal_2X
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out().as("a").out().as("a").select(Pop.mixed, "a").by(__.unfold().values("name").fold()).tail(Scope.local, 2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | l[josh,ripple] |
- | l[josh,lop] |
++ | l[josh,lop] |
++
++ Scenario: g_VX1X_valuesXageX_tailXlocal_5X
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").tail(Scope.local, 50)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Index.feature
index 5c76659102,0000000000..20617e8c04
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Index.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Index.feature
@@@ -1,67 -1,0 +1,80 @@@
+# 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.
+
+@StepClassMap @StepIndex
+Feature: Step - index()
+
+ Scenario: g_V_hasLabelXsoftwareX_index_unfold
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("software").index().unfold()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | l[v[lop],d[0].i] |
+ | l[v[ripple],d[0].i] |
+
+ Scenario: g_V_hasLabelXsoftwareX_order_byXnameX_index_withXmapX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("software").order().by("name").index().with(WithOptions.indexer, WithOptions.map)
+ """
+ When iterated to list
+ Then the result should be of
+ | result |
+ | m[{"d[0].i": "v[lop]"}] |
+ | m[{"d[0].i": "v[ripple]"}] |
+ And the result should have a count of 2
+
+ Scenario: g_V_hasLabelXsoftwareX_name_fold_orderXlocalX_index_unfold_order_byXtailXlocal_1XX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("software").values("name").fold().order(Scope.local).index().unfold().order().by(__.tail(Scope.local, 1))
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | l[lop,d[0].i] |
+ | l[ripple,d[1].i] |
+
+ Scenario: g_V_hasLabelXpersonX_name_fold_orderXlocalX_index_withXmapX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").values("name").fold().order(Scope.local).index().with(WithOptions.indexer, WithOptions.map)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"d[0].i": "josh", "d[1].i": "marko", "d[2].i": "peter", "d[3].i": "vadas"}] |
++
++ Scenario: g_VX1X_valuesXageX_index_unfold_unfold
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").index().unfold().unfold()
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
++ | d[0].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Max.feature
index 38fb7dbbe0,0000000000..1603370ffa
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Max.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Max.feature
@@@ -1,191 -1,0 +1,203 @@@
+# 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.
+
+@StepClassMap @StepMax
+Feature: Step - max()
+
+ Scenario: g_V_age_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").max()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[35].i |
+
+ Scenario: g_V_foo_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").max()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_name_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").max()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | vadas |
+
+ Scenario: g_V_age_fold_maxXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").fold().max(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[35].i |
+
+ Scenario: g_V_aggregateXaX_byXageX_capXaX_maxXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").max(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[35].i |
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_maxXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").max(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[35].i |
+
+ Scenario: g_V_aggregateXaX_byXageX_capXaX_unfold_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").unfold().max()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[35].i |
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").unfold().max()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[35].i |
+
+ Scenario: g_V_aggregateXaX_byXfooX_capXaX_maxXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").max(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_maxXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").max(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ Scenario: g_V_aggregateXaX_byXfooX_capXaX_unfold_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").unfold().max()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").unfold().max()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ Scenario: g_V_foo_fold_maxXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").fold().max(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_name_fold_maxXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").fold().max(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | vadas |
+
+ Scenario: g_V_repeatXbothX_timesX5X_age_max
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().repeat(__.both()).times(5).values("age").max()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[35].i |
+
+ Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").max())
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"ripple":"d[1.0].d","lop":"d[0.4].d"}] |
++
++ Scenario: g_VX1X_valuesXageX_maxXlocalX
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").max(Scope.local)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Mean.feature
index 7190ac47c9,0000000000..75fc1329a5
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Mean.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Mean.feature
@@@ -1,193 -1,0 +1,205 @@@
+# 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.
+
+@StepClassMap @StepMean
+Feature: Step - mean()
+
+ Scenario: g_V_age_mean
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").mean()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[30.75].d |
+
+ Scenario: g_V_foo_mean
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").mean()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_age_fold_meanXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").fold().mean(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[30.75].d |
+
+ Scenario: g_V_foo_fold_meanXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").fold().mean(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").mean())
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"ripple":"d[1.0].d","lop":"d[0.3333333333333333].d"}] |
+
+ # null values are ignored in mean() which is similar to sum aggregation works in SQL
+ Scenario: g_V_aggregateXaX_byXageX_meanXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").mean(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[30.75].d |
+
+ # null values are ignored in mean() which is similar to sum aggregation works in SQL
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_meanXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").mean(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[30.75].d |
+
+ # null values are ignored in mean() which is similar to sum aggregation works in SQL
+ Scenario: g_V_aggregateXaX_byXageX_capXaX_unfold_mean
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").unfold().mean()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[30.75].d |
+
+ # null values are ignored in mean() which is similar to sum aggregation works in SQL
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_mean
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").unfold().mean()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[30.75].d |
+
+ # if all values are null then the result is null
+ Scenario: g_V_aggregateXaX_byXfooX_meanXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").mean(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ # if all values are null then the result is null
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_meanXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").mean(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ # if all values are null then the result is null
+ Scenario: g_V_aggregateXaX_byXfooX_capXaX_unfold_mean
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").unfold().mean()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ # if all values are null then the result is null
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_mean
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").unfold().mean()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ @GraphComputerVerificationInjectionNotSupported
+ Scenario: g_injectXnull_10_20_nullX_mean
+ Given the modern graph
+ And using the parameter xx1 defined as "d[10].i"
+ And using the parameter xx2 defined as "d[20].i"
+ And the traversal of
+ """
+ g.inject(null, xx1, xx2, null).mean()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[15].d |
+
+ @GraphComputerVerificationInjectionNotSupported
+ Scenario: g_injectXlistXnull_10_20_nullXX_meanXlocalX
+ Given the modern graph
+ And using the parameter xx1 defined as "l[null,d[10].i,d[20].i,null]"
+ And the traversal of
+ """
+ g.inject(xx1).mean(local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
- | d[15].d |
++ | d[15].d |
++
++ Scenario: g_VX1X_valuesXageX_meanXlocalX
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").mean(Scope.local)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29.0].d |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Min.feature
index 3134809b48,0000000000..0b8c4aff47
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Min.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Min.feature
@@@ -1,204 -1,0 +1,216 @@@
+# 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.
+
+@StepClassMap @StepMin
+Feature: Step - min()
+
+ Scenario: g_V_age_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").min()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[27].i |
+
+ Scenario: g_V_foo_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").min()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_name_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").min()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | josh |
+
+ Scenario: g_V_age_fold_minXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").fold().min(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[27].i |
+
+ Scenario: g_V_aggregateXaX_byXageX_capXaX_minXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").min(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[27].i |
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_minXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").min(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[27].i |
+
+ Scenario: g_V_aggregateXaX_byXageX_capXaX_unfold_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").unfold().min()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[27].i |
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").unfold().min()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[27].i |
+
+ Scenario: g_V_aggregateXaX_byXfooX_capXaX_minXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").min(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_minXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").min(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ Scenario: g_V_aggregateXaX_byXfooX_capXaX_unfold_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").unfold().min()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").unfold().min()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ Scenario: g_V_foo_fold_minXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").fold().min(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_name_fold_minXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").fold().min(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | josh |
+
+ Scenario: g_V_repeatXbothX_timesX5X_age_min
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().repeat(__.both()).times(5).values("age").min()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[27].i |
+
+ Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").min())
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"ripple":"d[1.0].d","lop":"d[0.2].d"}] |
+
+ @GraphComputerVerificationInjectionNotSupported
+ Scenario: g_V_foo_injectX9999999999X_min
+ Given the modern graph
+ And using the parameter xx1 defined as "d[9999999999].l"
+ And the traversal of
+ """
+ g.V().values("foo").inject(xx1).min()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[9999999999].l |
++
++ Scenario: g_VX1X_valuesXageX_minXlocalX
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").min(Scope.local)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Order.feature
index cdbeed2fc1,0000000000..0c3d204d81
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Order.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Order.feature
@@@ -1,603 -1,0 +1,615 @@@
+# 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.
+
+@StepClassMap @StepOrder
+Feature: Step - order()
+
+ Scenario: g_V_name_order
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("name").order()
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | josh |
+ | lop |
+ | marko |
+ | peter |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_name_order_byXa1_b1X_byXb2_a2X
+ Given the modern graph
+ And using the parameter c1 defined as "c[a, b -> a.substring(1, 2).compareTo(b.substring(1, 2))]"
+ And using the parameter c2 defined as "c[a, b -> b.substring(2, 3).compareTo(a.substring(2, 3))]"
+ And the traversal of
+ """
+ g.V().values("name").order().by(c1).by(c2)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | marko |
+ | vadas |
+ | peter |
+ | ripple |
+ | josh |
+ | lop |
+
+ Scenario: g_V_order_byXname_ascX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().order().by("name", Order.asc).values("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | josh |
+ | lop |
+ | marko |
+ | peter |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_order_byXnameX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().order().by("name").values("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | josh |
+ | lop |
+ | marko |
+ | peter |
+ | ripple |
+ | vadas |
+
+ Scenario: g_V_outE_order_byXweight_descX_weight
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().outE().order().by("weight", Order.desc).values("weight")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | d[1.0].d |
+ | d[1.0].d |
+ | d[0.5].d |
+ | d[0.4].d |
+ | d[0.4].d |
+ | d[0.2].d |
+
+ Scenario: g_V_order_byXname_a1_b1X_byXname_b2_a2X_name
+ Given the modern graph
+ And using the parameter c1 defined as "c[a, b -> a.substring(1, 2).compareTo(b.substring(1, 2))]"
+ And using the parameter c2 defined as "c[a, b -> b.substring(2, 3).compareTo(a.substring(2, 3))]"
+ And the traversal of
+ """
+ g.V().order().by("name", c1).by("name", c2).values("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | marko |
+ | vadas |
+ | peter |
+ | ripple |
+ | josh |
+ | lop |
+
+ Scenario: g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_selectXa_bX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("a").out("created").as("b").order().by(Order.shuffle).select("a", "b")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"a":"v[marko]","b":"v[lop]"}] |
+ | m[{"a":"v[peter]","b":"v[lop]"}] |
+ | m[{"a":"v[josh]","b":"v[ripple]"}] |
+ | m[{"a":"v[josh]","b":"v[lop]"}] |
+
+ Scenario: g_V_both_hasLabelXpersonX_order_byXage_descX_limitX5X_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().hasLabel("person").order().by("age", Order.desc).limit(5).values("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | peter |
+ | josh |
+ | josh |
+ | josh |
+ | marko |
+
+ Scenario: g_V_properties_order_byXkey_descX_key
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().properties().order().by(T.key, Order.desc).key()
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | name |
+ | name |
+ | name |
+ | name |
+ | name |
+ | name |
+ | lang |
+ | lang |
+ | age |
+ | age |
+ | age |
+ | age |
+
+ Scenario: g_V_hasLabelXpersonX_order_byXvalueXageX_descX_name
+ Given the modern graph
+ And using the parameter l1 defined as "c[it.value('age')]"
+ And the traversal of
+ """
+ g.V().hasLabel("person").order().by(l1, Order.desc).values("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | peter |
+ | josh |
+ | marko |
+ | vadas |
+
+ Scenario: g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_orderXlocalX_byXvaluesX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).order(Scope.local).by(Column.values)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | m[{"peter":"d[0.2].d","josh":"d[1.4].d","marko":"d[1.9].d"}] |
+
+ Scenario: g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_descX_byXcountXlocalX_descX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().map(__.bothE().values("weight").order().by(Order.asc).fold()).order().by(__.sum(Scope.local), Order.desc).by(__.count(Scope.local), Order.desc)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | l[d[0.4].d,d[1.0].d,d[1.0].d] |
+ | l[d[0.4].d,d[0.5].d,d[1.0].d] |
+ | l[d[0.2].d,d[0.4].d,d[0.4].d] |
+ | l[d[1.0].d] |
+ | l[d[0.5].d] |
+ | l[d[0.2].d] |
+
+ Scenario: g_V_group_byXlabelX_byXname_order_byXdescX_foldX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().group().by(T.label).by(__.values("name").order().by(Order.desc).fold())
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | m[{"software":"l[ripple,lop]","person":"l[vadas,peter,marko,josh]"}] |
+
+ Scenario: g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_descX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).unfold().order().by(Column.values, Order.desc)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | m[{"marko":"d[1.9].d"}] |
+ | m[{"josh":"d[1.4].d"}] |
+ | m[{"peter":"d[0.2].d"}] |
+
+ @GraphComputerVerificationStarGraphExceeded
+ Scenario: g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX_byXselectXvX_nameX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().as("v").map(__.bothE().values("weight").fold()).sum(Scope.local).as("s").select("v", "s").order().by(__.select("s"), Order.desc).by(__.select("v").values("name"))
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | m[{"v":"v[josh]","s":"d[2.4].d"}] |
+ | m[{"v":"v[marko]","s":"d[1.9].d"}] |
+ | m[{"v":"v[lop]","s":"d[1.0].d"}] |
+ | m[{"v":"v[ripple]","s":"d[1.0].d"}] |
+ | m[{"v":"v[vadas]","s":"d[0.5].d"}] |
+ | m[{"v":"v[peter]","s":"d[0.2].d"}] |
+
+ Scenario: g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").fold().order(Scope.local).by("age")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | l[v[vadas],v[marko],v[josh],v[peter]] |
+
+ Scenario: g_V_both_hasLabelXpersonX_order_byXage_descX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().both().hasLabel("person").order().by("age", Order.desc).values("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | peter |
+ | josh |
+ | josh |
+ | josh |
+ | marko |
+ | marko |
+ | marko |
+ | vadas |
+
+ Scenario: g_V_order_byXoutE_count_descX_byXnameX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().order().by(__.outE().count(), Order.desc).by("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+ | v[lop] |
+ | v[ripple] |
+ | v[vadas] |
+
+ Scenario: g_V_hasLabelXpersonX_order_byXageX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").order().by("age")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | v[vadas] |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+
+ Scenario: g_V_order_byXageX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().order().by("age")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | v[vadas] |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+
+ Scenario: g_V_fold_orderXlocalX_byXageX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().fold().order(local).by("age")
+ """
+ When iterated next
+ Then the result should be ordered
+ | result |
+ | v[vadas] |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+
+
+ Scenario: g_V_fold_orderXlocalX_byXage_descX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().fold().order(local).by("age", desc)
+ """
+ When iterated next
+ Then the result should be ordered
+ | result |
+ | v[peter] |
+ | v[josh] |
+ | v[marko] |
+ | v[vadas] |
+
+ Scenario: g_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().or(hasLabel("person"),has("software","name","lop")).order().by("age")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | v[vadas] |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+
+ # tests order().by() where a property isn't present to ensure null comes first
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().or(hasLabel("person"),has("software","name","lop")).order().by("age")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | v[lop] |
+ | v[vadas] |
+ | v[marko] |
+ | v[josh] |
+ | v[peter] |
+
+ Scenario: g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX
+ Given the modern graph
+ And using the parameter v1 defined as "v[marko]"
+ And using the parameter l1 defined as "c[['1':it.get().value('age'),'2':it.get().value('age')*2,'3':it.get().value('age')*3,'4':it.get().value('age')]]"
+ And the traversal of
+ """
+ g.V(v1).hasLabel("person").map(l1).order(Scope.local).by(Column.values, Order.desc).by(Column.keys, Order.asc)
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | m[{"3":"d[87].i","2":"d[58].i","1":"d[29].i","4":"d[29].i"}] |
+
+ Scenario: g_V_hasXsong_name_OHBOYX_outXfollowedByX_outXfollowedByX_order_byXperformancesX_byXsongType_descX
+ Given the grateful graph
+ And the traversal of
+ """
+ g.V().has("song", "name", "OH BOY").out("followedBy").out("followedBy").order().by("performances").by("songType", desc).by("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | v[BARBRY ALLEN] |
+ | v[CHANTING BY THE GYOTO MONKS] |
+ | v[FUNICULI FUNICULA] |
+ | v[GIMME SOME LOVIN] |
+ | v[GOOD TIME BLUES] |
+ | v[LUCY IN THE SKY] |
+ | v[MAYBE YOU KNOW HOW I FEEL] |
+ | v[MOJO] |
+ | v[OLLIN ARRAGEED] |
+ | v[QUINN THE ESKIMO] |
+ | v[SATISFACTION] |
+ | v[SILENT WAY JAM] |
+ | v[SPACE] |
+ | v[STRONGER THAN DIRT] |
+ | v[THE BOXER] |
+ | v[THIS COULD BE THE LAST TIME] |
+ | v[TOM THUMB BLUES] |
+ | v[CHINESE BONES] |
+ | v[LOVE THE ONE YOURE WITH] |
+ | v[BLACK QUEEN] |
+ | v[OH BOY] |
+ | v[BLUES FOR ALLAH] |
+ | v[IF I HAD THE WORLD TO GIVE] |
+ | v[HEY JUDE] |
+ | v[ITS ALL TOO MUCH] |
+ | v[WILLIE AND THE HAND JIVE] |
+ | v[WHY DONT WE DO IT IN THE ROAD] |
+ | v[UNBROKEN CHAIN] |
+ | v[DONT NEED LOVE] |
+ | v[NOBODYS FAULT BUT MINE] |
+ | v[HEAVEN HELP THE FOOL] |
+ | v[BLOW AWAY] |
+ | v[JAM] |
+ | v[SUNSHINE DAYDREAM] |
+ | v[I WILL TAKE YOU HOME] |
+ | v[SAMBA IN THE RAIN] |
+ | v[ON THE ROAD AGAIN] |
+ | v[SPANISH JAM] |
+ | v[EASY TO LOVE YOU] |
+ | v[DEATH DONT HAVE NO MERCY] |
+ | v[SPOONFUL] |
+ | v[CAUTION] |
+ | v[THE RACE IS ON] |
+ | v[SMOKESTACK LIGHTNING] |
+ | v[COMES A TIME] |
+ | v[STANDING ON THE MOON] |
+ | v[KNOCKING ON HEAVENS DOOR] |
+ | v[PICASSO MOON] |
+ | v[FOOLISH HEART] |
+ | v[WAY TO GO HOME] |
+ | v[THE ELEVEN] |
+ | v[VICTIM OR THE CRIME] |
+ | v[PASSENGER] |
+ | v[PASSENGER] |
+ | v[MY BROTHER ESAU] |
+ | v[HELP ON THE WAY] |
+ | v[LAZY LIGHTNING] |
+ | v[CHINA DOLL] |
+ | v[ME AND BOBBY MCGEE] |
+ | v[ALL ALONG THE WATCHTOWER] |
+ | v[CRYPTICAL ENVELOPMENT] |
+ | v[ALABAMA GETAWAY] |
+ | v[CRAZY FINGERS] |
+ | v[CRAZY FINGERS] |
+ | v[WHEN I PAINT MY MASTERPIECE] |
+ | v[LOST SAILOR] |
+ | v[LOST SAILOR] |
+ | v[BLACK THROATED WIND] |
+ | v[IT MUST HAVE BEEN THE ROSES] |
+ | v[IT MUST HAVE BEEN THE ROSES] |
+ | v[BOX OF RAIN] |
+ | v[SHAKEDOWN STREET] |
+ | v[SHAKEDOWN STREET] |
+ | v[IKO IKO] |
+ | v[IKO IKO] |
+ | v[FEEL LIKE A STRANGER] |
+ | v[TOUCH OF GREY] |
+ | v[TOUCH OF GREY] |
+ | v[BROKEDOWN PALACE] |
+ | v[HELL IN A BUCKET] |
+ | v[DARK STAR] |
+ | v[DARK STAR] |
+ | v[FRANKLINS TOWER] |
+ | v[SAINT OF CIRCUMSTANCE] |
+ | v[SAINT OF CIRCUMSTANCE] |
+ | v[THE MUSIC NEVER STOPPED] |
+ | v[COLD RAIN AND SNOW] |
+ | v[FIRE ON THE MOUNTAIN] |
+ | v[MORNING DEW] |
+ | v[THE WHEEL] |
+ | v[THROWING STONES] |
+ | v[I NEED A MIRACLE] |
+ | v[I NEED A MIRACLE] |
+ | v[ALTHEA] |
+ | v[LITTLE RED ROOSTER] |
+ | v[LET IT GROW] |
+ | v[LET IT GROW] |
+ | v[GOING DOWN THE ROAD FEELING BAD] |
+ | v[BIRDSONG] |
+ | v[TERRAPIN STATION] |
+ | v[TERRAPIN STATION] |
+ | v[MAMA TRIED] |
+ | v[FRIEND OF THE DEVIL] |
+ | v[FRIEND OF THE DEVIL] |
+ | v[SCARLET BEGONIAS] |
+ | v[SCARLET BEGONIAS] |
+ | v[BEAT IT ON DOWN THE LINE] |
+ | v[HES GONE] |
+ | v[STELLA BLUE] |
+ | v[UNCLE JOHNS BAND] |
+ | v[UNCLE JOHNS BAND] |
+ | v[CASSIDY] |
+ | v[ONE MORE SATURDAY NIGHT] |
+ | v[BLACK PETER] |
+ | v[BROWN EYED WOMEN] |
+ | v[SUGAREE] |
+ | v[SAMSON AND DELILAH] |
+ | v[SAMSON AND DELILAH] |
+ | v[EYES OF THE WORLD] |
+ | v[EYES OF THE WORLD] |
+ | v[EL PASO] |
+ | v[ESTIMATED PROPHET] |
+ | v[BERTHA] |
+ | v[WHARF RAT] |
+ | v[BIG RIVER] |
+ | v[LOOKS LIKE RAIN] |
+ | v[AROUND AND AROUND] |
+ | v[PROMISED LAND] |
+ | v[GOOD LOVING] |
+ | v[MEXICALI BLUES] |
+ | v[NEW MINGLEWOOD BLUES] |
+ | v[JACK STRAW] |
+ | v[JACK STRAW] |
+ | v[TRUCKING] |
+ | v[TRUCKING] |
+ | v[NOT FADE AWAY] |
+ | v[CHINA CAT SUNFLOWER] |
+ | v[CHINA CAT SUNFLOWER] |
+ | v[PLAYING IN THE BAND] |
+ | v[PLAYING IN THE BAND] |
+ | v[THE OTHER ONE] |
+ | v[SUGAR MAGNOLIA] |
+ | v[SUGAR MAGNOLIA] |
+ | v[ME AND MY UNCLE] |
+
+ Scenario: g_V_hasLabelXsongX_order_byXperformances_descX_byXnameX_rangeX110_120X_name
+ Given the grateful graph
+ And the traversal of
+ """
+ g.V().hasLabel("song").order().by("performances", desc).by("name").range(110, 120).values("name")
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | WANG DANG DOODLE |
+ | THE ELEVEN |
+ | WAY TO GO HOME |
+ | FOOLISH HEART |
+ | GIMME SOME LOVING |
+ | DUPREES DIAMOND BLUES |
+ | CORRINA |
+ | PICASSO MOON |
+ | KNOCKING ON HEAVENS DOOR |
+ | MEMPHIS BLUES |
+
+ Scenario: g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).elementMap().order(Scope.local).by(Column.keys, Order.desc).unfold()
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | m[{"name":"marko"}] |
+ | m[{"t[label]":"person"}] |
+ | m[{"t[id]":"v[marko].id"}] |
+ | m[{"age":29}] |
+
+ Scenario: g_VX1X_elementMap_orderXlocalX_byXkeys_ascXunfold
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And the traversal of
+ """
+ g.V(vid1).elementMap().order(Scope.local).by(Column.keys, Order.asc).unfold()
+ """
+ When iterated to list
+ Then the result should be ordered
+ | result |
+ | m[{"age":29}] |
+ | m[{"t[id]":"v[marko].id"}] |
+ | m[{"t[label]":"person"}] |
- | m[{"name":"marko"}] |
++ | m[{"name":"marko"}] |
++
++ Scenario: g_VX1X_valuesXageX_orderXlocalX
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").order(Scope.local)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |
diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Sum.feature
index b2f23acea4,0000000000..e0e734536d
mode 100644,000000..100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Sum.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Sum.feature
@@@ -1,192 -1,0 +1,204 @@@
+# 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.
+
+@StepClassMap @StepSum
+Feature: Step - sum()
+
+ Scenario: g_V_age_sum
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").sum()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[123].l |
+
+ Scenario: g_V_foo_sum
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").sum()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_age_fold_sumXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("age").fold().sum(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[123].i |
+
+ Scenario: g_V_foo_fold_sumXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().values("foo").fold().sum(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").sum())
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"ripple":"d[1.0].d","lop":"d[1.0].d"}] |
+
+ # null values are ignored in sum() which is similar to sum aggregation works in SQL
+ Scenario: g_V_aggregateXaX_byXageX_sumXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").sum(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[123].i |
+
+ # null values are ignored in sum() which is similar to sum aggregation works in SQL
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_sumXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").sum(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[123].i |
+
+ # null values are ignored in sum() which is similar to sum aggregation works in SQL
+ Scenario: g_V_aggregateXaX_byXageX_capXaX_unfold_sum
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("age").cap("a").unfold().sum()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[123].l |
+
+ # null values are ignored in sum() which is similar to sum aggregation works in SQL
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXageX_capXaX_unfold_sum
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("age").cap("a").unfold().sum()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[123].l |
+
+ Scenario: g_V_aggregateXaX_byXfooX_sumXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").sum(Scope.local)
+ """
+ When iterated to list
+ Then the result should be empty
+
+ # if all values are null then the result is null
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_sumXlocalX
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").sum(Scope.local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ # if all values are null then the result is null
+ Scenario: g_V_aggregateXaX_byXfooX_capXaX_unfold_sum
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().aggregate("a").by("foo").cap("a").unfold().sum()
+ """
+ When iterated to list
+ Then the result should be empty
+
+ # if all values are null then the result is null
+ @WithProductiveByStrategy
+ Scenario: g_withStrategiesXProductiveByStrategyX_V_aggregateXaX_byXfooX_capXaX_unfold_sum
+ Given the modern graph
+ And the traversal of
+ """
+ g.withStrategies(ProductiveByStrategy).V().aggregate("a").by("foo").cap("a").unfold().sum()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | null |
+
+ @GraphComputerVerificationInjectionNotSupported
+ Scenario: g_injectXnull_10_5_nullX_sum
+ Given the modern graph
+ And using the parameter xx1 defined as "d[10].i"
+ And using the parameter xx2 defined as "d[5].i"
+ And the traversal of
+ """
+ g.inject(null, xx1, xx2, null).sum()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[15].l |
+
+ @GraphComputerVerificationInjectionNotSupported
+ Scenario: g_injectXlistXnull_10_5_nullXX_sumXlocalX
+ Given the modern graph
+ And using the parameter xx1 defined as "l[null,d[10].i,d[5].i,null]"
+ And the traversal of
+ """
+ g.inject(xx1).sum(local)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
- | d[15].i |
++ | d[15].i |
++
++ Scenario: g_VX1X_valuesXageX_sumXlocalX
++ Given the modern graph
++ And using the parameter vid1 defined as "v[marko].id"
++ And the traversal of
++ """
++ g.V(vid1).values("age").sum(Scope.local)
++ """
++ When iterated to list
++ Then the result should be unordered
++ | result |
++ | d[29].i |