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 2022/12/07 19:04:08 UTC
[tinkerpop] 01/01: improving tests for more consistent results
This is an automated email from the ASF dual-hosted git repository.
valentyn pushed a commit to branch TINKERPOP-2816-3.5
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit a97738eb8778ff65575dbb17f5836897f11bcf1f
Author: Valentyn Kahamlyk <va...@bitquilltech.com>
AuthorDate: Wed Dec 7 11:03:56 2022 -0800
improving tests for more consistent results
---
.../test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 4 ++--
gremlin-go/driver/cucumber/gremlin.go | 4 ++--
.../javascript/gremlin-javascript/test/cucumber/gremlin.js | 4 ++--
gremlin-python/src/main/python/radish/gremlin.py | 4 ++--
gremlin-test/features/branch/Repeat.feature | 4 ++--
gremlin-test/features/map/Order.feature | 6 +++---
.../gremlin/process/traversal/step/branch/RepeatTest.java | 13 +++++++------
.../gremlin/process/traversal/step/map/OrderTest.java | 10 +++++-----
8 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index fedd63b31c..a6f2c507fa 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -105,7 +105,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
{"g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Both()).Until((IPredicate) p["pred1"]).GroupCount<object>().By("name")}},
{"g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name","marko").Repeat(__.OutE().InV().SimplePath()).Until(__.Has("name","ripple")).Path().By("name").By(T.Label)}},
{"g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("loops","name","loop").Repeat(__.In()).Times(5).Path().By("name")}},
- {"g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Out().Repeat(__.Out()).Times(1)).Times(1).Limit<object>(1).Path().By("name")}},
+ {"g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Out().Repeat(__.Out().Order().By("name",Order.Desc)).Times(1)).Times(1).Limit<object>(1).Path().By("name")}},
{"g_V_repeatXoutXknowsXX_untilXrepeatXoutXcreatedXX_emitXhasXname_lopXXX_path_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Out("knows")).Until(__.Repeat(__.Out("created")).Emit(__.Has("name","lop"))).Path().By("name")}},
{"g_V_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Repeat(__.Out("created")).Until(__.Has("name","ripple"))).Emit().Values<object>("lang")}},
{"g_V_untilXconstantXtrueXX_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Until(__.Constant<object>(true)).Repeat(__.Repeat(__.Out("created")).Until(__.Has("name","ripple"))).Emit().Values<object>("lang")}},
@@ -505,7 +505,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
{"g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().As("v").Map<object>(__.BothE().Values<object>("weight").Fold()).Sum<object>(Scope.Local).As("s").Select<object>("v","s").Order().By(__.Select<object>("s"),Order.Desc)}},
{"g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("person").Fold().Order(Scope.Local).By("age")}},
{"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", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By(__.OutE().Count(),Order.Desc)}},
+ {"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_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_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)}},
diff --git a/gremlin-go/driver/cucumber/gremlin.go b/gremlin-go/driver/cucumber/gremlin.go
index ba6e41b55a..4bace846ea 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -76,7 +76,7 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[
"g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Repeat(gremlingo.T__.Both()).Until(p["pred1"]).GroupCount().By("name")}},
"g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("name", "marko").Repeat(gremlingo.T__.OutE().InV().SimplePath()).Until(gremlingo.T__.Has("name", "ripple")).Path().By("name").By(gremlingo.T.Label)}},
"g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("loops", "name", "loop").Repeat(gremlingo.T__.In()).Times(5).Path().By("name")}},
- "g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Repeat(gremlingo.T__.Out().Repeat(gremlingo.T__.Out()).Times(1)).Times(1).Limit(1).Path().By("name")}},
+ "g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Repeat(gremlingo.T__.Out().Repeat(gremlingo.T__.Out().Order().By("name", gremlingo.Order.Desc)).Times(1)).Times(1).Limit(1).Path().By("name")}},
"g_V_repeatXoutXknowsXX_untilXrepeatXoutXcreatedXX_emitXhasXname_lopXXX_path_byXnameX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Repeat(gremlingo.T__.Out("knows")).Until(gremlingo.T__.Repeat(gremlingo.T__.Out("created")).Emit(gremlingo.T__.Has("name", "lop"))).Path().By("name")}},
"g_V_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Repeat(gremlingo.T__.Repeat(gremlingo.T__.Out("created")).Until(gremlingo.T__.Has("name", "ripple"))).Emit().Values("lang")}},
"g_V_untilXconstantXtrueXX_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Until(gremlingo.T__.Constant(true)).Repeat(gremlingo.T__.Repeat(gremlingo.T__.Out("created")).Until(gremlingo.T__.Has("name", "ripple"))).Emit().Values("lang")}},
@@ -476,7 +476,7 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[
"g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().As("v").Map(gremlingo.T__.BothE().Values("weight").Fold()).Sum(gremlingo.Scope.Local).As("s").Select("v", "s").Order().By(gremlingo.T__.Select("s"), gremlingo.Order.Desc)}},
"g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().HasLabel("person").Fold().Order(gremlingo.Scope.Local).By("age")}},
"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": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Order().By(gremlingo.T__.OutE().Count(), gremlingo.Order.Desc)}},
+ "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_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_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)}},
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 379fe7e3c4..bd7a0c8d3a 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -93,7 +93,7 @@ const gremlins = {
g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX: [function({g, pred1}) { return g.V().repeat(__.both()).until(pred1).groupCount().by("name") }],
g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX: [function({g}) { return g.V().has("name","marko").repeat(__.outE().inV().simplePath()).until(__.has("name","ripple")).path().by("name").by(T.label) }],
g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name: [function({g}) { return g.V().has("loops","name","loop").repeat(__.in_()).times(5).path().by("name") }],
- g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name: [function({g}) { return g.V().repeat(__.out().repeat(__.out()).times(1)).times(1).limit(1).path().by("name") }],
+ g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX: [function({g}) { return g.V().repeat(__.out().repeat(__.out().order().by("name",Order.desc)).times(1)).times(1).limit(1).path().by("name") }],
g_V_repeatXoutXknowsXX_untilXrepeatXoutXcreatedXX_emitXhasXname_lopXXX_path_byXnameX: [function({g}) { return g.V().repeat(__.out("knows")).until(__.repeat(__.out("created")).emit(__.has("name","lop"))).path().by("name") }],
g_V_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang: [function({g}) { return g.V().repeat(__.repeat(__.out("created")).until(__.has("name","ripple"))).emit().values("lang") }],
g_V_untilXconstantXtrueXX_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang: [function({g}) { return g.V().until(__.constant(true)).repeat(__.repeat(__.out("created")).until(__.has("name","ripple"))).emit().values("lang") }],
@@ -493,7 +493,7 @@ const gremlins = {
g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX: [function({g}) { return g.V().as("v").map(__.bothE().values("weight").fold()).sum(Scope.local).as("s").select("v","s").order().by(__.select("s"),Order.desc) }],
g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX: [function({g}) { return g.V().hasLabel("person").fold().order(Scope.local).by("age") }],
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: [function({g}) { return g.V().order().by(__.outE().count(),Order.desc) }],
+ 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_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX: [function({g}) { return g.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) }],
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index f59c162463..0085bb585a 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -78,7 +78,7 @@ world.gremlins = {
'g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX': [(lambda g, pred1=None:g.V().repeat(__.both()).until(pred1).groupCount().by('name'))],
'g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX': [(lambda g:g.V().has('name','marko').repeat(__.outE().inV().simplePath()).until(__.has('name','ripple')).path().by('name').by(T.label))],
'g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name': [(lambda g:g.V().has('loops','name','loop').repeat(__.in_()).times(5).path().by('name'))],
- 'g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name': [(lambda g:g.V().repeat(__.out().repeat(__.out()).times(1)).times(1)[0:1].path().by('name'))],
+ 'g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX': [(lambda g:g.V().repeat(__.out().repeat(__.out().order().by('name',Order.desc)).times(1)).times(1)[0:1].path().by('name'))],
'g_V_repeatXoutXknowsXX_untilXrepeatXoutXcreatedXX_emitXhasXname_lopXXX_path_byXnameX': [(lambda g:g.V().repeat(__.out('knows')).until(__.repeat(__.out('created')).emit(__.has('name','lop'))).path().by('name'))],
'g_V_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang': [(lambda g:g.V().repeat(__.repeat(__.out('created')).until(__.has('name','ripple'))).emit().lang)],
'g_V_untilXconstantXtrueXX_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang': [(lambda g:g.V().until(__.constant(True)).repeat(__.repeat(__.out('created')).until(__.has('name','ripple'))).emit().lang)],
@@ -478,7 +478,7 @@ world.gremlins = {
'g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX': [(lambda g:g.V().as_('v').map(__.bothE().weight.fold()).sum_(Scope.local).as_('s').select('v','s').order().by(__.select('s'),Order.desc))],
'g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX': [(lambda g:g.V().hasLabel('person').fold().order(Scope.local).by('age'))],
'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': [(lambda g:g.V().order().by(__.outE().count(),Order.desc))],
+ '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_orXhasLabelXpersonX_hasXsoftware_name_lopXX_order_byXageX': [(lambda g:g.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))],
diff --git a/gremlin-test/features/branch/Repeat.feature b/gremlin-test/features/branch/Repeat.feature
index 55d24da8b8..309886d993 100644
--- a/gremlin-test/features/branch/Repeat.feature
+++ b/gremlin-test/features/branch/Repeat.feature
@@ -253,11 +253,11 @@ Feature: Step - repeat()
| loop |
| loop |
-Scenario: g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name
+Scenario: g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX
Given the modern graph
And the traversal of
"""
- g.V().repeat(__.out().repeat(__.out()).times(1)).times(1).limit(1).path().by("name")
+ g.V().repeat(__.out().repeat(__.out().order().by("name",desc)).times(1)).times(1).limit(1).path().by("name")
"""
When iterated next
Then the result should be unordered
diff --git a/gremlin-test/features/map/Order.feature b/gremlin-test/features/map/Order.feature
index ddb0c52898..3697783679 100644
--- a/gremlin-test/features/map/Order.feature
+++ b/gremlin-test/features/map/Order.feature
@@ -279,11 +279,11 @@ Feature: Step - order()
| marko |
| vadas |
- Scenario: g_V_order_byXoutE_count_descX
+ Scenario: g_V_order_byXoutE_count_descX_byXnameX
Given the modern graph
And the traversal of
"""
- g.V().order().by(__.outE().count(), Order.desc)
+ g.V().order().by(__.outE().count(), Order.desc).by("name")
"""
When iterated to list
Then the result should be ordered
@@ -291,9 +291,9 @@ Feature: Step - order()
| v[marko] |
| v[josh] |
| v[peter] |
- | v[vadas] |
| v[lop] |
| v[ripple] |
+ | v[vadas] |
Scenario: g_V_hasLabelXpersonX_order_byXageX
Given the modern graph
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
index 2475e41001..6368193086 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.branch;
import org.apache.tinkerpop.gremlin.LoadGraphWith;
import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
import org.apache.tinkerpop.gremlin.process.traversal.Path;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
@@ -107,7 +108,7 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
// NESTED LOOP
- public abstract Traversal<Vertex, Path> get_g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name();
+ public abstract Traversal<Vertex, Path> get_g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX();
public abstract Traversal<Vertex, Path> get_g_V_repeatXoutXknowsXX_untilXrepeatXoutXcreatedXX_emitXhasXname_lopXXX_path_byXnameX();
@@ -361,9 +362,9 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
- public void g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name() {
+ public void g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX() {
// This traversal gets optimised by the RepeatUnrollStrategy
- final Traversal<Vertex, Path> traversal_unrolled = get_g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name();
+ final Traversal<Vertex, Path> traversal_unrolled = get_g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX();
final Path pathOriginal = traversal_unrolled.next();
assertFalse(traversal_unrolled.hasNext());
assertEquals(3, pathOriginal.size());
@@ -375,7 +376,7 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
g = g.withoutStrategies(RepeatUnrollStrategy.class);
- final Traversal<Vertex, Path> traversal = get_g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name();
+ final Traversal<Vertex, Path> traversal = get_g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX();
printTraversalForm(traversal);
final Path path = traversal.next();
assertFalse(traversal.hasNext());
@@ -565,9 +566,9 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, Path> get_g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name() {
+ public Traversal<Vertex, Path> get_g_V_repeatXout_repeatXout_order_byXname_descXX_timesX1XX_timesX1X_limitX1X_path_byXnameX() {
// NB We need to prevent the RepeatUnrollStrategy from applying to properly exercise this test as this traversal can be simplified
- return g.V().repeat(out().repeat(out()).times(1)).times(1).limit(1).path().by("name");
+ return g.V().repeat(out().repeat(out().order().by("name", Order.desc)).times(1)).times(1).limit(1).path().by("name");
}
@Override
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
index b41fe7096c..ca9ec86c75 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/OrderTest.java
@@ -79,7 +79,7 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
public abstract Traversal<Vertex, Map<Integer, Integer>> get_g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX(final Object v1Id);
- public abstract Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count_descX();
+ public abstract Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count_descX_byXnameX();
public abstract Traversal<Vertex, Map<String, List<Vertex>>> get_g_V_group_byXlabelX_byXname_order_byXdescX_foldX();
@@ -223,8 +223,8 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
@Test
@LoadGraphWith(MODERN)
- public void g_V_order_byXoutE_count_descX() {
- Arrays.asList(get_g_V_order_byXoutE_count_descX()).forEach(traversal -> {
+ public void g_V_order_byXoutE_count_descX_byXnameX() {
+ Arrays.asList(get_g_V_order_byXoutE_count_descX_byXnameX()).forEach(traversal -> {
printTraversalForm(traversal);
final List<Vertex> vertices = traversal.toList();
assertEquals(vertices.size(), 6);
@@ -557,8 +557,8 @@ public abstract class OrderTest extends AbstractGremlinProcessTest {
}
@Override
- public Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count_descX() {
- return g.V().order().by(outE().count(), desc);
+ public Traversal<Vertex, Vertex> get_g_V_order_byXoutE_count_descX_byXnameX() {
+ return g.V().order().by(outE().count(), desc).by("name");
}
@Override