Adressed comments made by @spmallette

Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/20948e32
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/20948e32
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/20948e32

Branch: refs/heads/TINKERPOP-1628
Commit: 20948e328292ea6b8f3c448a5d453f3f6d218258
Parents: 57e2c00
Author: Daniel Kuppitz <[email protected]>
Authored: Tue Apr 24 06:29:16 2018 -0700
Committer: Daniel Kuppitz <[email protected]>
Committed: Tue Apr 24 06:30:29 2018 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  2 +-
 docs/src/reference/the-traversal.asciidoc       |  2 ++
 gremlin-test/features/map/Select.feature        | 28 +++++++++++++++++
 .../process/AbstractGremlinProcessTest.java     | 14 +++++++++
 .../process/traversal/step/map/SelectTest.java  | 33 ++++++++++++++++++++
 5 files changed, 78 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/20948e32/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 812d44a..ab20fff 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,7 @@ 
image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 
 This release also includes changes from <<release-3-2-9, 3.2.9>>.
 
+* Implemented `TraversalSelectStep` which allows to `select()` 
runtime-generated keys.
 * Coerced `BulkSet` to `g:List` in GraphSON 3.0.
 * Deprecated `CredentialsGraph` DSL in favor of `CredentialsTraversalDsl` 
which uses the recommended method for Gremlin DSL development.
 
@@ -74,7 +75,6 @@ This release also includes changes from <<release-3-2-8, 
3.2.8>>.
 * TINKERPOP-1357 Centrality Recipes should mention pageRank and OLAP.
 * TINKERPOP-1489 Provide a Javascript Gremlin Language Variant
 * TINKERPOP-1586 SubgraphStrategy in OLAP
-* TINKERPOP-1628 Implement TraversalSelectStep.
 * TINKERPOP-1726 Support WebSockets ping/pong keep-alive in Gremlin server
 * TINKERPOP-1842 iterate() missing in terminal steps documentation
 * TINKERPOP-1844 Python GLV test should run for GraphSON 3.0 *(breaking)*

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/20948e32/docs/src/reference/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/the-traversal.asciidoc 
b/docs/src/reference/the-traversal.asciidoc
index 27a97fd..11f24e4 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -2385,6 +2385,8 @@ 
link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/grem
 
link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#select-org.apache.tinkerpop.gremlin.process.traversal.Pop-java.lang.String-++[`select(Pop,String)`],
 
link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#select-java.lang.String-++[`select(String)`],
 
link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#select-java.lang.String-java.lang.String-java.lang.String...-++[`select(String,String,String...)`],
+link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#select-org.apache.tinkerpop.gremlin.process.traversal.Traversal-++[`select(Traversal)`],
+link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#select-org.apache.tinkerpop.gremlin.process.traversal.Pop-org.apache.tinkerpop.gremlin.process.traversal.Traversal-++[`select(Pop,Traversal)`],
 
link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/structure/Column.html++[`Column`],
 
link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/Pop.html++[`Pop`]
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/20948e32/gremlin-test/features/map/Select.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Select.feature 
b/gremlin-test/features/map/Select.feature
index 54c15cc..713dd81 100644
--- a/gremlin-test/features/map/Select.feature
+++ b/gremlin-test/features/map/Select.feature
@@ -531,3 +531,31 @@ Feature: Step - select()
       | d[3].l |
       | d[1].l |
       | d[1].l |
+
+  Scenario: 
g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX_byXmathX_plus_XX
+    Given the modern graph
+    And the traversal of
+      """
+      
g.V().as("a").group("m").by().by(__.bothE().count()).barrier().select("m").select(__.select("a")).by(__.math("_+_"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[6].d |
+      | d[2].d |
+      | d[6].d |
+      | d[6].d |
+      | d[2].d |
+      | d[2].d |
+
+  Scenario: g_V_asXaX_outXknowsX_asXaX_selectXall_constantXaXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out("knows").as("a").select(Pop.all, __.constant("a"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[v[marko],v[vadas]] |
+      | l[v[marko],v[josh]] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/20948e32/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
index 9dbf261..2861724 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/AbstractGremlinProcessTest.java
@@ -129,6 +129,8 @@ public abstract class AbstractGremlinProcessTest extends 
AbstractGremlinTest {
         for (T t : results) {
             if (t instanceof Map) {
                 assertThat("Checking map result existence: " + t, 
expectedResults.stream().filter(e -> e instanceof Map).filter(e -> 
internalCheckMap((Map) e, (Map) t)).findAny().isPresent(), is(true));
+            } else if (t instanceof List) {
+                assertThat("Checking list result existence: " + t, 
expectedResults.stream().filter(e -> e instanceof List).filter(e -> 
internalCheckList((List) e, (List) t)).findAny().isPresent(), is(true));
             } else {
                 assertThat("Checking result existence: " + t, 
expectedResults.contains(t), is(true));
             }
@@ -162,6 +164,18 @@ public abstract class AbstractGremlinProcessTest extends 
AbstractGremlinTest {
         }
     }
 
+    private static <A> boolean internalCheckList(final List<A> expectedList, 
final List<A> actualList) {
+        if (expectedList.size() != actualList.size()) {
+            return false;
+        }
+        for (int i = 0; i < actualList.size(); i++) {
+            if (!actualList.get(i).equals(expectedList.get(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     private static <A, B> boolean internalCheckMap(final Map<A, B> 
expectedMap, final Map<A, B> actualMap) {
         final List<Map.Entry<A, B>> actualList = 
actualMap.entrySet().stream().sorted((a, b) -> 
a.getKey().toString().compareTo(b.getKey().toString())).collect(Collectors.toList());
         final List<Map.Entry<A, B>> expectedList = 
expectedMap.entrySet().stream().sorted((a, b) -> 
a.getKey().toString().compareTo(b.getKey().toString())).collect(Collectors.toList());

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/20948e32/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
----------------------------------------------------------------------
diff --git 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
index 9376e13..3140004 100644
--- 
a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
+++ 
b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectTest.java
@@ -85,6 +85,10 @@ public abstract class SelectTest extends 
AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Long> 
get_g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX();
 
+    public abstract Traversal<Vertex, Double> 
get_g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX_byXmathX_plus_XX();
+
+    public abstract Traversal<Vertex, List<Vertex>> 
get_g_V_asXaX_outXknowsX_asXaX_selectXall_constantXaXX();
+
     // below are original back()-tests
 
     public abstract Traversal<Vertex, Vertex> 
get_g_VX1X_asXhereX_out_selectXhereX(final Object v1Id);
@@ -351,6 +355,25 @@ public abstract class SelectTest extends 
AbstractGremlinProcessTest {
         checkResults(Arrays.asList(3L, 1L, 3L, 3L, 1L, 1L), traversal);
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void 
g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX_byXmathX_plus_XX()
 {
+        final Traversal<Vertex, Double> traversal = 
get_g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX_byXmathX_plus_XX();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList(6D, 2D, 6D, 6D, 2D, 2D), traversal);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_asXaX_outXknowsX_asXaX_selectXall_constantXaXX() {
+        final Vertex marko = convertToVertex(graph, "marko");
+        final Vertex vadas = convertToVertex(graph, "vadas");
+        final Vertex josh = convertToVertex(graph, "josh");
+        final Traversal<Vertex, List<Vertex>> traversal = 
get_g_V_asXaX_outXknowsX_asXaX_selectXall_constantXaXX();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList(Arrays.asList(marko, vadas), 
Arrays.asList(marko, josh)), traversal);
+    }
+
     // below are original back()-tests
 
     @Test
@@ -737,6 +760,16 @@ public abstract class SelectTest extends 
AbstractGremlinProcessTest {
             return 
g.V().as("a").group("m").by().by(__.bothE().count()).barrier().select("m").select(__.select("a"));
         }
 
+        @Override
+        public Traversal<Vertex, Double> 
get_g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX_byXmathX_plus_XX()
 {
+            return 
g.V().as("a").group("m").by().by(__.bothE().count()).barrier().select("m").<Double>select(__.select("a")).by(__.math("_+_"));
+        }
+
+        @Override
+        public Traversal<Vertex, List<Vertex>> 
get_g_V_asXaX_outXknowsX_asXaX_selectXall_constantXaXX() {
+            return g.V().as("a").out("knows").as("a").select(Pop.all, 
(Traversal) __.constant("a"));
+        }
+
         // below are original back()-tests
 
         @Override

Reply via email to