Cole-Greer commented on code in PR #2616:
URL: https://github.com/apache/tinkerpop/pull/2616#discussion_r1733252401


##########
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java:
##########
@@ -113,6 +133,11 @@ public Object apply(final Object a, final Object b) {
         public Object apply(final Object a, final Object b) {
             return b;
         }
+
+        @Override
+        public boolean isCommutative() {

Review Comment:
   I believe assignment should be non-commutative.



##########
gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Aggregate.feature:
##########
@@ -144,145 +144,435 @@ Feature: Step - aggregate()
   Scenario: g_V_aggregateXlocal_a_nameX_out_capXaX
     Given the modern graph
     And the traversal of
-      """
-      g.V().aggregate(Scope.local,"a").by("name").out().cap("a")
-      """
+    """
+    g.V().aggregate(Scope.local,"a").by("name").out().cap("a")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | marko |
-      | vadas |
-      | lop |
-      | josh |
-      | ripple |
-      | peter  |
+    | result |
+    | marko |
+    | vadas |
+    | lop |
+    | josh |
+    | ripple |
+    | peter  |
 
   Scenario: 
g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX
     Given the modern graph
     And using the parameter vid1 defined as "v[marko].id"
     And the traversal of
-      """
-      
g.V(vid1).aggregate(Scope.local,"a").by("name").out().aggregate(Scope.local,"a").by("name").values("name").cap("a")
-      """
+    """
+    
g.V(vid1).aggregate(Scope.local,"a").by("name").out().aggregate(Scope.local,"a").by("name").values("name").cap("a")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | marko |
-      | vadas |
-      | lop |
-      | josh |
+    | result |
+    | marko |
+    | vadas |
+    | lop |
+    | josh |
 
   Scenario: g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX
     Given the modern graph
     And using the parameter xx1 defined as "s[]"
     And the traversal of
-      """
-      g.withSideEffect("a", 
xx1).V().both().values("name").aggregate(Scope.local,"a").cap("a")
-      """
+    """
+    g.withSideEffect("a", 
xx1).V().both().values("name").aggregate(Scope.local,"a").cap("a")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | marko |
-      | vadas |
-      | lop |
-      | josh |
-      | ripple |
-      | peter  |
+    | result |
+    | marko |
+    | vadas |
+    | lop |
+    | josh |
+    | ripple |
+    | peter  |
 
   Scenario: 
g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX
     Given the modern graph
     And the traversal of
-      """
-      g.V().aggregate(Scope.local,"a").
-             by(__.outE("created").count()).
-        out().out().aggregate(Scope.local,"a").
-                      by(__.inE("created").values("weight").sum()).
-        cap("a")
-      """
+    """
+    g.V().aggregate(Scope.local,"a").
+    by(__.outE("created").count()).
+    out().out().aggregate(Scope.local,"a").
+    by(__.inE("created").values("weight").sum()).
+    cap("a")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | d[1].l |
-      | d[1].l |
-      | d[0].l |
-      | d[0].l |
-      | d[0].l |
-      | d[2].l |
-      | d[1.0].d |
-      | d[1.0].d |
+    | result |
+    | d[1].l |
+    | d[1].l |
+    | d[0].l |
+    | d[0].l |
+    | d[0].l |
+    | d[2].l |
+    | d[1.0].d |
+    | d[1.0].d |
 
   Scenario: g_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX
     Given the modern graph
     And the traversal of
-      """
-      g.V().aggregate("x").by(__.values("age").is(P.gt(29))).cap("x")
-      """
+    """
+    g.V().aggregate("x").by(__.values("age").is(P.gt(29))).cap("x")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | d[32].i |
-      | d[35].i |
+    | result |
+    | d[32].i |
+    | d[35].i |
 
   @WithProductiveByStrategy
   Scenario: 
g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX
     Given the modern graph
     And the traversal of
-      """
-      
g.withStrategies(ProductiveByStrategy).V().aggregate("x").by(__.values("age").is(P.gt(29))).cap("x")
-      """
+    """
+    
g.withStrategies(ProductiveByStrategy).V().aggregate("x").by(__.values("age").is(P.gt(29))).cap("x")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | d[32].i |
-      | d[35].i |
-      | null |
-      | null |
-      | null |
-      | null |
+    | result |
+    | d[32].i |
+    | d[35].i |
+    | null |
+    | null |
+    | null |
+    | null |
 
   @GraphComputerVerificationStarGraphExceeded
   Scenario: g_V_aggregateXxX_byXout_order_byXnameXX_capXxX
     Given the modern graph
     And the traversal of
-      """
-      g.V().aggregate("x").by(__.out().order().by("name")).cap("x")
-      """
+    """
+    g.V().aggregate("x").by(__.out().order().by("name")).cap("x")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | v[josh] |
-      | v[lop] |
-      | v[lop] |
+    | result |
+    | v[josh] |
+    | v[lop] |
+    | v[lop] |
 
   @GraphComputerVerificationReferenceOnly @WithProductiveByStrategy
   Scenario: 
g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX
     Given the modern graph
     And the traversal of
-      """
-      
g.withStrategies(ProductiveByStrategy).V().aggregate("x").by(__.out().order().by("name")).cap("x")
-      """
+    """
+    
g.withStrategies(ProductiveByStrategy).V().aggregate("x").by(__.out().order().by("name")).cap("x")
+    """
     When iterated next
     Then the result should be unordered
-      | result |
-      | v[josh] |
-      | v[lop] |
-      | v[lop] |
-      | null |
-      | null |
-      | null |
+    | result |
+    | v[josh] |
+    | v[lop] |
+    | v[lop] |
+    | null |
+    | null |
+    | null |
 
   Scenario: 
g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX
     Given the modern graph
     And the traversal of
-      """
-      g.V().aggregate("a").has("person","age", 
P.gte(30)).cap("a").unfold().values("name")
-      """
+    """
+    g.V().aggregate("a").has("person","age", 
P.gte(30)).cap("a").unfold().values("name")
+    """
+    When iterated to list
+    Then the result should be unordered
+    | result |
+    | marko |
+    | josh |
+    | peter |
+    | lop |
+    | vadas |
+    | ripple |
+
+  Scenario: g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX
+    Given the modern graph
+    And the traversal of
+    """
+    g.withSideEffect("a", 1, 
Operator.sum).V().aggregate("a").by("age").cap("a")
+    """
+    When iterated to list
+    Then the result should be unordered
+    | result   |
+    | d[124].i |
+
+  Scenario: g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX
+    Given the modern graph
+    And the traversal of
+    """
+    g.withSideEffect("a", 1, Operator.sum).V().aggregate(Scope.local, 
"a").by("age").cap("a")
+    """
+    When iterated to list
+    Then the result should be unordered
+      | result   |
+      | d[124].i |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX
+    Given the modern graph
+    And the traversal of
+    """
+    g.withSideEffect("a", 123, 
Operator.minus).V().aggregate("a").by("age").cap("a")
+    """
+    When iterated to list
+    Then the result should be unordered
+    | result |
+    | d[0].i |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX
+    Given the modern graph
+    And the traversal of
+    """
+    g.withSideEffect("a", 123, Operator.minus).V().aggregate(Scope.local, 
"a").by("age").cap("a")
+    """
     When iterated to list
     Then the result should be unordered
       | result |
-      | marko |
-      | josh |
-      | peter |
-      | lop |
-      | vadas |
-      | ripple |
\ No newline at end of file
+      | d[0].i |
+
+  Scenario: g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX
+    Given the modern graph
+    And the traversal of
+    """
+    g.withSideEffect("a", 2, 
Operator.mult).V().aggregate("a").by("age").cap("a")
+    """
+    When iterated to list
+    Then the result should be unordered
+    | result |
+    | d[1753920].i |
+
+  Scenario: g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX
+    Given the modern graph
+    And the traversal of
+    """
+    g.withSideEffect("a", 2, Operator.mult).V().aggregate(Scope.local, 
"a").by("age").cap("a")
+    """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[1753920].i |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX
+    Given the modern graph
+    And the traversal of
+    """
+    g.withSideEffect("a", 876960, 
Operator.div).V().aggregate("a").by("age").cap("a")
+    """
+    When iterated to list
+    Then the result should be unordered
+    | result |
+    | d[1].i |
+
+  @GraphComputerVerificationInjectionNotSupported
+  Scenario: g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX

Review Comment:
   Are these scenarios intended to be excluded for GraphComputer? If so, 
perhaps a different tag should be used as these scenarios do not use `inject` 
step.
   
   https://tinkerpop.apache.org/docs/current/dev/developer/#gherkin-tags



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@tinkerpop.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to