Merge branch 'TINKERPOP-2412' into 3.4-dev
diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature
index be1a899..4a6d5e7 100644
--- a/gremlin-test/features/map/Select.feature
+++ b/gremlin-test/features/map/Select.feature
@@ -743,3 +743,51 @@
| s[a,b] |
| s[c] |
And the graph should return 6 for count of "g.V().as(\"a\", \"b\").out().as(\"c\").path().select(Column.keys)"
+
+ Scenario: g_V_hasXperson_name_markoX_barrier_asXaX_outXknows_selectXaX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().has("person","name","marko").barrier().as("a").out("knows").select("a")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[marko] |
+ | v[marko] |
+
+ Scenario: g_V_hasXperson_name_markoX_elementMapXnameX_asXaX_unionXidentity_identityX_selectXaX_selectXnameX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().has("person","name","marko").elementMap("name").as("a").union(__.identity(),__.identity()).select("a").select("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | marko |
+ | marko |
+
+ Scenario: g_V_hasXperson_name_markoX_count_asXaX_unionXidentity_identityX_selectXaX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().has("person","name","marko").count().as("a").union(__.identity(),__.identity()).select("a")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | d[1].l |
+ | d[1].l |
+
+ Scenario: g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().has("person","name","marko").path().as("a").union(__.identity(),__.identity()).select("a").unfold()
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | v[marko] |
+ | v[marko] |
\ No newline at end of file
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 c4fbd70..470513c 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
@@ -43,6 +43,7 @@
import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static org.apache.tinkerpop.gremlin.process.traversal.Scope.local;
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.as;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.identity;
import static org.apache.tinkerpop.gremlin.structure.Column.keys;
import static org.apache.tinkerpop.gremlin.structure.Column.values;
import static org.junit.Assert.assertEquals;
@@ -178,6 +179,16 @@
public abstract Traversal<Vertex, Map<String, String>> get_g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX();
+ // triggers labelled path requirements
+
+ public abstract Traversal<Vertex, Vertex> get_g_V_hasXperson_name_markoX_barrier_asXaX_outXknows_selectXaX();
+
+ public abstract Traversal<Vertex, String> get_g_V_hasXperson_name_markoX_elementMapXnameX_asXaX_unionXidentity_identityX_selectXaX_selectXnameX();
+
+ public abstract Traversal<Vertex, Long> get_g_V_hasXperson_name_markoX_count_asXaX_unionXidentity_identityX_selectXaX();
+
+ public abstract Traversal<Vertex, Vertex> get_g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold();
+
@Test
@LoadGraphWith(MODERN)
public void g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX() {
@@ -826,6 +837,34 @@
checkResults(Arrays.asList(convertToVertex(graph, "ripple"), convertToVertex(graph, "lop")), traversal);
}
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasXperson_name_markoX_barrier_asXaX_outXknows_selectXaX() {
+ final Traversal<Vertex, Vertex> traversal = get_g_V_hasXperson_name_markoX_barrier_asXaX_outXknows_selectXaX();
+ checkResults(Arrays.asList(convertToVertex(graph, "marko"), convertToVertex(graph, "marko")), traversal);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasXperson_name_markoX_elementMapXnameX_asXaX_unionXidentity_identityX_selectXaX_selectXnameX() {
+ final Traversal<Vertex, String> traversal = get_g_V_hasXperson_name_markoX_elementMapXnameX_asXaX_unionXidentity_identityX_selectXaX_selectXnameX();
+ checkResults(Arrays.asList("marko", "marko"), traversal);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasXperson_name_markoX_count_asXaX_unionXidentity_identityX_selectXaX() {
+ final Traversal<Vertex, Long> traversal = get_g_V_hasXperson_name_markoX_count_asXaX_unionXidentity_identityX_selectXaX();
+ checkResults(Arrays.asList(1L, 1L), traversal);
+ }
+
+ @Test
+ @LoadGraphWith(MODERN)
+ public void g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold() {
+ final Traversal<Vertex, Vertex> traversal = get_g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold();
+ checkResults(Arrays.asList(convertToVertex(graph, "marko"), convertToVertex(graph, "marko")), traversal);
+ }
+
public static class Traversals extends SelectTest {
@Override
public Traversal<Vertex, Map<String, Vertex>> get_g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX(final Object v1Id) {
@@ -1119,5 +1158,25 @@
public Traversal<Vertex, Vertex> get_g_VX1X_asXaX_repeatXout_asXaXX_timesX2X_selectXlast_aX(final Object v1Id) {
return g.V(v1Id).as("a").repeat(__.out().as("a")).times(2).select(Pop.last, "a");
}
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_hasXperson_name_markoX_barrier_asXaX_outXknows_selectXaX() {
+ return g.V().has("person","name","marko").barrier().as("a").out("knows").select("a");
+ }
+
+ @Override
+ public Traversal<Vertex, String> get_g_V_hasXperson_name_markoX_elementMapXnameX_asXaX_unionXidentity_identityX_selectXaX_selectXnameX() {
+ return g.V().has("person","name","marko").elementMap("name").as("a").union(identity(),identity()).select("a").select("name");
+ }
+
+ @Override
+ public Traversal<Vertex, Long> get_g_V_hasXperson_name_markoX_count_asXaX_unionXidentity_identityX_selectXaX() {
+ return g.V().has("person","name","marko").count().as("a").union(identity(),identity()).select("a");
+ }
+
+ @Override
+ public Traversal<Vertex, Vertex> get_g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold() {
+ return g.V().has("person","name","marko").path().as("a").union(identity(),identity()).select("a").unfold();
+ }
}
}