You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ke...@apache.org on 2024/11/28 07:10:40 UTC
(tinkerpop) 01/03: Added feature tests for traversals that were missing gvalue coverage
This is an automated email from the ASF dual-hosted git repository.
kenhuuu pushed a commit to branch g2-param
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 65080baff7742947d6dec42d0b2969ede0e37e47
Author: Ken Hu <10...@users.noreply.github.com>
AuthorDate: Tue Nov 26 22:28:58 2024 -0800
Added feature tests for traversals that were missing gvalue coverage
---
gremlin-python/src/main/python/radish/gremlin.py | 44 +++++++++++++++-------
.../gremlin/test/features/filter/Coin.feature | 17 +++++++++
.../gremlin/test/features/filter/Has.feature | 13 +++++++
.../gremlin/test/features/filter/HasId.feature | 29 ++++++++++++++
.../gremlin/test/features/filter/HasLabel.feature | 17 +++++++++
.../gremlin/test/features/map/AddEdge.feature | 18 ++++++++-
.../gremlin/test/features/map/Combine.feature | 10 +++++
.../gremlin/test/features/map/Difference.feature | 10 +++++
.../gremlin/test/features/map/Disjunct.feature | 10 +++++
.../gremlin/test/features/map/Edge.feature | 15 +++++++-
.../gremlin/test/features/map/Intersect.feature | 10 +++++
.../gremlin/test/features/map/MergeEdge.feature | 29 ++++++++++++++
.../gremlin/test/features/map/MergeVertex.feature | 33 ++++++++++++++++
.../gremlin/test/features/map/Product.feature | 10 +++++
14 files changed, 249 insertions(+), 16 deletions(-)
diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py
index a2db50be54..3385d0f6a7 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -138,6 +138,7 @@ world.gremlins = {
'g_injectXnull_nullX_anyXeqXnullXX': [(lambda g, xx1=None:g.inject(xx1).any_(P.eq(None)))],
'g_injectX3_threeX_anyXeqX3XX': [(lambda g, xx1=None:g.inject(xx1).any_(P.eq(3)))],
'g_V_coinX1X': [(lambda g:g.V().coin(1.0))],
+ 'g_V_coinX1varX': [(lambda g, xx1=None:g.V().coin(xx1))],
'g_V_coinX0X': [(lambda g:g.V().coin(0.0))],
'g_withStrategiesXSeedStrategyX_V_order_byXnameX_coinX50X': [(lambda g:g.with_strategies(SeedStrategy(seed=999999)).V().order().by('name').coin(0.5))],
'g_VX1X_outXcreatedX_inXcreatedX_cyclicPath': [(lambda g, vid1=None:g.V(vid1).out('created').in_('created').cyclic_path())],
@@ -202,6 +203,7 @@ world.gremlins = {
'g_V_hasXage_isXgt_30XX': [(lambda g:g.V().has('age', __.is_(P.gt(30))))],
'g_V_hasXlabel_isXsoftwareXX': [(lambda g:g.V().has(T.label, __.is_('software')))],
'g_VX1X_hasXage_gt_30X': [(lambda g, vid1=None:g.V(vid1).has('age', P.gt(30)))],
+ 'g_V_hasXpersonvar_age_gt_30X': [(lambda g, xx1=None:g.V().has(xx1, 'age', P.gt(30)))],
'g_VX4X_hasXage_gt_30X': [(lambda g, vid4=None:g.V(vid4).has('age', P.gt(30)))],
'g_VXv1X_hasXage_gt_30X': [(lambda g, v1=None:g.V(v1).has('age', P.gt(30)))],
'g_VXv4X_hasXage_gt_30X': [(lambda g, v4=None:g.V(v4).has('age', P.gt(30)))],
@@ -251,6 +253,8 @@ world.gremlins = {
'g_V_hasIdXnullX': [(lambda g:g.V().has_id(None))],
'g_V_hasIdXeqXnullXX': [(lambda g:g.V().has_id(P.eq(None)))],
'g_V_hasIdX2_nullX': [(lambda g, vid2=None:g.V().has_id(vid2, None))],
+ 'g_V_hasIdXmarkovar_vadasvarX': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1, vid2))],
+ 'g_V_hasIdXmarkovar_vadasvar_petervarX': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1, vid2))],
'g_V_hasIdX2AsString_nullX': [(lambda g, vid2=None:g.V().has_id(vid2, None))],
'g_V_hasIdX1AsString_2AsString_nullX': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1, vid2, None))],
'g_V_hasIdXnull_2X': [(lambda g, vid2=None:g.V().has_id(None, vid2))],
@@ -277,6 +281,7 @@ world.gremlins = {
'g_E_hasLabelXknowsX': [(lambda g:g.E().has_label('knows'))],
'g_E_hasLabelXuses_traversesX': [(lambda g:g.E().has_label('uses', 'traverses'))],
'g_V_hasLabelXperson_software_blahX': [(lambda g:g.V().has_label('person', 'software', 'blah'))],
+ 'g_V_hasLabelXperson_softwarevarX': [(lambda g, xx1=None:g.V().has_label('person', xx1))],
'g_V_hasLabelXpersonX_hasLabelXsoftwareX': [(lambda g:g.V().has_label('person').has_label('software'))],
'g_V_hasLabelXpersonvarX_hasLabelXsoftwareX': [(lambda g, xx1=None:g.V().has_label(xx1).has_label('software'))],
'g_V_hasLabelXpersonvar_softwarevarX': [(lambda g, xx1=None,xx2=None:g.V().has_label(xx1, xx2))],
@@ -574,6 +579,7 @@ world.gremlins = {
'g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X': [(lambda g, v6=None,xx1=None,v1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add_v('person') [...]
'g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g:g.add_e('knows').property('weight', None).from_(__.V().has('name', 'marko')).to(__.V().has('name', 'vadas'))), (lambda g:g.E().has('knows', 'weight', None))],
'g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g, xx1=None:g.add_e(xx1).property('weight', None).from_(__.V().has('name', 'marko')).to(__.V().has('name', 'vadas'))), (lambda g, xx1=None:g.E().has('knows', 'weight', None))],
+ 'g_unionXaddEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g, xx1=None:g.union(__.add_e(xx1).property('weight', 1).from_(__.V().has('name', 'marko')).to(__.V().has('name', 'vadas')))), (lambda g, xx1=None:g.E().has('knows', 'weight', 1))],
'g_VX1X_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX': [(lambda g, vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add [...]
'g_V_addVXanimalX_propertyXage_0X': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add_v('person').property('name', 'peter').property('ag [...]
'g_V_addVXanimalvarX_propertyXage_0varX': [(lambda g, xx1=None,xx2=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add_v('person').property('nam [...]
@@ -659,6 +665,7 @@ world.gremlins = {
'g_V_fold_combineXconstantXnullXX': [(lambda g:g.V().fold().combine(__.constant(None)))],
'g_V_fold_combineXVX': [(lambda g:g.V().fold().combine(__.V()))],
'g_V_valuesXnameX_fold_combineX2X': [(lambda g:g.V().values('name').fold().combine(2))],
+ 'g_V_valuesXnameX_fold_combineX2varX': [(lambda g, xx1=None:g.V().values('name').fold().combine(xx1))],
'g_V_valuesXnameX_fold_combineXnullX': [(lambda g:g.V().values('name').fold().combine(None))],
'g_V_valuesXnonexistantX_fold_combineXV_valuesXnameX_foldX_unfold': [(lambda g:g.V().values('nonexistant').fold().combine(__.V().values('name').fold()).unfold())],
'g_V_valuesXnameX_fold_combineXV_valuesXnonexistantX_foldX_unfold': [(lambda g:g.V().values('name').fold().combine(__.V().values('nonexistant').fold()).unfold())],
@@ -735,6 +742,7 @@ world.gremlins = {
'g_V_fold_differenceXconstantXnullXX': [(lambda g:g.V().fold().difference(__.constant(None)))],
'g_V_fold_differenceXVX': [(lambda g:g.V().fold().difference(__.V()))],
'g_V_valuesXnameX_fold_differenceX2X': [(lambda g:g.V().values('name').fold().difference(2))],
+ 'g_V_valuesXnameX_fold_differenceX2varX': [(lambda g, xx1=None:g.V().values('name').fold().difference(xx1))],
'g_V_valuesXnameX_fold_differenceXnullX': [(lambda g:g.V().values('name').fold().difference(None))],
'g_V_valuesXnonexistantX_fold_differenceXV_valuesXnameX_foldX': [(lambda g:g.V().values('nonexistant').fold().difference(__.V().values('name').fold()))],
'g_V_valuesXnameX_fold_differenceXV_valuesXnonexistantX_foldX': [(lambda g:g.V().values('name').fold().difference(__.V().values('nonexistant').fold()))],
@@ -754,6 +762,7 @@ world.gremlins = {
'g_V_fold_disjunctXconstantXnullXX': [(lambda g:g.V().fold().disjunct(__.constant(None)))],
'g_V_fold_disjunctXVX': [(lambda g:g.V().fold().disjunct(__.V()))],
'g_V_valuesXnameX_fold_disjunctX2X': [(lambda g:g.V().values('name').fold().disjunct(2))],
+ 'g_V_valuesXnameX_fold_disjunctX3varX': [(lambda g, xx1=None:g.V().values('name').fold().disjunct(xx1))],
'g_V_valuesXnameX_fold_disjunctXnullX': [(lambda g:g.V().values('name').fold().disjunct(None))],
'g_V_valuesXnonexistantX_fold_disjunctXV_valuesXnameX_foldX': [(lambda g:g.V().values('nonexistant').fold().disjunct(__.V().values('name').fold()))],
'g_V_valuesXnameX_fold_disjunctXV_valuesXnonexistantX_foldX': [(lambda g:g.V().values('name').fold().disjunct(__.V().values('nonexistant').fold()))],
@@ -792,6 +801,7 @@ world.gremlins = {
'g_VX1X_outEXknows_createdX_inV': [(lambda g, vid1=None:g.V(vid1).out_e('knows', 'created').in_v())],
'g_VX1X_outEXknowsX_bothV': [(lambda g, vid1=None:g.V(vid1).out_e('knows').both_v())],
'g_VX1X_outEXknowsX_bothV_name': [(lambda g, vid1=None:g.V(vid1).out_e('knows').both_v().values('name'))],
+ 'g_V_toEXout_knowsvarX_valuesXweightX': [(lambda g, xx1=None:g.V().to_e(Direction.OUT, xx1).values('weight'))],
'g_VX1X_properties_element': [(lambda g, v2=None:g.V(v2).properties().element().limit(1))],
'g_V_properties_element': [(lambda g:g.V().properties().element())],
'g_V_propertiesXageX_element': [(lambda g:g.V().properties('age').element())],
@@ -834,6 +844,7 @@ world.gremlins = {
'g_V_fold_intersectXconstantXnullXX': [(lambda g:g.V().fold().intersect(__.constant(None)))],
'g_V_fold_intersectXVX': [(lambda g:g.V().fold().intersect(__.V()))],
'g_V_valuesXnameX_fold_intersectX2X': [(lambda g:g.V().values('name').fold().intersect(2))],
+ 'g_V_valuesXnameX_fold_intersectX5varX': [(lambda g, xx1=None:g.V().values('name').fold().intersect(xx1))],
'g_V_valuesXnameX_fold_intersectXnullX': [(lambda g:g.V().values('name').fold().intersect(None))],
'g_V_valuesXnonexistantX_fold_intersectXV_valuesXnameX_foldX': [(lambda g:g.V().values('nonexistant').fold().intersect(__.V().values('name').fold()))],
'g_V_valuesXnameX_fold_intersectXV_valuesXnonexistantX_foldX': [(lambda g:g.V().values('name').fold().intersect(__.V().values('nonexistant').fold()))],
@@ -846,13 +857,6 @@ world.gremlins = {
'g_injectXa_null_bX_intersectXa_cX': [(lambda g, xx1=None,xx2=None:g.inject(xx1).intersect(xx2))],
'g_injectXa_null_bX_intersectXa_null_cX': [(lambda g, xx1=None,xx2=None:g.inject(xx1).intersect(xx2))],
'g_injectX3_threeX_intersectXfive_three_7X': [(lambda g, xx1=None,xx2=None:g.inject(xx1).intersect(xx2))],
- 'g_injectX__feature___test__nullX_lTrim': [(lambda g:g.inject(' feature', ' one test', None, '', ' ', ' abc', 'abc ', ' abc ', ' ').l_trim())],
- 'g_injectX__feature___test__nullX_lTrimXlocalX': [(lambda g:g.inject([' feature ', ' one test ', None, '', ' ', ' abc', 'abc ', ' abc ', ' ']).l_trim(Scope.local))],
- 'g_injectX__feature__X_lTrim': [(lambda g:g.inject(' feature ').l_trim())],
- 'g_injectXListXa_bXX_lTrim': [(lambda g, xx1=None:g.inject(xx1).l_trim())],
- 'g_injectXListX1_2XX_lTrimXlocalX': [(lambda g, xx1=None:g.inject(xx1).l_trim(Scope.local))],
- 'g_V_valuesXnameX_lTrim': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name', 'peter').proper [...]
- 'g_V_valuesXnameX_order_fold_lTrimXlocalX': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name [...]
'g_injectXfeature_test_nullX_length': [(lambda g:g.inject('feature', 'test', None).length())],
'g_injectXfeature_test_nullX_lengthXlocalX': [(lambda g:g.inject('feature', 'test', None).length(Scope.local))],
'g_injectXListXa_bXX_length': [(lambda g, xx1=None:g.inject(xx1).length())],
@@ -862,6 +866,13 @@ world.gremlins = {
'g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX': [(lambda g, vid1=None:g.V(vid1).repeat(__.both().simple_path()).until(__.has('name', 'peter').or_().loops().is_(2)).has('name', 'peter').path().by('name'))],
'g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX': [(lambda g, vid1=None:g.V(vid1).repeat(__.both().simple_path()).until(__.has('name', 'peter').and_().loops().is_(3)).has('name', 'peter').path().by('name'))],
'g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX': [(lambda g:g.V().emit(__.has('name', 'marko').or_().loops().is_(2)).repeat(__.out()).values('name'))],
+ 'g_injectX__feature___test__nullX_lTrim': [(lambda g:g.inject(' feature', ' one test', None, '', ' ', ' abc', 'abc ', ' abc ', ' ').l_trim())],
+ 'g_injectX__feature___test__nullX_lTrimXlocalX': [(lambda g:g.inject([' feature ', ' one test ', None, '', ' ', ' abc', 'abc ', ' abc ', ' ']).l_trim(Scope.local))],
+ 'g_injectX__feature__X_lTrim': [(lambda g:g.inject(' feature ').l_trim())],
+ 'g_injectXListXa_bXX_lTrim': [(lambda g, xx1=None:g.inject(xx1).l_trim())],
+ 'g_injectXListX1_2XX_lTrimXlocalX': [(lambda g, xx1=None:g.inject(xx1).l_trim(Scope.local))],
+ 'g_V_valuesXnameX_lTrim': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name', 'peter').proper [...]
+ 'g_V_valuesXnameX_order_fold_lTrimXlocalX': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name [...]
'g_VX1X_mapXnameX': [], # skipping as it contains a lambda
'g_VX1X_outE_label_mapXlengthX': [], # skipping as it contains a lambda
'g_VX1X_out_mapXnameX_mapXlengthX': [], # skipping as it contains a lambda
@@ -982,6 +993,8 @@ world.gremlins = {
'g_V_mergeEXemptyX_two_exist': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_v('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_V_mergeE_inlineXemptyX_two_exist': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g:g.V().as_('v').merge_e({ T.label: 'self', Direction.OUT: Merge.out_v, Direction.IN: Merge.in_v }).option(Merge.out_v, __.select('v')).option(Merge.in_v, __.select('v'))), (lambda g:g.E()), (lambda g:g.V())],
'g_mergeEXnullX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_e(None))],
+ 'g_mergeEXnullvarX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.merge_e(xx1))],
+ 'g_V_limitX1X_mergeEXnullvarX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29)), (lambda g, xx1=None:g.V().limit(1).merge_e(xx1))],
'g_V_mergeEXnullX': [(lambda g:g.add_v('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.add_v('person').property('name', 'marko').add_v('person').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.add_v('person').property('name', 'marko').add_v('person').property('name', 'vadas')), (lambda g, xx1=None:g.with_side_effect('a', xx1).merge_e(__.select('a'))), (lambda g, xx1=None:g.V().has('person', 'name', 'marko').out('knows').has('person', 'name', 'vadas'))],
@@ -1033,6 +1046,7 @@ world.gremlins = {
'g_mergeVXemptyX': [(lambda g:g.add_v('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.add_v('person').property('name', 'marko').property('age', 29).add_v('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.add_v('person').property('name', 'marko').property('age', 29)), (lambda g:g.merge_v(None)), (lambda g:g.V())],
+ 'g_mergeVXnullvarX': [(lambda g, xx1=None:g.merge_v(xx1)), (lambda g, xx1=None:g.V())],
'g_V_mergeVXnullX': [(lambda g:g.add_v('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.add_v('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.add_v('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'))],
@@ -1074,6 +1088,7 @@ world.gremlins = {
'g_mergeVXname_markoX_optionXonMatch_age_singleX33XX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'age': CardinalityValue.single(33) })), (lambda g:g.V().has('person', 'name', 'marko').has('age', 33)), (lambda g:g.V().has('person', 'name', 'marko').has('age')), (lambda g:g.V().has('person', [...]
'g_mergeVXname_markoX_optionXonMatch_age_33_singleX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'age': 33 }, Cardinality.single)), (lambda g:g.V().has('person', 'name', 'marko').has('age', 33)), (lambda g:g.V().has('person', 'name', 'marko').has('age')), (lambda g:g.V().has('person', 'name [...]
'g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'name': 'allen', 'age': CardinalityValue.set_(31) }, Cardinality.single)), (lambda g:g.V().has('person', 'name', 'marko')), (lambda g:g.V().has('person', 'name', 'allen').has('ag [...]
+ 'g_mergeVXname_markoX_optionXonMatch_name_allen_var_singleX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko')), (lambda g, xx1=None:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, xx1, Cardinality.single)), (lambda g, xx1=None:g.V().has('person', 'name', 'marko')), (lambda g, xx1=None:g.V().has('person', 'name', 'allen'))],
'g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX': [(lambda g:g.add_v('person').property('name', 'marko').property(Cardinality.list_, 'age', 29).property(Cardinality.list_, 'age', 31).property(Cardinality.list_, 'age', 32)), (lambda g:g.merge_v({ 'name': 'marko' }).option(Merge.on_match, { 'name': 'allen', 'age': CardinalityValue.single(31) }, Cardinality.single)), (lambda g:g.V().has('person', 'name', 'marko')), (lambda g:g.V().has('person', 'name', 'allen').ha [...]
'g_mergeVXname_aliceX_optionXonCreate_age_singleX81XX': [(lambda g:g.merge_v({ 'name': 'alice', T.label: 'person' }).option(Merge.on_create, { 'age': CardinalityValue.single(81) })), (lambda g:g.V().has('person', 'name', 'alice').has('age', 81)), (lambda g:g.V().has('person', 'name', 'alice').has('age')), (lambda g:g.V().has('person', 'name', 'alice').properties('age'))],
'g_mergeVXname_aliceX_optionXonCreate_age_setX81XX': [(lambda g:g.merge_v({ 'name': 'alice', T.label: 'person' }).option(Merge.on_create, { 'age': CardinalityValue.set_(81) })), (lambda g:g.V().has('person', 'name', 'alice').has('age', 81)), (lambda g:g.V().has('person', 'name', 'alice').has('age')), (lambda g:g.V().has('person', 'name', 'alice').properties('age'))],
@@ -1157,6 +1172,7 @@ world.gremlins = {
'g_V_fold_productXconstantXnullXX': [(lambda g:g.V().fold().product(__.constant(None)))],
'g_V_fold_productXVX': [(lambda g:g.V().fold().product(__.V()))],
'g_V_valuesXnameX_fold_productX2X': [(lambda g:g.V().values('name').fold().product(2))],
+ 'g_V_valuesXnameX_fold_productX7varX': [(lambda g, xx1=None:g.V().values('name').fold().product(xx1))],
'g_V_valuesXnameX_fold_productXnullX': [(lambda g:g.V().values('name').fold().product(None))],
'g_V_valuesXnonexistantX_fold_productXV_valuesXnameX_foldX': [(lambda g:g.V().values('nonexistant').fold().product(__.V().values('name').fold()))],
'g_V_valuesXnameX_fold_productXV_valuesXnonexistantX_foldX': [(lambda g:g.V().values('name').fold().product(__.V().values('nonexistant').fold()))],
@@ -1179,13 +1195,6 @@ world.gremlins = {
'g_V_hasXageX_propertiesXage_nameX_value': [(lambda g:g.V().has('age').properties('age', 'name').value())],
'g_V_propertiesXname_age_nullX_value': [(lambda g:g.V().properties('name', 'age', None).value())],
'g_V_valuesXname_age_nullX': [(lambda g:g.V().values('name', 'age', None))],
- 'g_injectX__feature___test__nullX_rTrim': [(lambda g:g.inject('feature ', 'one test ', None, '', ' ', ' abc', 'abc ', ' abc ', ' ').r_trim())],
- 'g_injectX__feature___test__nullX_rTrimXlocalX': [(lambda g:g.inject([' feature ', ' one test ', None, '', ' ', ' abc', 'abc ', ' abc ', ' ']).r_trim(Scope.local))],
- 'g_injectX__feature__X_rTrim': [(lambda g:g.inject(' feature ').r_trim())],
- 'g_injectXListXa_bXX_rTrim': [(lambda g, xx1=None:g.inject(xx1).r_trim())],
- 'g_injectXListX1_2XX_rTrimXlocalX': [(lambda g, xx1=None:g.inject(xx1).r_trim(Scope.local))],
- 'g_V_valuesXnameX_rTrim': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name', 'peter').proper [...]
- 'g_V_valuesXnameX_order_fold_rTrimXlocalX': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name [...]
'g_injectXthat_this_test_nullX_replaceXh_jX': [(lambda g:g.inject('that', 'this', 'test', None).replace('h', 'j'))],
'g_injectXthat_this_test_nullX_fold_replaceXlocal_h_jX': [(lambda g:g.inject('that', 'this', 'test', None).fold().replace(Scope.local, 'h', 'j'))],
'g_injectXListXa_bXcX_replaceXa_bX': [(lambda g, xx1=None:g.inject(xx1).replace('a', 'b'))],
@@ -1202,6 +1211,13 @@ world.gremlins = {
'g_injectXnullX_reverse': [(lambda g:g.inject(None).reverse())],
'g_injectXbX_reverse': [(lambda g:g.inject('b').reverse())],
'g_injectX3_threeX_reverse': [(lambda g, xx1=None:g.inject(xx1).reverse())],
+ 'g_injectX__feature___test__nullX_rTrim': [(lambda g:g.inject('feature ', 'one test ', None, '', ' ', ' abc', 'abc ', ' abc ', ' ').r_trim())],
+ 'g_injectX__feature___test__nullX_rTrimXlocalX': [(lambda g:g.inject([' feature ', ' one test ', None, '', ' ', ' abc', 'abc ', ' abc ', ' ']).r_trim(Scope.local))],
+ 'g_injectX__feature__X_rTrim': [(lambda g:g.inject(' feature ').r_trim())],
+ 'g_injectXListXa_bXX_rTrim': [(lambda g, xx1=None:g.inject(xx1).r_trim())],
+ 'g_injectXListX1_2XX_rTrimXlocalX': [(lambda g, xx1=None:g.inject(xx1).r_trim(Scope.local))],
+ 'g_V_valuesXnameX_rTrim': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name', 'peter').proper [...]
+ 'g_V_valuesXnameX_order_fold_rTrimXlocalX': [(lambda g:g.add_v('person').property('name', ' marko ').property('age', 29).as_('marko').add_v('person').property('name', ' vadas ').property('age', 27).as_('vadas').add_v('software').property('name', ' lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh ').property('age', 32).as_('josh').add_v('software').property('name', ' ripple ').property('lang', 'java').as_('ripple').add_v('person').property('name [...]
'g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX': [(lambda g, vid1=None:g.V(vid1).as_('a').out('knows').as_('b').select('a', 'b'))],
'g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX_byXnameX': [(lambda g, vid1=None:g.V(vid1).as_('a').out('knows').as_('b').select('a', 'b').by('name'))],
'g_VX1X_asXaX_outXknowsX_asXbX_selectXaX': [(lambda g, vid1=None:g.V(vid1).as_('a').out('knows').as_('b').select('a'))],
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Coin.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Coin.feature
index fd007fb320..8ba4265b8c 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Coin.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Coin.feature
@@ -34,6 +34,23 @@ Feature: Step - coin()
| v[ripple] |
| v[peter] |
+ Scenario: g_V_coinX1varX
+ Given the modern graph
+ And using the parameter xx1 defined as "d[1.0].d"
+ And the traversal of
+ """
+ g.V().coin(xx1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[marko] |
+ | v[vadas] |
+ | v[lop] |
+ | v[josh] |
+ | v[ripple] |
+ | v[peter] |
+
Scenario: g_V_coinX0X
Given the modern graph
And the traversal of
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Has.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Has.feature
index 42059bccdb..2cb5e0bab1 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Has.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/Has.feature
@@ -153,6 +153,19 @@ Feature: Step - has()
When iterated to list
Then the result should be empty
+ Scenario: g_V_hasXpersonvar_age_gt_30X
+ Given the modern graph
+ And using the parameter xx1 defined as "person"
+ And the traversal of
+ """
+ g.V().has(xx1, "age", P.gt(30))
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[peter] |
+ | v[josh] |
+
Scenario: g_VX4X_hasXage_gt_30X
Given the modern graph
And using the parameter vid4 defined as "v[josh].id"
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasId.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasId.feature
index 2cb6992510..0fd1de7e52 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasId.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasId.feature
@@ -93,6 +93,35 @@ Feature: Step - hasId()
| result |
| v[vadas] |
+ Scenario: g_V_hasIdXmarkovar_vadasvarX
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And using the parameter vid2 defined as "v[vadas].id"
+ And the traversal of
+ """
+ g.V().hasId(vid1, vid2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[marko] |
+ | v[vadas] |
+
+ Scenario: g_V_hasIdXmarkovar_vadasvar_petervarX
+ Given the modern graph
+ And using the parameter vid1 defined as "v[marko].id"
+ And using the parameter vid2 defined as "l[v[vadas].id,v[peter].id]"
+ And the traversal of
+ """
+ g.V().hasId(vid1, vid2)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[marko] |
+ | v[vadas] |
+ | v[peter] |
+
Scenario: g_V_hasIdX2AsString_nullX
Given the modern graph
And using the parameter vid2 defined as "v[vadas].sid"
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasLabel.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasLabel.feature
index 2da655e7e6..c9484790ca 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasLabel.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/filter/HasLabel.feature
@@ -78,6 +78,23 @@ Feature: Step - hasLabel()
| v[lop] |
| v[ripple] |
+ Scenario: g_V_hasLabelXperson_softwarevarX
+ Given the modern graph
+ And using the parameter xx1 defined as "software"
+ And the traversal of
+ """
+ g.V().hasLabel("person",xx1)
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[marko] |
+ | v[vadas] |
+ | v[josh] |
+ | v[peter] |
+ | v[lop] |
+ | v[ripple] |
+
Scenario: g_V_hasLabelXpersonX_hasLabelXsoftwareX
Given the modern graph
And the traversal of
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature
index b2cd709619..827eaa6dc6 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature
@@ -479,4 +479,20 @@ Feature: Step - addE()
"""
When iterated to list
Then the result should have a count of 1
- And the graph should return 1 for count of "g.E().has(\"knows\",\"weight\",null)"
\ No newline at end of file
+ And the graph should return 1 for count of "g.E().has(\"knows\",\"weight\",null)"
+
+ Scenario: g_unionXaddEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXXX
+ Given the empty graph
+ And the graph initializer of
+ """
+ g.addV("person").property("name", "marko").property("age", 29).
+ addV("person").property("name", "vadas").property("age", 27)
+ """
+ And using the parameter xx1 defined as "knows"
+ And the traversal of
+ """
+ g.union(addE(xx1).property("weight", 1).from(V().has("name","marko")).to(V().has("name","vadas")))
+ """
+ When iterated to list
+ Then the result should have a count of 1
+ And the graph should return 1 for count of "g.E().has(\"knows\",\"weight\", 1)"
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature
index f40f5cbe51..d09a295406 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Combine.feature
@@ -66,6 +66,16 @@ Feature: Step - combine()
When iterated to list
Then the traversal will raise an error with message containing text of "combine step can only take an array or an Iterable as an argument, encountered"
+ Scenario: g_V_valuesXnameX_fold_combineX2varX
+ Given the modern graph
+ And using the parameter xx1 defined as "2"
+ And the traversal of
+ """
+ g.V().values("name").fold().combine(xx1)
+ """
+ When iterated to list
+ Then the traversal will raise an error with message containing text of "combine step can only take an array or an Iterable as an argument, encountered"
+
Scenario: g_V_valuesXnameX_fold_combineXnullX
Given the modern graph
And the traversal of
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Difference.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Difference.feature
index 18d5043f3c..67e871cbbc 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Difference.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Difference.feature
@@ -66,6 +66,16 @@ Feature: Step - difference()
When iterated to list
Then the traversal will raise an error with message containing text of "difference step can only take an array or an Iterable as an argument, encountered"
+ Scenario: g_V_valuesXnameX_fold_differenceX2varX
+ Given the modern graph
+ And using the parameter xx1 defined as "2"
+ And the traversal of
+ """
+ g.V().values("name").fold().difference(xx1)
+ """
+ When iterated to list
+ Then the traversal will raise an error with message containing text of "difference step can only take an array or an Iterable as an argument, encountered"
+
Scenario: g_V_valuesXnameX_fold_differenceXnullX
Given the modern graph
And the traversal of
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Disjunct.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Disjunct.feature
index e6fcee1535..90fcafdd3a 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Disjunct.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Disjunct.feature
@@ -66,6 +66,16 @@ Feature: Step - disjunct()
When iterated to list
Then the traversal will raise an error with message containing text of "disjunct step can only take an array or an Iterable as an argument, encountered"
+ Scenario: g_V_valuesXnameX_fold_disjunctX3varX
+ Given the modern graph
+ And using the parameter xx1 defined as "3"
+ And the traversal of
+ """
+ g.V().values("name").fold().disjunct(xx1)
+ """
+ When iterated to list
+ Then the traversal will raise an error with message containing text of "disjunct step can only take an array or an Iterable as an argument, encountered"
+
Scenario: g_V_valuesXnameX_fold_disjunctXnullX
Given the modern graph
And the traversal of
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Edge.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Edge.feature
index 7d75a251af..c1c8ded961 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Edge.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Edge.feature
@@ -355,4 +355,17 @@ Feature: Step - E(), inV(), outV(), bothV(), otherV()
| marko |
| marko |
| josh |
- | vadas |
\ No newline at end of file
+ | vadas |
+
+ Scenario: g_V_toEXout_knowsvarX_valuesXweightX
+ Given the modern graph
+ And using the parameter xx1 defined as "knows"
+ And the traversal of
+ """
+ g.V().toE(Direction.OUT, xx1).values("weight")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[0.5].d |
+ | d[1.0].d |
\ No newline at end of file
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature
index c6b44844f0..37ba287a20 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Intersect.feature
@@ -66,6 +66,16 @@ Feature: Step - intersect()
When iterated to list
Then the traversal will raise an error with message containing text of "intersect step can only take an array or an Iterable as an argument, encountered"
+ Scenario: g_V_valuesXnameX_fold_intersectX5varX
+ Given the modern graph
+ And using the parameter xx1 defined as "5"
+ And the traversal of
+ """
+ g.V().values("name").fold().intersect(xx1)
+ """
+ When iterated to list
+ Then the traversal will raise an error with message containing text of "intersect step can only take an array or an Iterable as an argument, encountered"
+
Scenario: g_V_valuesXnameX_fold_intersectXnullX
Given the modern graph
And the traversal of
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeEdge.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeEdge.feature
index c14e86883d..d458d14e58 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeEdge.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeEdge.feature
@@ -86,6 +86,7 @@ Feature: Step - mergeE()
# - vertices already exists
# - results in two new edges
# g_mergeEXnullX
+ # g_mergeEXnullvarX
# g_V_mergeEXnullX
# - mergeE(null) and no option
# - vertices already exists
@@ -273,6 +274,34 @@ Feature: Step - mergeE()
When iterated to list
Then the traversal will raise an error with message containing text of "Out Vertex not specified"
+ Scenario: g_mergeEXnullvarX
+ Given the empty graph
+ And the graph initializer of
+ """
+ g.addV("person").property("name", "marko").property("age", 29)
+ """
+ And using the parameter xx1 defined as "null"
+ And the traversal of
+ """
+ g.mergeE(xx1)
+ """
+ When iterated to list
+ Then the traversal will raise an error with message containing text of "Out Vertex not specified"
+
+ Scenario: g_V_limitX1X_mergeEXnullvarX
+ Given the empty graph
+ And the graph initializer of
+ """
+ g.addV("person").property("name", "marko").property("age", 29)
+ """
+ And using the parameter xx1 defined as "null"
+ And the traversal of
+ """
+ g.V().limit(1).mergeE(xx1)
+ """
+ When iterated to list
+ Then the traversal will raise an error with message containing text of "Out Vertex not specified"
+
# Directions not specified
@GremlinLangScriptOnly
Scenario: g_V_mergeEXnullX
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeVertex.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeVertex.feature
index 5cd3670e86..07eacdc3c1 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeVertex.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeVertex.feature
@@ -65,6 +65,7 @@ Feature: Step - mergeV()
# - mergeV(Map) with no option() - testing child traversal usage
# - results in one new vertex and one existing vertex that was just created
# g_mergeVXnullX
+ # g_mergeVXnullvarX
# g_V_mergeVXnullX
# - mergeV(null) with no option()
# - results in no new vertex and nothing returned
@@ -292,6 +293,22 @@ Feature: Step - mergeV()
Then the result should have a count of 1
And the graph should return 1 for count of "g.V()"
+ @GremlinLangScriptOnly
+ Scenario: g_mergeVXnullvarX
+ Given the empty graph
+ And the graph initializer of
+ """
+ g.addV("person").property("name", "marko").property("age", 29)
+ """
+ And using the parameter xx1 defined as "null"
+ And the traversal of
+ """
+ g.mergeV(xx1)
+ """
+ When iterated to list
+ Then the result should have a count of 1
+ And the graph should return 1 for count of "g.V()"
+
@GremlinLangScriptOnly
Scenario: g_V_mergeVXnullX
Given the empty graph
@@ -945,6 +962,22 @@ Feature: Step - mergeV()
And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"allen\").has(\"age\")"
And the graph should return 3 for count of "g.V().has(\"person\",\"name\",\"allen\").properties(\"age\")"
+ Scenario: g_mergeVXname_markoX_optionXonMatch_name_allen_var_singleX
+ Given the empty graph
+ And the graph initializer of
+ """
+ g.addV("person").property("name", "marko")
+ """
+ And using the parameter xx1 defined as "m[{\"name\":\"allen\"}]"
+ And the traversal of
+ """
+ g.mergeV([name: "marko"]).option(Merge.onMatch, xx1, single)
+ """
+ When iterated to list
+ Then the result should have a count of 1
+ And the graph should return 0 for count of "g.V().has(\"person\",\"name\",\"marko\")"
+ And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"allen\")"
+
@MultiProperties
Scenario: g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX
Given the empty graph
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Product.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Product.feature
index 5c12867440..a16c62bae2 100644
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Product.feature
+++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/Product.feature
@@ -66,6 +66,16 @@ Feature: Step - product()
When iterated to list
Then the traversal will raise an error with message containing text of "product step can only take an array or an Iterable as an argument, encountered"
+ Scenario: g_V_valuesXnameX_fold_productX7varX
+ Given the modern graph
+ And using the parameter xx1 defined as "7"
+ And the traversal of
+ """
+ g.V().values("name").fold().product(xx1)
+ """
+ When iterated to list
+ Then the traversal will raise an error with message containing text of "product step can only take an array or an Iterable as an argument, encountered"
+
Scenario: g_V_valuesXnameX_fold_productXnullX
Given the modern graph
And the traversal of