This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/master by this push:
new 79cdfe7 Implemented some gherkin tests that were "unsupported" at one
point CTR
79cdfe7 is described below
commit 79cdfe756b9cb87a9a6ef94f489cb46af4312f1b
Author: Stephen Mallette <[email protected]>
AuthorDate: Wed Nov 24 14:08:39 2021 -0500
Implemented some gherkin tests that were "unsupported" at one point CTR
---
.../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 3 +
.../test/cucumber/feature-steps.js | 6 +-
.../gremlin-javascript/test/cucumber/gremlin.js | 3 +
gremlin-python/src/main/python/radish/gremlin.py | 3 +
gremlin-test/features/map/Order.feature | 172 ++++++++++++++++++++-
5 files changed, 180 insertions(+), 7 deletions(-)
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index 13216f0..6e236d8 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -507,6 +507,8 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
{"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)}},
+
{"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_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")}},
@@ -773,6 +775,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
{"g_withBulkXfalseX_withSackX1_sumX_VX1X_localXoutEXknowsX_barrierXnormSackX_inVX_inXknowsX_barrier_sack",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.WithBulk(false).WithSack(1.0,Operator.Sum).V(p["vid1"]).Local<object>(__.OutE("knows").Barrier(Barrier.NormSack).InV()).In("knows").Barrier().Sack<object>()}},
{"g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.WithBulk(false).WithSack(1,Operator.Sum).V().Out().Barrier().Sack<object>()}},
{"g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.WithSack(1.0,Operator.Sum).V(p["vid1"]).Local<object>(__.Out("knows").Barrier(Barrier.NormSack)).In("knows").Barrier().Sack<object>()}},
+
{"g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.WithSack(p["xx1"],Operator.Assign).V().Local<object>(__.Out("knows").Barrier(Barrier.NormSack)).In("knows").Barrier().Sack<object>()}},
{"g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.V().Has("age").GroupCount("a").By("name").Out().Cap<object>("a")}},
{"g_V_storeXa_nameX_out_capXaX", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.V().Store("a").By("name").Out().Cap<object>("a")}},
{"g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.V(p["vid1"]).Store("a").By("name").Out().Store("a").By("name").Values<object>("name").Cap<object>("a")}},
diff --git
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
index e9d39cf..dd5c562 100644
---
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
+++
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
@@ -248,7 +248,11 @@ function parseValue(stringValue) {
}
function toNumeric(stringValue) {
- return parseFloat(stringValue);
+ try {
+ return parseFloat(stringValue);
+ } catch (Error) {
+ return BigInt(stringValue);
+ }
}
function toVertex(name) {
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 546be42..ac0964c 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
@@ -496,6 +496,8 @@ const gremlins = {
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)
}],
+
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_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")
}],
@@ -762,6 +764,7 @@ const gremlins = {
g_withBulkXfalseX_withSackX1_sumX_VX1X_localXoutEXknowsX_barrierXnormSackX_inVX_inXknowsX_barrier_sack:
[function({g, vid1}) { return
g.withBulk(false).withSack(1.0,Operator.sum).V(vid1).local(__.outE("knows").barrier(Barrier.normSack).inV()).in_("knows").barrier().sack()
}],
g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack: [function({g}) {
return g.withBulk(false).withSack(1,Operator.sum).V().out().barrier().sack()
}],
g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack:
[function({g, vid1}) { return
g.withSack(1.0,Operator.sum).V(vid1).local(__.out("knows").barrier(Barrier.normSack)).in_("knows").barrier().sack()
}],
+
g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack:
[function({g, xx1}) { return
g.withSack(xx1,Operator.assign).V().local(__.out("knows").barrier(Barrier.normSack)).in_("knows").barrier().sack()
}],
g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX: [function({g}) { return
g.V().has("age").groupCount("a").by("name").out().cap("a") }],
g_V_storeXa_nameX_out_capXaX: [function({g}) { return
g.V().store("a").by("name").out().cap("a") }],
g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX: [function({g,
vid1}) { return
g.V(vid1).store("a").by("name").out().store("a").by("name").values("name").cap("a")
}],
diff --git a/gremlin-python/src/main/python/radish/gremlin.py
b/gremlin-python/src/main/python/radish/gremlin.py
index c32a762..df4e148 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -481,6 +481,8 @@ world.gremlins = {
'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))],
+
'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_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'))],
@@ -747,6 +749,7 @@ world.gremlins = {
'g_withBulkXfalseX_withSackX1_sumX_VX1X_localXoutEXknowsX_barrierXnormSackX_inVX_inXknowsX_barrier_sack':
[(lambda g,
vid1=None:g.withBulk(False).withSack(float(1.0),Operator.sum).V(vid1).local(__.outE('knows').barrier(Barrier.normSack).inV()).in_('knows').barrier().sack())],
'g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack': [(lambda
g:g.withBulk(False).withSack(1,Operator.sum).V().out().barrier().sack())],
'g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack':
[(lambda g,
vid1=None:g.withSack(float(1.0),Operator.sum).V(vid1).local(__.out('knows').barrier(Barrier.normSack)).in_('knows').barrier().sack())],
+
'g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack':
[(lambda g,
xx1=None:g.withSack(xx1,Operator.assign).V().local(__.out('knows').barrier(Barrier.normSack)).in_('knows').barrier().sack())],
'g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX': [(lambda
g:g.V().has('age').groupCount('a').by('name').out().cap('a'))],
'g_V_storeXa_nameX_out_capXaX': [(lambda
g:g.V().store('a').by('name').out().cap('a'))],
'g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX': [(lambda g,
vid1=None:g.V(vid1).store('a').by('name').out().store('a').by('name').name.cap('a'))],
diff --git a/gremlin-test/features/map/Order.feature
b/gremlin-test/features/map/Order.feature
index fde6fec..7fb57b2 100644
--- a/gremlin-test/features/map/Order.feature
+++ b/gremlin-test/features/map/Order.feature
@@ -340,18 +340,178 @@ Feature: Step - order()
| 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 an unsupported test
- Then nothing should happen because
+ Given the grateful graph
+ And the traversal of
"""
- TODO
+ 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 an unsupported test
- Then nothing should happen because
+ Given the grateful graph
+ And the traversal of
"""
- TODO
+ 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