This is an automated email from the ASF dual-hosted git repository. Cole-Greer pushed a commit to branch 3.8-dev in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit d23736b409db8850e993fa9e7b3980d0896ade84 Merge: b89e00b901 c81f7c343f Author: Cole Greer <[email protected]> AuthorDate: Thu Jul 23 13:51:09 2026 -0700 Merge branch '3.7-dev' into 3.8-dev CHANGELOG.asciidoc | 2 ++ .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 6 ++++ gremlin-go/driver/cucumber/gremlin.go | 1 + gremlin-go/driver/graphBinary.go | 2 +- gremlin-go/driver/graphBinary_test.go | 28 ++++++++++++++++ .../gremlin-javascript/test/cucumber/gremlin.js | 1 + .../gremlin_python/structure/io/graphbinaryV1.py | 18 ++++------- .../src/main/python/tests/feature/gremlin.py | 1 + .../python/tests/unit/io/test_graphbinaryV1.py | 37 ++++++++++++++++++++++ .../test/features/sideEffect/Inject.feature | 16 +++++++++- 10 files changed, 99 insertions(+), 13 deletions(-) diff --cc gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs index 7f815650d1,ba2f9ab357..fc64d89fe9 --- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs +++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs @@@ -2014,73 -1516,42 +2014,79 @@@ namespace Gremlin.Net.IntegrationTest.G {"g_V_outXcreatedX_name_groupCountXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").Values<object>("name").GroupCount("a").Cap<object>("a")}}, {"g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Out().GroupCount("a").By("name")).Times(2).Cap<object>("a")}}, {"g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().GroupCount("a").By(T.Label).As("b").Barrier().Where(__.Select<object>("a").Select<object>("software").Is(P.Gt(2))).Select<object>("b").Values<object>("name")}}, - {"g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Union<object>(__.Out("knows"),__.Out("created").In("created")).GroupCount<object>().Select<object>(Column.Values).Unfold<object>().Sum<object>()}}, + {"g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Union<object>(__.Out("knows"), __.Out("created").In("created")).GroupCount<object>().Select<object>(Column.Values).Unfold<object>().Sum<object>()}}, {"g_V_hasXnoX_groupCount", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("no").GroupCount<object>()}}, {"g_V_hasXnoX_groupCountXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("no").GroupCount("a").Cap<object>("a")}}, - {"g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Union<object>(__.Repeat(__.Out()).Times(2).GroupCount("m").By("lang"),__.Repeat(__.In()).Times(2).GroupCount("m").By("name")).Cap<object>("m")}}, + {"g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Union<object>(__.Repeat(__.Out()).Times(2).GroupCount("m").By("lang"), __.Repeat(__.In()).Times(2).GroupCount("m").By("name")).Cap<object>("m")}}, {"g_V_outXcreatedX_groupCountXxX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").GroupCount("x").Cap<object>("x")}}, {"g_V_groupCount_byXbothE_countX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().GroupCount<object>().By(__.BothE().Count())}}, - {"g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().GroupCount("a").Out().Cap<object>("a").Select<object>(Column.Keys).Unfold<object>().Both().GroupCount("a").Cap<object>("a")}}, - {"g_V_hasXperson_name_markoX_bothXknowsX_groupCount_byXvaluesXnameX_foldX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person","name","marko").Both("knows").GroupCount<object>().By(__.Values<object>("name").Fold())}}, - {"g_VX1X_out_injectXv2X_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().Inject((Vertex) p["v2"]).Values<object>("name")}}, - {"g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().Values<object>("name").Inject("daniel").As("a").Map<object>((IFunction) p["l1"]).Path()}}, - {"g_VX1X_injectXg_VX4XX_out_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Inject((Vertex) p["v2"]).Out().Values<object>("name")}}, - {"g_injectXnull_1_3_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null,1,3,null)}}, - {"g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(10,20,null,20,10,10).GroupCount("x").Dedup().As("y").Project<object>("a","b").By().By(__.Select<object>("x").Select<object>(__.Select<object>("y")))}}, - {"g_injectXname_marko_age_nullX_selectXname_ageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"]).Select<object>("name","age")}}, - {"g_injectXnull_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null,null)}}, + {"g_V_both_localXgroupCountXaXX_out_capXaX_selectXkeysX_unfold_both_localXgroupCountXaXX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Local<object>(__.GroupCount("a")).Out().Cap<object>("a").Select<object>(Column.Keys).Unfold<object>().Both().Local<object>(__.GroupCount("a")).Cap<object>("a")}}, + {"g_V_hasXperson_name_markoX_bothXknowsX_groupCount_byXvaluesXnameX_foldX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person", "name", "marko").Both("knows").GroupCount<object>().By(__.Values<object>("name").Fold())}}, + {"g_V_outXcreatedX_groupCount_byXnameX_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").GroupCount<object>().By("name").By("age")}}, + {"g_V_outXcreatedX_groupCountXxX_byXnameX_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").GroupCount("x").By("name").By("age")}}, + {"g_V_groupCountXaX_selectXaX_countXlocalX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().GroupCount("a").Select<object>("a").Count(Scope.Local)}}, + {"g_V_localXgroupCountXaX_selectXaX_countXlocalXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Local<object>(__.GroupCount("a").Select<object>("a").Count(Scope.Local))}}, + {"g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().Values<object>("name").Inject("daniel").As("a").Map<object>(__.Length()).Path()}}, + {"g_injectXnull_1_3_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null, 1, 3, null)}}, + {"g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(10, 20, null, 20, 10, 10).GroupCount("x").Dedup().As("y").Project<object>("a", "b").By().By(__.Select<object>("x").Select<object>(__.Select<object>("y")))}}, + {"g_injectXname_marko_age_nullX_selectXname_ageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(new Dictionary<object, object> {{ "name", "marko" }, { "age", null }}).Select<object>("name", "age")}}, + {"g_injectXnull_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null, null)}}, {"g_injectXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null)}}, {"g_inject", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>()}}, - {"g_VX1X_valuesXageX_injectXnull_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["xx1"]).Values<object>("age").Inject(null,null)}}, + {"g_VX1X_valuesXageX_injectXnull_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["xx1"]).Values<object>("age").Inject(null, null)}}, {"g_VX1X_valuesXageX_injectXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["xx1"]).Values<object>("age").Inject(null)}}, {"g_VX1X_valuesXageX_inject", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["xx1"]).Values<object>("age").Inject()}}, ++<<<<<<< HEAD + {"g_injectXnull_1_3_nullX_asXaX_selectXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null, 1, 3, null).As("a").Select<object>("a")}}, + {"g_injectX1_3X_injectX100_300X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(1, 3).Inject(100, 300)}}, + {"g_injectX1_3_100_300X_list", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(new List<object> { 1, 3, 100, 300 })}}, + {"g_injectX1_3_100_300X_set", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(new HashSet<object> { 1, 3, 100, 300 })}}, + {"g_injectX1_1X_set", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(new HashSet<object> { 1, 1 })}}, ++======= + {"g_injectXnull_1_3_nullX_asXaX_selectXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>(null,1,3,null).As("a").Select<object>("a")}}, + {"g_injectX1_3lX_injectX100_300X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(1,3).Inject(100,300)}}, + {"g_injectXbigintBoundaryValuesX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject(p["xx1"],p["xx2"],p["xx3"])}}, ++>>>>>>> 3.7-dev {"g_io_readXkryoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.kryo").Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, - {"g_io_read_withXreader_gryoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.kryo").With("~tinkerpop.io.reader","gryo").Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, + {"g_io_read_withXreader_gryoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.kryo").With(IO.Reader, IO.Gryo).Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, {"g_io_readXgraphsonX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.json").Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, - {"g_io_read_withXreader_graphsonX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.json").With("~tinkerpop.io.reader","graphson").Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, + {"g_io_read_withXreader_graphsonX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.json").With(IO.Reader, IO.GraphSON).Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, {"g_io_readXgraphmlX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.xml").Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, - {"g_io_read_withXreader_graphmlX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.xml").With("~tinkerpop.io.reader","graphml").Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, + {"g_io_read_withXreader_graphmlX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Io<object>("data/tinkerpop-modern.xml").With(IO.Reader, IO.GraphML).Read(), (g,p) =>g.V(), (g,p) =>g.E()}}, + {"g_withSackX127bX_injectX1bX_sackXsumX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((sbyte) 127).Inject<object>((sbyte) 1).Sack(Operator.Sum).Sack<object>()}}, + {"g_withSackX32767sX_injectX1sX_sackXsumX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((short) 32767).Inject<object>((short) 1).Sack(Operator.Sum).Sack<object>()}}, + {"g_withSackX2147483647iX_injectX1iX_sackXsumX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(2147483647).Inject<object>(1).Sack(Operator.Sum).Sack<object>()}}, + {"g_withSackX1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXsumX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(1.7976931348623157e+308d).Inject<object>(1.7976931348623157e+308d).Sack(Operator.Sum).Sack<object>()}}, + {"g_withSackX_128bX_injectX1bX_sackXminusX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((short) -128).Inject<object>((short) 1).Sack(Operator.Minus).Sack<object>()}}, + {"g_withSackX_32768sX_injectX1sX_sackXminusX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((short) -32768).Inject<object>((short) 1).Sack(Operator.Minus).Sack<object>()}}, + {"g_withSackX_2147483648iX_injectX1iX_sackXminusX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(-2147483648).Inject<object>(1).Sack(Operator.Minus).Sack<object>()}}, + {"g_withSackX_1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXminusX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(-1.7976931348623157e+308d).Inject<object>(1.7976931348623157e+308d).Sack(Operator.Minus).Sack<object>()}}, + {"g_withSackX127bX_injectX2bX_sackXmultX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((sbyte) 127).Inject<object>((sbyte) 2).Sack(Operator.Mult).Sack<object>()}}, + {"g_withSackX32767sX_injectX2sX_sackXmultX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((short) 32767).Inject<object>((short) 2).Sack(Operator.Mult).Sack<object>()}}, + {"g_withSackX2147483647iX_injectX2iX_sackXmultX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(2147483647).Inject<object>(2).Sack(Operator.Mult).Sack<object>()}}, + {"g_withSackX1_7976931348623157E_308dX_injectX2dX_sackXmultX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(1.7976931348623157e+308d).Inject<object>(2d).Sack(Operator.Mult).Sack<object>()}}, + {"g_withSackX127bX_injectX0_5fX_sackXdivX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((sbyte) 127).Inject<object>(0.5f).Sack(Operator.Div).Sack<object>()}}, + {"g_withSackX32767sX_injectX0_5fX_sackXdivX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((short) 32767).Inject<object>(0.5f).Sack(Operator.Div).Sack<object>()}}, + {"g_withSackX2147483647iX_injectX0_5fX_sackXdivX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(2147483647).Inject<object>(0.5f).Sack(Operator.Div).Sack<object>()}}, + {"g_withSackX1_7976931348623157E_308dX_injectX0_5dX_sackXdivX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(1.7976931348623157e+308d).Inject<object>(0.5d).Sack(Operator.Div).Sack<object>()}}, + {"g_withSackX_128bX_injectX_1bX_sackXdivX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((short) -128).Inject<object>((short) -1).Sack(Operator.Div).Sack<object>()}}, + {"g_withSackX_32768sX_injectX_1sX_sackXdivX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack((short) -32768).Inject<object>((short) -1).Sack(Operator.Div).Sack<object>()}}, + {"g_withSackX_2147483648iX_injectX_1iX_sackXdivX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(-2147483648).Inject<object>(-1).Sack(Operator.Div).Sack<object>()}}, {"g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack("hello").V().OutE().Sack(Operator.Assign).By(T.Label).InV().Sack<object>()}}, - {"g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(0.0).V().OutE().Sack(Operator.Sum).By("weight").InV().Sack<object>().Sum<object>()}}, - {"g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(0.0).V().Repeat(__.OutE().Sack(Operator.Sum).By("weight").InV()).Times(2).Sack<object>()}}, - {"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_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(0.0d).V().OutE().Sack(Operator.Sum).By("weight").InV().Sack<object>().Sum<object>()}}, + {"g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(0.0d).V().Repeat(__.OutE().Sack(Operator.Sum).By("weight").InV()).Times(2).Sack<object>()}}, + {"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.0d, 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.0d, Operator.Sum).V(p["vid1"]).Local<object>(__.Out("knows").Barrier(Barrier.NormSack)).In("knows").Barrier().Sack<object>()}}, {"g_V_sackXassignX_byXageX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Sack(Operator.Assign).By("age").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(BigInteger.Parse("10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [...] + {"g_withSackX2X_V_sackXdivX_byXconstantX4_0XX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSack(2).V().Sack(Operator.Div).By(__.Constant<object>(4.0d)).Sack<object>()}}, + {"g_V_sackXassignX_byXageX_byXnameX_sack", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Sack(Operator.Assign).By("age").By("name").Sack<object>()}}, + {"g_V_sideEffectXidentityX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().SideEffect(__.Identity())}}, + {"g_V_sideEffectXidentity_valuesXnameXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().SideEffect(__.Identity().Values<object>("name"))}}, + {"g_V_sideEffectXpropertyXsingle_age_22X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property(Cardinality.Single, "age", 21), (g,p) =>g.V().SideEffect(__.Property(Cardinality.Single, "age", 22)), (g,p) =>g.V().Has("age", 21), (g,p) =>g.V().Has("age", 22)}}, + {"g_V_group_byXvaluesXnameX_sideEffectXconstantXzyxXX_substringX1XX_byXconstantX1X_sideEffectXconstantXxyzXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object, object>().By(__.Values<object>("name").SideEffect(__.Constant<object>("zyx")).Substring(0, 1)).By(__.Constant<object>(1).SideEffect(__.Constant<object>("xyz")))}}, + {"g_withSideEffectXx_setX_V_both_both_sideEffectXlocalXaggregateXxX_byXnameXX_capXxX_unfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("x", new HashSet<object> { }).V().Both().Both().SideEffect(__.Local<object>(__.Aggregate("x").By("name"))).Cap<object>("x").Unfold<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_groupXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group("a").By("age").Cap<object>("a")}}, {"g_V_groupXaX_byXnameX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group("a").By("name").Cap<object>("a")}}, diff --cc gremlin-go/driver/cucumber/gremlin.go index 6f74ccef68,23cb7dfeba..6e9fbbf93e --- a/gremlin-go/driver/cucumber/gremlin.go +++ b/gremlin-go/driver/cucumber/gremlin.go @@@ -2007,35 -1508,14 +2007,36 @@@ var translationMap = map[string][]func( "g_VX1X_valuesXageX_injectXnullX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["xx1"]).Values("age").Inject(nil)}}, "g_VX1X_valuesXageX_inject": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["xx1"]).Values("age").Inject()}}, "g_injectXnull_1_3_nullX_asXaX_selectXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(nil, 1, 3, nil).As("a").Select("a")}}, - "g_injectX1_3lX_injectX100_300X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(1, 3).Inject(100, 300)}}, - "g_injectXbigintBoundaryValuesX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(p["xx1"], p["xx2"], p["xx3"])}}, + "g_injectX1_3X_injectX100_300X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(1, 3).Inject(100, 300)}}, + "g_injectX1_3_100_300X_list": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject([]interface{}{1, 3, 100, 300})}}, + "g_injectX1_3_100_300X_set": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(gremlingo.NewSimpleSet(1, 3, 100, 300))}}, + "g_injectX1_1X_set": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(gremlingo.NewSimpleSet(1, 1))}}, ++ "g_injectXbigintBoundaryValuesX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Inject(gremlingo.ParseBigInt("0"), gremlingo.ParseBigInt("-129"), gremlingo.ParseBigInt("-32769"))}}, "g_io_readXkryoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.kryo").Read()}, 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.E()}}, - "g_io_read_withXreader_gryoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.kryo").With("~tinkerpop.io.reader", "gryo").Read()}, 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.E()}}, + "g_io_read_withXreader_gryoX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.kryo").With(gremlingo.IO.Reader, gremlingo.IO.Gryo).Read()}, 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.E()}}, "g_io_readXgraphsonX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.json").Read()}, 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.E()}}, - "g_io_read_withXreader_graphsonX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.json").With("~tinkerpop.io.reader", "graphson").Read()}, 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.E()}}, + "g_io_read_withXreader_graphsonX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.json").With(gremlingo.IO.Reader, gremlingo.IO.Graphson).Read()}, 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.E()}}, "g_io_readXgraphmlX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.xml").Read()}, 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.E()}}, - "g_io_read_withXreader_graphmlX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.xml").With("~tinkerpop.io.reader", "graphml").Read()}, 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.E()}}, + "g_io_read_withXreader_graphmlX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Io("data/tinkerpop-modern.xml").With(gremlingo.IO.Reader, gremlingo.IO.Graphml).Read()}, 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.E()}}, + "g_withSackX127bX_injectX1bX_sackXsumX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int8(127)).Inject(int8(1)).Sack(gremlingo.Operator.Sum).Sack()}}, + "g_withSackX32767sX_injectX1sX_sackXsumX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int16(32767)).Inject(int16(1)).Sack(gremlingo.Operator.Sum).Sack()}}, + "g_withSackX2147483647iX_injectX1iX_sackXsumX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int32(2147483647)).Inject(int32(1)).Sack(gremlingo.Operator.Sum).Sack()}}, + "g_withSackX1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXsumX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(1.7976931348623157e+308).Inject(1.7976931348623157e+308).Sack(gremlingo.Operator.Sum).Sack()}}, + "g_withSackX_128bX_injectX1bX_sackXminusX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int8(-128)).Inject(int8(1)).Sack(gremlingo.Operator.Minus).Sack()}}, + "g_withSackX_32768sX_injectX1sX_sackXminusX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int16(-32768)).Inject(int16(1)).Sack(gremlingo.Operator.Minus).Sack()}}, + "g_withSackX_2147483648iX_injectX1iX_sackXminusX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int32(-2147483648)).Inject(int32(1)).Sack(gremlingo.Operator.Minus).Sack()}}, + "g_withSackX_1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXminusX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(-1.7976931348623157e+308).Inject(1.7976931348623157e+308).Sack(gremlingo.Operator.Minus).Sack()}}, + "g_withSackX127bX_injectX2bX_sackXmultX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int8(127)).Inject(int8(2)).Sack(gremlingo.Operator.Mult).Sack()}}, + "g_withSackX32767sX_injectX2sX_sackXmultX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int16(32767)).Inject(int16(2)).Sack(gremlingo.Operator.Mult).Sack()}}, + "g_withSackX2147483647iX_injectX2iX_sackXmultX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int32(2147483647)).Inject(int32(2)).Sack(gremlingo.Operator.Mult).Sack()}}, + "g_withSackX1_7976931348623157E_308dX_injectX2dX_sackXmultX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(1.7976931348623157e+308).Inject(2).Sack(gremlingo.Operator.Mult).Sack()}}, + "g_withSackX127bX_injectX0_5fX_sackXdivX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int8(127)).Inject(float32(0.5)).Sack(gremlingo.Operator.Div).Sack()}}, + "g_withSackX32767sX_injectX0_5fX_sackXdivX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int16(32767)).Inject(float32(0.5)).Sack(gremlingo.Operator.Div).Sack()}}, + "g_withSackX2147483647iX_injectX0_5fX_sackXdivX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int32(2147483647)).Inject(0.5).Sack(gremlingo.Operator.Div).Sack()}}, + "g_withSackX1_7976931348623157E_308dX_injectX0_5dX_sackXdivX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(1.7976931348623157e+308).Inject(0.5).Sack(gremlingo.Operator.Div).Sack()}}, + "g_withSackX_128bX_injectX_1bX_sackXdivX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int8(-128)).Inject(int8(-1)).Sack(gremlingo.Operator.Div).Sack()}}, + "g_withSackX_32768sX_injectX_1sX_sackXdivX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int16(-32768)).Inject(int16(-1)).Sack(gremlingo.Operator.Div).Sack()}}, + "g_withSackX_2147483648iX_injectX_1iX_sackXdivX_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(int32(-2147483648)).Inject(int32(-1)).Sack(gremlingo.Operator.Div).Sack()}}, "g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack("hello").V().OutE().Sack(gremlingo.Operator.Assign).By(gremlingo.T.Label).InV().Sack()}}, "g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(0.0).V().OutE().Sack(gremlingo.Operator.Sum).By("weight").InV().Sack().Sum()}}, "g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSack(0.0).V().Repeat(gremlingo.T__.OutE().Sack(gremlingo.Operator.Sum).By("weight").InV()).Times(2).Sack()}}, diff --cc gremlin-go/driver/graphBinary_test.go index a353b57d15,e4aecb3db5..44da7802b1 --- a/gremlin-go/driver/graphBinary_test.go +++ b/gremlin-go/driver/graphBinary_test.go @@@ -192,6 -192,34 +192,34 @@@ func TestGraphBinaryV1(t *testing.T) assert.Nil(t, err) assert.Equal(t, new(big.Int).SetUint64(uint64(source)), res) }) + t.Run("write bigInt zero exact bytes", func(t *testing.T) { + var buffer bytes.Buffer + buf, err := bigIntWriter(*big.NewInt(0), &buffer, nil) + assert.Nil(t, err) + assert.Equal(t, []byte{0x00, 0x00, 0x00, 0x01, 0x00}, buf) + }) + t.Run("read-write bigInt zero", func(t *testing.T) { + pos := 0 + var buffer bytes.Buffer + source := big.NewInt(0) + buf, err := bigIntWriter(*source, &buffer, nil) + assert.Nil(t, err) + res, err := readBigInt(&buf, &pos) + assert.Nil(t, err) + assert.Equal(t, 0, source.Cmp(res.(*big.Int))) + }) + t.Run("read-write bigDecimal zero unscaled", func(t *testing.T) { + pos := 0 + var buffer bytes.Buffer - source := &BigDecimal{0, *big.NewInt(0)} ++ source := &BigDecimal{0, big.NewInt(0)} + buf, err := bigDecimalWriter(source, &buffer, nil) + assert.Nil(t, err) + res, err := readBigDecimal(&buf, &pos) + assert.Nil(t, err) + actual := res.(*BigDecimal) + assert.Equal(t, source.Scale, actual.Scale) - assert.Equal(t, 0, source.UnscaledValue.Cmp(&actual.UnscaledValue)) ++ assert.Equal(t, 0, source.UnscaledValue.Cmp(actual.UnscaledValue)) + }) t.Run("read-write list", func(t *testing.T) { pos := 0 var buffer bytes.Buffer diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js index 2858d4760b,46f7b0d1a2..aca21e540c --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js @@@ -2015,58 -1507,35 +2015,59 @@@ const gremlins = g_V_outXcreatedX_name_groupCountXaX_capXaX: [function({g}) { return g.V().out("created").values("name").groupCount("a").cap("a") }], g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX: [function({g}) { return g.V().repeat(__.out().groupCount("a").by("name")).times(2).cap("a") }], g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name: [function({g}) { return g.V().both().groupCount("a").by(T.label).as("b").barrier().where(__.select("a").select("software").is(P.gt(2))).select("b").values("name") }], - g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum: [function({g}) { return g.V().union(__.out("knows"),__.out("created").in_("created")).groupCount().select(Column.values).unfold().sum() }], + g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum: [function({g}) { return g.V().union(__.out("knows"), __.out("created").in_("created")).groupCount().select(Column.values).unfold().sum() }], g_V_hasXnoX_groupCount: [function({g}) { return g.V().has("no").groupCount() }], g_V_hasXnoX_groupCountXaX_capXaX: [function({g}) { return g.V().has("no").groupCount("a").cap("a") }], - g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX: [function({g}) { return g.V().union(__.repeat(__.out()).times(2).groupCount("m").by("lang"),__.repeat(__.in_()).times(2).groupCount("m").by("name")).cap("m") }], + g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX: [function({g}) { return g.V().union(__.repeat(__.out()).times(2).groupCount("m").by("lang"), __.repeat(__.in_()).times(2).groupCount("m").by("name")).cap("m") }], g_V_outXcreatedX_groupCountXxX_capXxX: [function({g}) { return g.V().out("created").groupCount("x").cap("x") }], g_V_groupCount_byXbothE_countX: [function({g}) { return g.V().groupCount().by(__.bothE().count()) }], - g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX: [function({g}) { return g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a") }], - g_V_hasXperson_name_markoX_bothXknowsX_groupCount_byXvaluesXnameX_foldX: [function({g}) { return g.V().has("person","name","marko").both("knows").groupCount().by(__.values("name").fold()) }], - g_VX1X_out_injectXv2X_name: [function({g, vid1, v2}) { return g.V(vid1).out().inject(v2).values("name") }], - g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path: [function({g, l1, vid1}) { return g.V(vid1).out().values("name").inject("daniel").as("a").map(l1).path() }], - g_VX1X_injectXg_VX4XX_out_name: [function({g, vid1, v2}) { return g.V(vid1).inject(v2).out().values("name") }], - g_injectXnull_1_3_nullX: [function({g}) { return g.inject(null,1,3,null) }], - g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX: [function({g}) { return g.inject(10,20,null,20,10,10).groupCount("x").dedup().as("y").project("a","b").by().by(__.select("x").select(__.select("y"))) }], - g_injectXname_marko_age_nullX_selectXname_ageX: [function({g, xx1}) { return g.inject(xx1).select("name","age") }], - g_injectXnull_nullX: [function({g}) { return g.inject(null,null) }], + g_V_both_localXgroupCountXaXX_out_capXaX_selectXkeysX_unfold_both_localXgroupCountXaXX_capXaX: [function({g}) { return g.V().both().local(__.groupCount("a")).out().cap("a").select(Column.keys).unfold().both().local(__.groupCount("a")).cap("a") }], + g_V_hasXperson_name_markoX_bothXknowsX_groupCount_byXvaluesXnameX_foldX: [function({g}) { return g.V().has("person", "name", "marko").both("knows").groupCount().by(__.values("name").fold()) }], + g_V_outXcreatedX_groupCount_byXnameX_byXageX: [function({g}) { return g.V().out("created").groupCount().by("name").by("age") }], + g_V_outXcreatedX_groupCountXxX_byXnameX_byXageX: [function({g}) { return g.V().out("created").groupCount("x").by("name").by("age") }], + g_V_groupCountXaX_selectXaX_countXlocalX: [function({g}) { return g.V().groupCount("a").select("a").count(Scope.local) }], + g_V_localXgroupCountXaX_selectXaX_countXlocalXX: [function({g}) { return g.V().local(__.groupCount("a").select("a").count(Scope.local)) }], + g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path: [function({g, vid1}) { return g.V(vid1).out().values("name").inject("daniel").as("a").map(__.length()).path() }], + g_injectXnull_1_3_nullX: [function({g}) { return g.inject(null, 1, 3, null) }], + g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX: [function({g}) { return g.inject(10, 20, null, 20, 10, 10).groupCount("x").dedup().as("y").project("a", "b").by().by(__.select("x").select(__.select("y"))) }], + g_injectXname_marko_age_nullX_selectXname_ageX: [function({g}) { return g.inject(new Map([["name", "marko"], ["age", null]])).select("name", "age") }], + g_injectXnull_nullX: [function({g}) { return g.inject(null, null) }], g_injectXnullX: [function({g}) { return g.inject(null) }], g_inject: [function({g}) { return g.inject() }], - g_VX1X_valuesXageX_injectXnull_nullX: [function({g, xx1}) { return g.V(xx1).values("age").inject(null,null) }], + g_VX1X_valuesXageX_injectXnull_nullX: [function({g, xx1}) { return g.V(xx1).values("age").inject(null, null) }], g_VX1X_valuesXageX_injectXnullX: [function({g, xx1}) { return g.V(xx1).values("age").inject(null) }], g_VX1X_valuesXageX_inject: [function({g, xx1}) { return g.V(xx1).values("age").inject() }], - g_injectXnull_1_3_nullX_asXaX_selectXaX: [function({g}) { return g.inject(null,1,3,null).as("a").select("a") }], - g_injectX1_3lX_injectX100_300X: [function({g}) { return g.inject(1,3).inject(100,300) }], - g_injectXbigintBoundaryValuesX: [function({g, xx1, xx3, xx2}) { return g.inject(xx1,xx2,xx3) }], + g_injectXnull_1_3_nullX_asXaX_selectXaX: [function({g}) { return g.inject(null, 1, 3, null).as("a").select("a") }], + g_injectX1_3X_injectX100_300X: [function({g}) { return g.inject(1, 3).inject(100, 300) }], + g_injectX1_3_100_300X_list: [function({g}) { return g.inject([1, 3, 100, 300]) }], + g_injectX1_3_100_300X_set: [function({g}) { return g.inject(new Set([1, 3, 100, 300])) }], + g_injectX1_1X_set: [function({g}) { return g.inject(new Set([1, 1])) }], ++ g_injectXbigintBoundaryValuesX: [function({g}) { return g.inject(0, -129, -32769) }], g_io_readXkryoX: [function({g}) { return g.io("data/tinkerpop-modern.kryo").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], - g_io_read_withXreader_gryoX: [function({g}) { return g.io("data/tinkerpop-modern.kryo").with_("~tinkerpop.io.reader","gryo").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], + g_io_read_withXreader_gryoX: [function({g}) { return g.io("data/tinkerpop-modern.kryo").with_(IO.reader, IO.gryo).read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], g_io_readXgraphsonX: [function({g}) { return g.io("data/tinkerpop-modern.json").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], - g_io_read_withXreader_graphsonX: [function({g}) { return g.io("data/tinkerpop-modern.json").with_("~tinkerpop.io.reader","graphson").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], + g_io_read_withXreader_graphsonX: [function({g}) { return g.io("data/tinkerpop-modern.json").with_(IO.reader, IO.graphson).read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], g_io_readXgraphmlX: [function({g}) { return g.io("data/tinkerpop-modern.xml").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], - g_io_read_withXreader_graphmlX: [function({g}) { return g.io("data/tinkerpop-modern.xml").with_("~tinkerpop.io.reader","graphml").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], + g_io_read_withXreader_graphmlX: [function({g}) { return g.io("data/tinkerpop-modern.xml").with_(IO.reader, IO.graphml).read() }, function({g}) { return g.V() }, function({g}) { return g.E() }], + g_withSackX127bX_injectX1bX_sackXsumX_sack: [function({g}) { return g.withSack(127).inject(1).sack(Operator.sum).sack() }], + g_withSackX32767sX_injectX1sX_sackXsumX_sack: [function({g}) { return g.withSack(32767).inject(1).sack(Operator.sum).sack() }], + g_withSackX2147483647iX_injectX1iX_sackXsumX_sack: [function({g}) { return g.withSack(2147483647).inject(1).sack(Operator.sum).sack() }], + g_withSackX1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXsumX_sack: [function({g}) { return g.withSack(1.7976931348623157e+308).inject(1.7976931348623157e+308).sack(Operator.sum).sack() }], + g_withSackX_128bX_injectX1bX_sackXminusX_sack: [function({g}) { return g.withSack(-128).inject(1).sack(Operator.minus).sack() }], + g_withSackX_32768sX_injectX1sX_sackXminusX_sack: [function({g}) { return g.withSack(-32768).inject(1).sack(Operator.minus).sack() }], + g_withSackX_2147483648iX_injectX1iX_sackXminusX_sack: [function({g}) { return g.withSack(-2147483648).inject(1).sack(Operator.minus).sack() }], + g_withSackX_1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXminusX_sack: [function({g}) { return g.withSack(-1.7976931348623157e+308).inject(1.7976931348623157e+308).sack(Operator.minus).sack() }], + g_withSackX127bX_injectX2bX_sackXmultX_sack: [function({g}) { return g.withSack(127).inject(2).sack(Operator.mult).sack() }], + g_withSackX32767sX_injectX2sX_sackXmultX_sack: [function({g}) { return g.withSack(32767).inject(2).sack(Operator.mult).sack() }], + g_withSackX2147483647iX_injectX2iX_sackXmultX_sack: [function({g}) { return g.withSack(2147483647).inject(2).sack(Operator.mult).sack() }], + g_withSackX1_7976931348623157E_308dX_injectX2dX_sackXmultX_sack: [function({g}) { return g.withSack(1.7976931348623157e+308).inject(2).sack(Operator.mult).sack() }], + g_withSackX127bX_injectX0_5fX_sackXdivX_sack: [function({g}) { return g.withSack(127).inject(0.5).sack(Operator.div).sack() }], + g_withSackX32767sX_injectX0_5fX_sackXdivX_sack: [function({g}) { return g.withSack(32767).inject(0.5).sack(Operator.div).sack() }], + g_withSackX2147483647iX_injectX0_5fX_sackXdivX_sack: [function({g}) { return g.withSack(2147483647).inject(0.5).sack(Operator.div).sack() }], + g_withSackX1_7976931348623157E_308dX_injectX0_5dX_sackXdivX_sack: [function({g}) { return g.withSack(1.7976931348623157e+308).inject(0.5).sack(Operator.div).sack() }], + g_withSackX_128bX_injectX_1bX_sackXdivX_sack: [function({g}) { return g.withSack(-128).inject(-1).sack(Operator.div).sack() }], + g_withSackX_32768sX_injectX_1sX_sackXdivX_sack: [function({g}) { return g.withSack(-32768).inject(-1).sack(Operator.div).sack() }], + g_withSackX_2147483648iX_injectX_1iX_sackXdivX_sack: [function({g}) { return g.withSack(-2147483648).inject(-1).sack(Operator.div).sack() }], g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack: [function({g}) { return g.withSack("hello").V().outE().sack(Operator.assign).by(T.label).inV().sack() }], g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum: [function({g}) { return g.withSack(0.0).V().outE().sack(Operator.sum).by("weight").inV().sack().sum() }], g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack: [function({g}) { return g.withSack(0.0).V().repeat(__.outE().sack(Operator.sum).by("weight").inV()).times(2).sack() }], diff --cc gremlin-python/src/main/python/tests/feature/gremlin.py index c9ca7ebd30,93907ae78e..9681ab9f8f --- a/gremlin-python/src/main/python/tests/feature/gremlin.py +++ b/gremlin-python/src/main/python/tests/feature/gremlin.py @@@ -1957,103 -1474,57 +1957,104 @@@ world.gremlins = 'g_V_hasXlangX_group_byXlangX_byXcountX': [(lambda g:g.V().has('lang').group().by('lang').by(__.count()))], 'g_V_group_byXoutE_countX_byXnameX': [(lambda g:g.V().order().by('name').group().by(__.out_e().count()).by('name'))], 'g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX': [(lambda g:g.V().repeat(__.both('followedBy')).times(2).group().by('songType').by(__.count()))], - 'g_V_group_byXname_substring_1X_byXconstantX1XX': [(lambda g, l1=None:g.V().group().by(l1).by(__.constant(1)))], - 'g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X': [(lambda g:g.V().out().group().by(T.label).select('person').unfold().out('created').name[0:2])], + 'g_V_group_byXvaluesXnameX_substringX1XX_byXconstantX1XX': [(lambda g:g.V().group().by(__.values('name').substring(0, 1)).by(__.constant(1)))], + 'g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X': [(lambda g:g.V().out().group().by(T.label).select('person').unfold().out('created').values('name').limit(2))], 'g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX': [(lambda g:g.V().has_label('song').group().by('name').by(__.properties().group_count().by(T.label)))], - 'g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX': [(lambda g:g.V().out('followedBy').group().by('songType').by(__.both_e().group().by(T.label).by(__.weight.sum_())))], - 'g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX': [(lambda g:g.V().group().by(T.label).by(__.both_e().group('a').by(T.label).by(__.weight.sum_()).weight.sum_()))], - 'g_V_hasLabelXpersonX_asXpX_outXcreatedX_group_byXnameX_byXselectXpX_valuesXageX_sumX': [(lambda g:g.V().has_label('person').as_('p').out('created').group().by('name').by(__.select('p').age.sum_()))], + 'g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX': [(lambda g:g.V().out('followedBy').group().by('songType').by(__.both_e().group().by(T.label).by(__.values('weight').sum_())))], + 'g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX': [(lambda g:g.V().group().by(T.label).by(__.both_e().group('a').by(T.label).by(__.values('weight').sum_()).values('weight').sum_()))], + 'g_V_hasLabelXpersonX_asXpX_outXcreatedX_group_byXnameX_byXselectXpX_valuesXageX_sumX': [(lambda g:g.V().has_label('person').as_('p').out('created').group().by('name').by(__.select('p').values('age').sum_()))], 'g_V_group_byXlabelX_byXlabel_countX': [(lambda g:g.V().group().by(__.label()).by(__.label().count()))], + 'g_V_hasXperson_name_withinXvadas_peterXX_group_by_byXout_order_foldX': [(lambda g:g.V().has('person', 'name', P.within('vadas', 'peter')).group().by().by(__.out().order().fold()))], + 'g_V_hasXperson_name_withinXvadas_peterXX_group_by_byXout_foldX': [(lambda g:g.V().has('person', 'name', P.within('vadas', 'peter')).group().by().by(__.out().fold()))], + 'g_V_hasXperson_name_withinXvadas_peterXX_group_by_byXout_orderX': [(lambda g:g.V().has('person', 'name', P.within('vadas', 'peter')).group().by().by(__.out().order()))], + 'g_V_group_byXvaluesXnameXX_byXvaluesXageX_fold_unfoldX': [(lambda g:g.V().group().by(__.values('name')).by(__.values('age').fold().unfold()))], + 'g_V_group_byXvaluesXnameXX_byXout_fold_countXlocalX_isXgtX0XXX': [(lambda g:g.V().group().by(__.values('name')).by(__.out().fold().count(Scope.local).is_(P.gt(0))))], + 'g_V_hasXperson_name_withinXvadas_peterXX_group_by_byXout_order_countX': [(lambda g:g.V().has('person', 'name', P.within('vadas', 'peter')).group().by().by(__.out().order().count()))], + 'g_V_hasXperson_name_withinXvadas_peterXX_group_by_byXout_order_fold_countXlocalXX': [(lambda g:g.V().has('person', 'name', P.within('vadas', 'peter')).group().by().by(__.out().order().fold().count(Scope.local)))], + 'g_V_group_by_byXout_label_foldX_selectXvaluesX_unfold_orderXlocalX': [(lambda g:g.V().group().by().by(__.out().label().fold()).select(Column.values).unfold().order(Scope.local))], + 'g_V_group_by_byXout_label_dedup_foldX_selectXvaluesX_unfold_orderXlocalX': [(lambda g:g.V().group().by().by(__.out().label().dedup().fold()).select(Column.values).unfold().order(Scope.local))], + 'g_V_group_by_byXout_label_limitX0X_foldX_selectXvaluesX_unfold': [(lambda g:g.V().group().by().by(__.out().label().limit(0).fold()).select(Column.values).unfold())], + 'g_V_group_by_byXout_label_limitX10X_foldX_selectXvaluesX_unfold_orderXlocalX': [(lambda g:g.V().group().by().by(__.out().label().limit(10).fold()).select(Column.values).unfold().order(Scope.local))], + 'g_V_group_by_byXout_label_tailX10X_foldX_selectXvaluesX_unfold_orderXlocalX': [(lambda g:g.V().group().by().by(__.out().label().tail(10).fold()).select(Column.values).unfold().order(Scope.local))], + 'g_V_groupXaX_byXnameX_by_selectXaX_countXlocalX': [(lambda g:g.V().group('a').by('name').by().select('a').count(Scope.local))], + 'g_V_localXgroupXaX_byXnameX_by_selectXaX_countXlocalXX': [(lambda g:g.V().local(__.group('a').by('name').by().select('a').count(Scope.local)))], + 'g_V_group_byXvaluesXnameXX_byXboth_countX': [(lambda g:g.V().group().by(__.values('name')).by(__.both().count()))], 'g_V_outXcreatedX_groupCount_byXnameX': [(lambda g:g.V().out('created').group_count().by('name'))], 'g_V_groupCount_byXageX': [(lambda g:g.V().group_count().by('age'))], - 'g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX': [(lambda g:g.with_strategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().group_count().by('age'))], - 'g_V_outXcreatedX_name_groupCount': [(lambda g:g.V().out('created').name.group_count())], + 'g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().group_count().by('age'))], + 'g_V_outXcreatedX_name_groupCount': [(lambda g:g.V().out('created').values('name').group_count())], 'g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX': [(lambda g:g.V().out('created').group_count('a').by('name').cap('a'))], - 'g_V_outXcreatedX_name_groupCountXaX_capXaX': [(lambda g:g.V().out('created').name.group_count('a').cap('a'))], + 'g_V_outXcreatedX_name_groupCountXaX_capXaX': [(lambda g:g.V().out('created').values('name').group_count('a').cap('a'))], 'g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX': [(lambda g:g.V().repeat(__.out().group_count('a').by('name')).times(2).cap('a'))], - 'g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name': [(lambda g:g.V().both().group_count('a').by(T.label).as_('b').barrier().where(__.select('a').select('software').is_(P.gt(2))).select('b').name)], - 'g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum': [(lambda g:g.V().union(__.out('knows'),__.out('created').in_('created')).group_count().select(Column.values).unfold().sum_())], + 'g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name': [(lambda g:g.V().both().group_count('a').by(T.label).as_('b').barrier().where(__.select('a').select('software').is_(P.gt(2))).select('b').values('name'))], + 'g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum': [(lambda g:g.V().union(__.out('knows'), __.out('created').in_('created')).group_count().select(Column.values).unfold().sum_())], 'g_V_hasXnoX_groupCount': [(lambda g:g.V().has('no').group_count())], 'g_V_hasXnoX_groupCountXaX_capXaX': [(lambda g:g.V().has('no').group_count('a').cap('a'))], - 'g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX': [(lambda g:g.V().union(__.repeat(__.out()).times(2).group_count('m').by('lang'),__.repeat(__.in_()).times(2).group_count('m').by('name')).cap('m'))], + 'g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX': [(lambda g:g.V().union(__.repeat(__.out()).times(2).group_count('m').by('lang'), __.repeat(__.in_()).times(2).group_count('m').by('name')).cap('m'))], 'g_V_outXcreatedX_groupCountXxX_capXxX': [(lambda g:g.V().out('created').group_count('x').cap('x'))], 'g_V_groupCount_byXbothE_countX': [(lambda g:g.V().group_count().by(__.both_e().count()))], - 'g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX': [(lambda g:g.V().both().group_count('a').out().cap('a').select(Column.keys).unfold().both().group_count('a').cap('a'))], - 'g_V_hasXperson_name_markoX_bothXknowsX_groupCount_byXvaluesXnameX_foldX': [(lambda g:g.V().has('person','name','marko').both('knows').group_count().by(__.name.fold()))], - 'g_VX1X_out_injectXv2X_name': [(lambda g, vid1=None,v2=None:g.V(vid1).out().inject(v2).name)], - 'g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path': [(lambda g, l1=None,vid1=None:g.V(vid1).out().name.inject('daniel').as_('a').map(l1).path())], - 'g_VX1X_injectXg_VX4XX_out_name': [(lambda g, vid1=None,v2=None:g.V(vid1).inject(v2).out().name)], - 'g_injectXnull_1_3_nullX': [(lambda g:g.inject(None,1,3,None))], - 'g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX': [(lambda g:g.inject(10,20,None,20,10,10).group_count('x').dedup().as_('y').project('a','b').by().by(__.select('x').select(__.select('y'))))], - 'g_injectXname_marko_age_nullX_selectXname_ageX': [(lambda g, xx1=None:g.inject(xx1).select('name','age'))], - 'g_injectXnull_nullX': [(lambda g:g.inject(None,None))], + 'g_V_both_localXgroupCountXaXX_out_capXaX_selectXkeysX_unfold_both_localXgroupCountXaXX_capXaX': [(lambda g:g.V().both().local(__.group_count('a')).out().cap('a').select(Column.keys).unfold().both().local(__.group_count('a')).cap('a'))], + 'g_V_hasXperson_name_markoX_bothXknowsX_groupCount_byXvaluesXnameX_foldX': [(lambda g:g.V().has('person', 'name', 'marko').both('knows').group_count().by(__.values('name').fold()))], + 'g_V_outXcreatedX_groupCount_byXnameX_byXageX': [(lambda g:g.V().out('created').group_count().by('name').by('age'))], + 'g_V_outXcreatedX_groupCountXxX_byXnameX_byXageX': [(lambda g:g.V().out('created').group_count('x').by('name').by('age'))], + 'g_V_groupCountXaX_selectXaX_countXlocalX': [(lambda g:g.V().group_count('a').select('a').count(Scope.local))], + 'g_V_localXgroupCountXaX_selectXaX_countXlocalXX': [(lambda g:g.V().local(__.group_count('a').select('a').count(Scope.local)))], + 'g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path': [(lambda g, vid1=None:g.V(vid1).out().values('name').inject('daniel').as_('a').map(__.length()).path())], + 'g_injectXnull_1_3_nullX': [(lambda g:g.inject(None, 1, 3, None))], + 'g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX': [(lambda g:g.inject(10, 20, None, 20, 10, 10).group_count('x').dedup().as_('y').project('a', 'b').by().by(__.select('x').select(__.select('y'))))], + 'g_injectXname_marko_age_nullX_selectXname_ageX': [(lambda g:g.inject({ 'name': 'marko', 'age': None }).select('name', 'age'))], + 'g_injectXnull_nullX': [(lambda g:g.inject(None, None))], 'g_injectXnullX': [(lambda g:g.inject(None))], 'g_inject': [(lambda g:g.inject())], - 'g_VX1X_valuesXageX_injectXnull_nullX': [(lambda g, xx1=None:g.V(xx1).age.inject(None,None))], - 'g_VX1X_valuesXageX_injectXnullX': [(lambda g, xx1=None:g.V(xx1).age.inject(None))], - 'g_VX1X_valuesXageX_inject': [(lambda g, xx1=None:g.V(xx1).age.inject())], - 'g_injectXnull_1_3_nullX_asXaX_selectXaX': [(lambda g:g.inject(None,1,3,None).as_('a').select('a'))], - 'g_injectX1_3lX_injectX100_300X': [(lambda g:g.inject(1,3).inject(100,300))], - 'g_injectXbigintBoundaryValuesX': [(lambda g, xx1=None,xx3=None,xx2=None:g.inject(xx1,xx2,xx3))], + 'g_VX1X_valuesXageX_injectXnull_nullX': [(lambda g, xx1=None:g.V(xx1).values('age').inject(None, None))], + 'g_VX1X_valuesXageX_injectXnullX': [(lambda g, xx1=None:g.V(xx1).values('age').inject(None))], + 'g_VX1X_valuesXageX_inject': [(lambda g, xx1=None:g.V(xx1).values('age').inject())], + 'g_injectXnull_1_3_nullX_asXaX_selectXaX': [(lambda g:g.inject(None, 1, 3, None).as_('a').select('a'))], + 'g_injectX1_3X_injectX100_300X': [(lambda g:g.inject(1, 3).inject(100, 300))], + 'g_injectX1_3_100_300X_list': [(lambda g:g.inject([1, 3, 100, 300]))], + 'g_injectX1_3_100_300X_set': [(lambda g:g.inject({1, 3, 100, 300}))], + 'g_injectX1_1X_set': [(lambda g:g.inject({1, 1}))], ++ 'g_injectXbigintBoundaryValuesX': [(lambda g:g.inject(bigint(0), bigint(-129), bigint(-32769)))], 'g_io_readXkryoX': [(lambda g:g.io('data/tinkerpop-modern.kryo').read()), (lambda g:g.V()), (lambda g:g.E())], - 'g_io_read_withXreader_gryoX': [(lambda g:g.io('data/tinkerpop-modern.kryo').with_('~tinkerpop.io.reader','gryo').read()), (lambda g:g.V()), (lambda g:g.E())], + 'g_io_read_withXreader_gryoX': [(lambda g:g.io('data/tinkerpop-modern.kryo').with_(IO.reader, IO.gryo).read()), (lambda g:g.V()), (lambda g:g.E())], 'g_io_readXgraphsonX': [(lambda g:g.io('data/tinkerpop-modern.json').read()), (lambda g:g.V()), (lambda g:g.E())], - 'g_io_read_withXreader_graphsonX': [(lambda g:g.io('data/tinkerpop-modern.json').with_('~tinkerpop.io.reader','graphson').read()), (lambda g:g.V()), (lambda g:g.E())], + 'g_io_read_withXreader_graphsonX': [(lambda g:g.io('data/tinkerpop-modern.json').with_(IO.reader, IO.graphson).read()), (lambda g:g.V()), (lambda g:g.E())], 'g_io_readXgraphmlX': [(lambda g:g.io('data/tinkerpop-modern.xml').read()), (lambda g:g.V()), (lambda g:g.E())], - 'g_io_read_withXreader_graphmlX': [(lambda g:g.io('data/tinkerpop-modern.xml').with_('~tinkerpop.io.reader','graphml').read()), (lambda g:g.V()), (lambda g:g.E())], + 'g_io_read_withXreader_graphmlX': [(lambda g:g.io('data/tinkerpop-modern.xml').with_(IO.reader, IO.graphml).read()), (lambda g:g.V()), (lambda g:g.E())], + 'g_withSackX127bX_injectX1bX_sackXsumX_sack': [(lambda g:g.with_sack(127).inject(1).sack(Operator.sum_).sack())], + 'g_withSackX32767sX_injectX1sX_sackXsumX_sack': [(lambda g:g.with_sack(32767).inject(1).sack(Operator.sum_).sack())], + 'g_withSackX2147483647iX_injectX1iX_sackXsumX_sack': [(lambda g:g.with_sack(2147483647).inject(1).sack(Operator.sum_).sack())], + 'g_withSackX1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXsumX_sack': [(lambda g:g.with_sack(1.7976931348623157e+308).inject(1.7976931348623157e+308).sack(Operator.sum_).sack())], + 'g_withSackX_128bX_injectX1bX_sackXminusX_sack': [(lambda g:g.with_sack(-128).inject(1).sack(Operator.minus).sack())], + 'g_withSackX_32768sX_injectX1sX_sackXminusX_sack': [(lambda g:g.with_sack(-32768).inject(1).sack(Operator.minus).sack())], + 'g_withSackX_2147483648iX_injectX1iX_sackXminusX_sack': [(lambda g:g.with_sack(-2147483648).inject(1).sack(Operator.minus).sack())], + 'g_withSackX_1_7976931348623157E_308dX_injectX1_7976931348623157E_308dX_sackXminusX_sack': [(lambda g:g.with_sack(-1.7976931348623157e+308).inject(1.7976931348623157e+308).sack(Operator.minus).sack())], + 'g_withSackX127bX_injectX2bX_sackXmultX_sack': [(lambda g:g.with_sack(127).inject(2).sack(Operator.mult).sack())], + 'g_withSackX32767sX_injectX2sX_sackXmultX_sack': [(lambda g:g.with_sack(32767).inject(2).sack(Operator.mult).sack())], + 'g_withSackX2147483647iX_injectX2iX_sackXmultX_sack': [(lambda g:g.with_sack(2147483647).inject(2).sack(Operator.mult).sack())], + 'g_withSackX1_7976931348623157E_308dX_injectX2dX_sackXmultX_sack': [(lambda g:g.with_sack(1.7976931348623157e+308).inject(2).sack(Operator.mult).sack())], + 'g_withSackX127bX_injectX0_5fX_sackXdivX_sack': [(lambda g:g.with_sack(127).inject(0.5).sack(Operator.div).sack())], + 'g_withSackX32767sX_injectX0_5fX_sackXdivX_sack': [(lambda g:g.with_sack(32767).inject(0.5).sack(Operator.div).sack())], + 'g_withSackX2147483647iX_injectX0_5fX_sackXdivX_sack': [(lambda g:g.with_sack(2147483647).inject(0.5).sack(Operator.div).sack())], + 'g_withSackX1_7976931348623157E_308dX_injectX0_5dX_sackXdivX_sack': [(lambda g:g.with_sack(1.7976931348623157e+308).inject(0.5).sack(Operator.div).sack())], + 'g_withSackX_128bX_injectX_1bX_sackXdivX_sack': [(lambda g:g.with_sack(-128).inject(-1).sack(Operator.div).sack())], + 'g_withSackX_32768sX_injectX_1sX_sackXdivX_sack': [(lambda g:g.with_sack(-32768).inject(-1).sack(Operator.div).sack())], + 'g_withSackX_2147483648iX_injectX_1iX_sackXdivX_sack': [(lambda g:g.with_sack(-2147483648).inject(-1).sack(Operator.div).sack())], 'g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack': [(lambda g:g.with_sack('hello').V().out_e().sack(Operator.assign).by(T.label).in_v().sack())], - 'g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum': [(lambda g:g.with_sack(float(0.0)).V().out_e().sack(Operator.sum_).by('weight').in_v().sack().sum_())], - 'g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack': [(lambda g:g.with_sack(float(0.0)).V().repeat(__.out_e().sack(Operator.sum_).by('weight').in_v()).times(2).sack())], - 'g_withBulkXfalseX_withSackX1_sumX_VX1X_localXoutEXknowsX_barrierXnormSackX_inVX_inXknowsX_barrier_sack': [(lambda g, vid1=None:g.with_bulk(False).with_sack(float(1.0),Operator.sum_).V(vid1).local(__.out_e('knows').barrier(Barrier.norm_sack).in_v()).in_('knows').barrier().sack())], - 'g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack': [(lambda g:g.with_bulk(False).with_sack(1,Operator.sum_).V().out().barrier().sack())], - 'g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack': [(lambda g, vid1=None:g.with_sack(float(1.0),Operator.sum_).V(vid1).local(__.out('knows').barrier(Barrier.norm_sack)).in_('knows').barrier().sack())], + 'g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum': [(lambda g:g.with_sack(0.0).V().out_e().sack(Operator.sum_).by('weight').in_v().sack().sum_())], + 'g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack': [(lambda g:g.with_sack(0.0).V().repeat(__.out_e().sack(Operator.sum_).by('weight').in_v()).times(2).sack())], + 'g_withBulkXfalseX_withSackX1_sumX_VX1X_localXoutEXknowsX_barrierXnormSackX_inVX_inXknowsX_barrier_sack': [(lambda g, vid1=None:g.with_bulk(False).with_sack(1.0, Operator.sum_).V(vid1).local(__.out_e('knows').barrier(Barrier.norm_sack).in_v()).in_('knows').barrier().sack())], + 'g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack': [(lambda g:g.with_bulk(False).with_sack(1, Operator.sum_).V().out().barrier().sack())], + 'g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack': [(lambda g, vid1=None:g.with_sack(1.0, Operator.sum_).V(vid1).local(__.out('knows').barrier(Barrier.norm_sack)).in_('knows').barrier().sack())], 'g_V_sackXassignX_byXageX_sack': [(lambda g:g.V().sack(Operator.assign).by('age').sack())], + 'g_withSackXBigInteger_TEN_powX1000X_assignX_V_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack': [(lambda g:g.with_sack(bigint(1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [...] + 'g_withSackX2X_V_sackXdivX_byXconstantX4_0XX_sack': [(lambda g:g.with_sack(2).V().sack(Operator.div).by(__.constant(4.0)).sack())], + 'g_V_sackXassignX_byXageX_byXnameX_sack': [(lambda g:g.V().sack(Operator.assign).by('age').by('name').sack())], + 'g_V_sideEffectXidentityX': [(lambda g:g.V().side_effect(__.identity()))], + 'g_V_sideEffectXidentity_valuesXnameXX': [(lambda g:g.V().side_effect(__.identity().values('name')))], + 'g_V_sideEffectXpropertyXsingle_age_22X': [(lambda g:g.add_v('person').property(Cardinality.single, 'age', 21)), (lambda g:g.V().side_effect(__.property(Cardinality.single, 'age', 22))), (lambda g:g.V().has('age', 21)), (lambda g:g.V().has('age', 22))], + 'g_V_group_byXvaluesXnameX_sideEffectXconstantXzyxXX_substringX1XX_byXconstantX1X_sideEffectXconstantXxyzXXX': [(lambda g:g.V().group().by(__.values('name').side_effect(__.constant('zyx')).substring(0, 1)).by(__.constant(1).side_effect(__.constant('xyz'))))], + 'g_withSideEffectXx_setX_V_both_both_sideEffectXlocalXaggregateXxX_byXnameXX_capXxX_unfold': [(lambda g:g.with_side_effect('x', set()).V().both().both().side_effect(__.local(__.aggregate('x').by('name'))).cap('x').unfold())], 'g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX': [(lambda g:g.V().has('age').group_count('a').by('name').out().cap('a'))], 'g_V_groupXaX_byXageX_capXaX': [(lambda g:g.V().group('a').by('age').cap('a'))], 'g_V_groupXaX_byXnameX_capXaX': [(lambda g:g.V().group('a').by('name').cap('a'))], diff --cc gremlin-python/src/main/python/tests/unit/io/test_graphbinaryV1.py index 87aee98931,b4624584b4..6f73a74d2b --- a/gremlin-python/src/main/python/tests/unit/io/test_graphbinaryV1.py +++ b/gremlin-python/src/main/python/tests/unit/io/test_graphbinaryV1.py @@@ -82,8 -111,16 +111,16 @@@ class TestGraphBinaryWriter(object) assert x.scale == output.scale assert x.unscaled_value == output.unscaled_value + def test_bigdecimal_negative_boundaries(self): + # Negative unscaled values at byte-width boundaries previously raised + # OverflowError during serialization (TINKERPOP-3275). + for x in [BigDecimal(0, -129), BigDecimal(2, -255)]: + output = self.graphbinary_reader.read_object(self.graphbinary_writer.write_object(x)) + assert x.scale == output.scale + assert x.unscaled_value == output.unscaled_value + def test_date(self): - x = datetime.datetime(2016, 12, 14, 16, 14, 36, 295000) + x = datetime(2016, 12, 14, 16, 14, 36, 295000) output = self.graphbinary_reader.read_object(self.graphbinary_writer.write_object(x)) assert x == output diff --cc gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Inject.feature index 52dc8f3857,9acb57253a..5f567c1c6c --- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Inject.feature +++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Inject.feature @@@ -182,38 -219,19 +182,52 @@@ Feature: Step - inject( | d[1].i | | d[3].i | + @GraphComputerVerificationInjectionNotSupported + Scenario: g_injectX1_3_100_300X_list + Given the modern graph + And the traversal of + """ + g.inject([1, 3, 100, 300]) + """ + When iterated to list + Then the result should be unordered + | result | + | l[d[1].i,d[3].i,d[100].i,d[300].i] | + + @GraphComputerVerificationInjectionNotSupported + Scenario: g_injectX1_3_100_300X_set + Given the modern graph + And the traversal of + """ + g.inject({1, 3, 100, 300}) + """ + When iterated to list + Then the result should be unordered + | result | + | s[d[100].i,d[300].i,d[1].i,d[3].i] | + + @GraphComputerVerificationInjectionNotSupported + Scenario: g_injectX1_1X_set + Given the modern graph + And the traversal of + """ + g.inject({1, 1}) + """ + When iterated to list + Then the result should be unordered + | result | - | s[d[1].i] | ++ | s[d[1].i] | ++ + @GraphComputerVerificationInjectionNotSupported + Scenario: g_injectXbigintBoundaryValuesX + Given the empty graph - And using the parameter xx1 defined as "d[0].n" - And using the parameter xx2 defined as "d[-129].n" - And using the parameter xx3 defined as "d[-32769].n" + And the traversal of + """ - g.inject(xx1, xx2, xx3) ++ g.inject(0n, -129n, -32769n) + """ + When iterated to list + Then the result should be unordered + | result | + | d[0].n | + | d[-129].n | + | d[-32769].n |
