You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/11/22 18:48:16 UTC

[01/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for or()

Repository: tinkerpop
Updated Branches:
  refs/heads/master 65259d2ea -> 04c522018


TINKERPOP-1784 Added feature tests for or()


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

Branch: refs/heads/master
Commit: bd3868b5aaeeaaad98261fe7ab4e31e2abf96c02
Parents: 72e98b6
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Oct 20 14:06:15 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:51 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/Or.feature         | 59 ++++++++++++++++++++
 .../gremlin/process/FeatureCoverageTest.java    |  2 +
 2 files changed, 61 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bd3868b5/gremlin-test/features/filter/Or.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Or.feature b/gremlin-test/features/filter/Or.feature
new file mode 100644
index 0000000..111315a
--- /dev/null
+++ b/gremlin-test/features/filter/Or.feature
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - or()
+
+  Scenario: g_V_orXhasXage_gt_27X__outE_count_gte_2X_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().or(__.has("age", P.gt(27)), __.outE().count().is(P.gte(2l))).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | josh  |
+      | peter |
+
+  Scenario: g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().or(__.outE("knows"), __.has(T.label, "software").or().has("age", P.gte(35))).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | ripple |
+      | lop  |
+      | peter |
+
+  Scenario: g_V_asXaX_orXselectXaX_selectXaXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").or(__.select("a"), __.select("a"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[marko] |
+      | v[vadas] |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+      | v[peter]  |
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bd3868b5/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 97f1fd6..282d8a8 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest;
@@ -75,6 +76,7 @@ public class FeatureCoverageTest {
                 CoinTest.class,
                 DropTest.class,
                 IsTest.class,
+                OrTest.class,
                 // map
                 CountTest.class,
                 PathTest.class,


[38/50] tinkerpop git commit: TINKERPOP-1784 Removed duplicate entry from bad merge in changelog

Posted by sp...@apache.org.
TINKERPOP-1784 Removed duplicate entry from bad merge in changelog


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

Branch: refs/heads/master
Commit: 33258993494225f61697fc8fe58d3b54d59766f8
Parents: 2b24f58
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 20:13:12 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33258993/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index cb2779a..d722066 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -30,7 +30,6 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * `TraversalVertexProgram` `profile()` now accounts for worker iteration in `GraphComputer` OLAP.
 * Returned the `Builder` instance from the `DetachedEdge.Builder` methods of `setOutE` and `setOutV`.
 * Added test framework for GLVs.
-* `TraversalVertexProgram` ``profile()` now accounts for worker iteration in `GraphComputer` OLAP.
 * Added a test for self-edges and fixed `Neo4jVertex` to provided repeated self-edges on `BOTH`.
 * Better respected permissions on the `plugins.txt` file and prevented writing if marked as read-only.
 * Added getters for the lambdas held by `LambdaCollectingBarrierStep`, `LambdaFlatMapStep` and `LambdaSideEffectStep`.


[09/50] tinkerpop git commit: TINKERPOP-1784 Disabled coverage test for features

Posted by sp...@apache.org.
TINKERPOP-1784 Disabled coverage test for features

No point to enabling at this time since all tests aren't really targetted for migration with this initial body of work. It will be turned on later when all test are intended for migration.


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

Branch: refs/heads/master
Commit: 7896264edf6a3ea94a2f7ae396da1f1db152311e
Parents: 3b54267
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 11:24:47 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java  | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7896264e/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index dba865b..cc6e9bd 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -35,6 +35,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateT
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreTest;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.io.BufferedReader;
@@ -65,6 +66,7 @@ public class FeatureCoverageTest {
     private static Pattern scenarioName = Pattern.compile("^\\s*Scenario:\\s*(.*)$");
 
     @Test
+    @Ignore("As it stands we won't have all of these tests migrated initially so there is no point to running this in full - it can be flipped on later")
     public void shouldImplementAllProcessTestsAsFeatures() throws Exception {
 
         // TEMPORARY while test framework is under development - all tests should ultimately be included


[29/50] tinkerpop git commit: TINKERPOP-1784 Added where() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added where() feature tests

This is not complete, but it is enough for now.


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

Branch: refs/heads/master
Commit: 9c93fd7c5589335323490000aae1d42e84f0afbc
Parents: e67cbdb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 12:35:04 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/Where.feature | 105 ++++++++++++++++++++++++
 1 file changed, 105 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9c93fd7c/gremlin-test/features/filter/Where.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Where.feature b/gremlin-test/features/filter/Where.feature
new file mode 100644
index 0000000..5c520da
--- /dev/null
+++ b/gremlin-test/features/filter/Where.feature
@@ -0,0 +1,105 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - where()
+
+  Scenario: g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_eqXbXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("age").as("a").out().in().has("age").as("b").select("a", "b").where("a", P.eq("b"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[marko]","b":"v[marko]"}] |
+      | m[{"a":"v[marko]","b":"v[marko]"}] |
+      | m[{"a":"v[marko]","b":"v[marko]"}] |
+      | m[{"a":"v[josh]","b":"v[josh]"}] |
+      | m[{"a":"v[josh]","b":"v[josh]"}] |
+      | m[{"a":"v[peter]","b":"v[peter]"}] |
+
+  Scenario: g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_neqXbXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("age").as("a").out().in().has("age").as("b").select("a", "b").where("a", P.neq("b"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[marko]","b":"v[josh]"}] |
+      | m[{"a":"v[marko]","b":"v[peter]"}] |
+      | m[{"a":"v[josh]","b":"v[marko]"}] |
+      | m[{"a":"v[josh]","b":"v[peter]"}] |
+      | m[{"a":"v[peter]","b":"v[marko]"}] |
+      | m[{"a":"v[peter]","b":"v[josh]"}] |
+
+  Scenario: g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXb_hasXname_markoXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("age").as("a").out().in().has("age").as("b").select("a", "b").where(__.as("b").has("name", "marko"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[marko]","b":"v[marko]"}] |
+      | m[{"a":"v[marko]","b":"v[marko]"}] |
+      | m[{"a":"v[marko]","b":"v[marko]"}] |
+      | m[{"a":"v[josh]","b":"v[marko]"}] |
+      | m[{"a":"v[peter]","b":"v[marko]"}] |
+
+  Scenario: g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_outXknowsX_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("age").as("a").out().in().has("age").as("b").select("a", "b").where(__.as("a").out("knows").as("b"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[marko]","b":"v[josh]"}] |
+
+  Scenario: g_V_asXaX_outXcreatedX_whereXasXaX_name_isXjoshXX_inXcreatedX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out("created").where(__.as("a").values("name").is("josh")).in("created").values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | josh |
+      | josh |
+      | marko |
+      | peter |
+
+  Scenario: g_withSideEffectXa_josh_peterX_VX1X_outXcreatedX_inXcreatedX_name_whereXwithinXaXX
+    Given the modern graph
+    And using the parameter l defined as "l[josh,peter]"
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.withSideEffect("a", l).V(v1Id).out("created").in("created").values("name").where(P.within("a"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | josh |
+      | peter |
+


[34/50] tinkerpop git commit: TINKERPOP-1784 Added properties() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added properties() feature tests


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

Branch: refs/heads/master
Commit: 447e57c2e2bad029ead63de2227b12db708cbd85
Parents: c7347ab
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 14:31:20 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Properties.feature | 68 +++++++++++++++++++++++
 1 file changed, 68 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/447e57c2/gremlin-test/features/map/Properties.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Properties.feature b/gremlin-test/features/map/Properties.feature
new file mode 100644
index 0000000..35ccd77
--- /dev/null
+++ b/gremlin-test/features/map/Properties.feature
@@ -0,0 +1,68 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - properties()
+
+  Scenario: g_V_hasXageX_propertiesXname_ageX_value
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("age").properties("name", "age").value()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | d[29] |
+      | vadas |
+      | d[27] |
+      | josh  |
+      | d[32] |
+      | peter |
+      | d[35] |
+
+  Scenario: g_V_hasXageX_propertiesXage_nameX_value
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("age").properties("age", "name").value()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | d[29] |
+      | vadas |
+      | d[27] |
+      | josh  |
+      | d[32] |
+      | peter |
+      | d[35] |
+
+  Scenario: g_V_hasXageX_properties_hasXid_nameIdX_value
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      There is no way to currently get property identifiers on elements.
+      """
+
+  Scenario: g_V_hasXageX_propertiesXnameX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      There is no way to currently assert property elements in the test logic.
+      """


[12/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for coalesce()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for coalesce()


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

Branch: refs/heads/master
Commit: e9ee40ff808253ad52655c3533ca9e81c97a73ea
Parents: 3a294df
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Nov 2 07:52:49 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Coalesce.feature | 78 +++++++++++++++++++++++++
 1 file changed, 78 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e9ee40ff/gremlin-test/features/map/Coalesce.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Coalesce.feature b/gremlin-test/features/map/Coalesce.feature
new file mode 100644
index 0000000..f7786ff
--- /dev/null
+++ b/gremlin-test/features/map/Coalesce.feature
@@ -0,0 +1,78 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - coalesce()
+
+  Scenario: g_V_coalesceXoutXfooX_outXbarXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().coalesce(__.out("foo"), __.out("bar"))
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_VX1X_coalesceXoutXknowsX_outXcreatedXX_valuesXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).coalesce(__.out("knows"), __.out("created")).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | vadas |
+      | josh |
+
+  Scenario: g_VX1X_coalesceXoutXcreatedX_outXknowsXX_valuesXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).coalesce(__.out("created"), __.out("knows")).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | lop |
+
+  Scenario: g_V_coalesceXoutXlikesX_outXknowsX_inXcreatedXX_groupCount_byXnameX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().coalesce(__.out("likes"), __.out("knows"), __.out("created")).groupCount().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":1, "vadas":1, "josh":1, "lop":2}] |
+
+  Scenario: g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().coalesce(__.outE("knows"), __.outE("created")).otherV().path().by("name").by(T.label)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | p[marko,knows,vadas] |
+      | p[marko,knows,josh] |
+      | p[josh,created,ripple] |
+      | p[josh,created,lop] |
+      | p[peter,created,lop] |


[22/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for min()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for min()


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

Branch: refs/heads/master
Commit: d55e058d873954af84a07683f7023f7b97755f37
Parents: c24d5b4
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 13:36:36 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Min.feature | 48 ++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d55e058d/gremlin-test/features/map/Min.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Min.feature b/gremlin-test/features/map/Min.feature
new file mode 100644
index 0000000..48ceeb9
--- /dev/null
+++ b/gremlin-test/features/map/Min.feature
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - min()
+
+  Scenario: g_V_age_min
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").min()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[27] |
+
+  Scenario: g_V_repeatXbothX_timesX5X_age_min
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.both()).times(5).values("age").min()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[27] |
+
+  Scenario: get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").min())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"ripple":1.0,"lop":0.2}] |


[03/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for match()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for match()


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

Branch: refs/heads/master
Commit: 3b54267846bc86a927cf44839c1333e2ba63135a
Parents: 8f0b8f7
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Nov 9 12:50:52 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Match.feature | 80 ++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3b542678/gremlin-test/features/map/Match.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Match.feature b/gremlin-test/features/map/Match.feature
new file mode 100644
index 0000000..59c56fd
--- /dev/null
+++ b/gremlin-test/features/map/Match.feature
@@ -0,0 +1,80 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - match()
+
+  Scenario: g_V_valueMap_matchXa_selectXnameX_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap().match(__.as("a").select("name").as("b"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":{"name":["marko"],"age":[29]},"b":["marko"]}] |
+      | m[{"a":{"name":["vadas"],"age":[27]},"b":["vadas"]}] |
+      | m[{"a":{"name":["lop"],"lang":["java"]},"b":["lop"]}] |
+      | m[{"a":{"name":["josh"],"age":[32]},"b":["josh"]}] |
+      | m[{"a":{"name":["ripple"],"lang":["java"]},"b":["ripple"]}] |
+      | m[{"a":{"name":["peter"],"age":[35]},"b":["peter"]}] |
+
+  Scenario: g_V_matchXa_out_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").out().as("b"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[marko]","b":"v[lop]"}] |
+      | m[{"a":"v[marko]","b":"v[vadas]"}] |
+      | m[{"a":"v[marko]","b":"v[josh]"}] |
+      | m[{"a":"v[josh]","b":"v[ripple]"}] |
+      | m[{"a":"v[josh]","b":"v[lop]"}] |
+      | m[{"a":"v[peter]","b":"v[lop]"}] |
+
+  Scenario: g_V_matchXa_out_bX_selectXb_idX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").out().as("b")).select("b").by(T.id)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[3] |
+      | d[2] |
+      | d[4] |
+      | d[5] |
+      | d[3] |
+      | d[3] |
+
+  Scenario: g_V_matchXa_knows_b__b_created_cX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().match(__.as("a").out("knows").as("b"),
+                  __.as("b").out("created").as("c"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[marko]","b":"v[josh]", "c":"v[ripple]"}] |
+      | m[{"a":"v[marko]","b":"v[josh]", "c":"v[lop]"}] |
+


[26/50] tinkerpop git commit: TINKERPOP-1784 Renamed loops() feature test to match the step name

Posted by sp...@apache.org.
TINKERPOP-1784 Renamed loops() feature test to match the step name


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

Branch: refs/heads/master
Commit: 26779e1904d24db9702c9a4b98f5107b930bf49f
Parents: 9910519
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 12:56:34 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Loop.feature  | 68 ----------------------------
 gremlin-test/features/map/Loops.feature | 68 ++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/26779e19/gremlin-test/features/map/Loop.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Loop.feature b/gremlin-test/features/map/Loop.feature
deleted file mode 100644
index efd439f..0000000
--- a/gremlin-test/features/map/Loop.feature
+++ /dev/null
@@ -1,68 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-Feature: Step - loop()
-
-  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX
-    Given the modern graph
-    And using the parameter v1Id defined as "v[marko].id"
-    And the traversal of
-      """
-      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(3)).has("name", "peter").path().by("name")
-      """
-    When iterated to list
-    Then the result should be unordered
-      | result |
-      | p[marko,lop,peter] |
-      | p[marko,josh,lop,peter] |
-
-  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX
-    Given the modern graph
-    And using the parameter v1Id defined as "v[marko].id"
-    And the traversal of
-      """
-      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(2)).has("name", "peter").path().by("name")
-      """
-    When iterated to list
-    Then the result should be unordered
-      | result |
-      | p[marko,lop,peter] |
-
-  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX
-    Given the modern graph
-    And using the parameter v1Id defined as "v[marko].id"
-    And the traversal of
-      """
-      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").and().loops().is(3)).has("name", "peter").path().by("name")
-      """
-    When iterated to list
-    Then the result should be unordered
-      | result |
-      | p[marko,josh,lop,peter] |
-
-  Scenario: g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX
-    Given the modern graph
-    And the traversal of
-      """
-      g.V().emit(__.has("name", "marko").or().loops().is(2)).repeat(__.out()).values("name")
-      """
-    When iterated to list
-    Then the result should be unordered
-      | result |
-      | marko |
-      | ripple |
-      | lop |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/26779e19/gremlin-test/features/map/Loops.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Loops.feature b/gremlin-test/features/map/Loops.feature
new file mode 100644
index 0000000..b8a70ae
--- /dev/null
+++ b/gremlin-test/features/map/Loops.feature
@@ -0,0 +1,68 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - loops()
+
+  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(3)).has("name", "peter").path().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | p[marko,lop,peter] |
+      | p[marko,josh,lop,peter] |
+
+  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(2)).has("name", "peter").path().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | p[marko,lop,peter] |
+
+  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").and().loops().is(3)).has("name", "peter").path().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | p[marko,josh,lop,peter] |
+
+  Scenario: g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().emit(__.has("name", "marko").or().loops().is(2)).repeat(__.out()).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | ripple |
+      | lop |


[36/50] tinkerpop git commit: TINKERPOP-1784 Updated changelog

Posted by sp...@apache.org.
TINKERPOP-1784 Updated changelog


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

Branch: refs/heads/master
Commit: 04c903e55c7bba523c1729625b6463a89031e2b4
Parents: 4a5b87c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 15:17:03 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:13 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c903e5/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 918bbd4..cb2779a 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -29,6 +29,8 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * Bump to Netty 4.0.52
 * `TraversalVertexProgram` `profile()` now accounts for worker iteration in `GraphComputer` OLAP.
 * Returned the `Builder` instance from the `DetachedEdge.Builder` methods of `setOutE` and `setOutV`.
+* Added test framework for GLVs.
+* `TraversalVertexProgram` ``profile()` now accounts for worker iteration in `GraphComputer` OLAP.
 * Added a test for self-edges and fixed `Neo4jVertex` to provided repeated self-edges on `BOTH`.
 * Better respected permissions on the `plugins.txt` file and prevented writing if marked as read-only.
 * Added getters for the lambdas held by `LambdaCollectingBarrierStep`, `LambdaFlatMapStep` and `LambdaSideEffectStep`.


[47/50] tinkerpop git commit: TINKERPOP-1784 Fixed data type in fold feature test

Posted by sp...@apache.org.
TINKERPOP-1784 Fixed data type in fold feature test


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

Branch: refs/heads/master
Commit: 11a180f9ba4ed836270395901a553d57de8884fa
Parents: 7231b5a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Nov 20 11:52:12 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Fold.feature | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/11a180f9/gremlin-test/features/map/Fold.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Fold.feature b/gremlin-test/features/map/Fold.feature
index 83f4be4..c711e1d 100644
--- a/gremlin-test/features/map/Fold.feature
+++ b/gremlin-test/features/map/Fold.feature
@@ -53,5 +53,5 @@ Feature: Step - fold()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[123].l |
+      | d[123].i |
 


[41/50] tinkerpop git commit: TINKERPOP-1784 Added validation for traversalSource alias

Posted by sp...@apache.org.
TINKERPOP-1784 Added validation for traversalSource alias

Ensures that a RemoteConnection in .NET is properly initialized.


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

Branch: refs/heads/master
Commit: a3c981f1c6ae1bc272255d87cc36df36833eac4e
Parents: 5767544
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Nov 13 07:52:42 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 .../src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a3c981f1/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
index 80bd100..8cbd43d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
@@ -56,7 +56,7 @@ namespace Gremlin.Net.Driver.Remote
         public DriverRemoteConnection(IGremlinClient client, string traversalSource)
         {
             _client = client ?? throw new ArgumentNullException(nameof(client));
-            _traversalSource = traversalSource;
+            _traversalSource = traversalSource ?? throw new ArgumentNullException(nameof(traversalSource));
         }
 
         /// <summary>


[11/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for cyclicPath()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for cyclicPath()


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

Branch: refs/heads/master
Commit: a9af53ffa88432a5adefaf93e8df8158151a186f
Parents: d977d6a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 10:24:40 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/CyclicPath.feature | 50 ++++++++++++++++++++
 1 file changed, 50 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a9af53ff/gremlin-test/features/filter/CyclicPath.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/CyclicPath.feature b/gremlin-test/features/filter/CyclicPath.feature
new file mode 100644
index 0000000..d07e4ad
--- /dev/null
+++ b/gremlin-test/features/filter/CyclicPath.feature
@@ -0,0 +1,50 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - cyclicPath()
+
+  Scenario: g_VX1X_outXcreatedX_inXcreatedX_cyclicPath
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("created").in("created").cyclicPath()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[marko] |
+
+  Scenario: g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("created").in("created").cyclicPath().path()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | p[v[marko],v[lop],v[marko]] |
+
+  Scenario: g_VX1X_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_cyclicPath_fromXaX_toXbX_path
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).as("a").out("created").as("b").in("created").as("c").cyclicPath().from("a").to("b").path()
+      """
+    When iterated to list
+    Then the result should be empty


[42/50] tinkerpop git commit: TINKERPOP-1784 Updated changelog

Posted by sp...@apache.org.
TINKERPOP-1784 Updated changelog


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

Branch: refs/heads/master
Commit: 576754415381205936f9a8be5cf50259d13faacb
Parents: 314ab67
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat Nov 11 06:20:32 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/57675441/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index d722066..5ba7c70 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -30,6 +30,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * `TraversalVertexProgram` `profile()` now accounts for worker iteration in `GraphComputer` OLAP.
 * Returned the `Builder` instance from the `DetachedEdge.Builder` methods of `setOutE` and `setOutV`.
 * Added test framework for GLVs.
+* Added alias support in the .NET `DriverRemoteConnection`.
 * Added a test for self-edges and fixed `Neo4jVertex` to provided repeated self-edges on `BOTH`.
 * Better respected permissions on the `plugins.txt` file and prevented writing if marked as read-only.
 * Added getters for the lambdas held by `LambdaCollectingBarrierStep`, `LambdaFlatMapStep` and `LambdaSideEffectStep`.


[08/50] tinkerpop git commit: TINKERPOP-1784 Added tail() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added tail() feature tests

Added fixes to python test logic for the reserved global keyword and fixed ordering test logic a bit.


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

Branch: refs/heads/master
Commit: e67cbdb86241dd7d2baa42cb9a6e1458788839ee
Parents: 7896264
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 12:05:57 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |   7 +-
 gremlin-test/features/filter/Tail.feature       | 166 +++++++++++++++++++
 2 files changed, 171 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e67cbdb8/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index dae6361a..6c72bf1 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -28,6 +28,7 @@ from hamcrest import *
 regex_and = re.compile(r"([(.,\s])and\(")
 regex_as = re.compile(r"([(.,\s])as\(")
 regex_from = re.compile(r"([(.,\s])from\(")
+regex_global = re.compile(r"([(.,\s])global")
 regex_in = re.compile(r"([(.,\s])in\(")
 regex_is = re.compile(r"([(.,\s])is\(")
 regex_not = re.compile(r"([(.,\s])not\(")
@@ -193,15 +194,17 @@ def _table_assertion(data, result, ctx, ordered):
             assert_that(results_to_test[ix], equal_to(val))
         else:
             assert_that(val, is_in(results_to_test))
-        results_to_test.remove(val)
+            results_to_test.remove(val)
 
-    assert_that(len(results_to_test), is_(0))
+    if not ordered:
+        assert_that(len(results_to_test), is_(0))
 
 
 def _translate(traversal):
     replaced = traversal.replace("\n", "")
     replaced = regex_and.sub(r"\1and_(", replaced)
     replaced = regex_from.sub(r"\1from_(", replaced)
+    replaced = regex_global.sub(r"\1global_", replaced)
     replaced = regex_as.sub(r"\1as_(", replaced)
     replaced = regex_is.sub(r"\1is_(", replaced)
     replaced = regex_not.sub(r"\1not_(", replaced)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e67cbdb8/gremlin-test/features/filter/Tail.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Tail.feature b/gremlin-test/features/filter/Tail.feature
new file mode 100644
index 0000000..35083ef
--- /dev/null
+++ b/gremlin-test/features/filter/Tail.feature
@@ -0,0 +1,166 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - tail()
+
+  Scenario: g_V_valuesXnameX_order_tailXglobal_2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("name").order().tail(Scope.global, 2)
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | ripple |
+      | vadas |
+
+  Scenario: g_V_valuesXnameX_order_tailX2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("name").order().tail(2)
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | ripple |
+      | vadas |
+
+  Scenario: g_V_valuesXnameX_order_tail
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("name").order().tail()
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | vadas |
+
+  Scenario: g_V_valuesXnameX_order_tailX7X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("name").order().tail(7)
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | josh   |
+      | lop    |
+      | marko  |
+      | peter  |
+      | ripple |
+      | vadas  |
+
+  Scenario: g_V_repeatXbothX_timesX3X_tailX7X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.both()).times(3).tail(7)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[peter] |
+      | v[peter] |
+      | v[peter] |
+      | v[peter] |
+      | v[marko] |
+      | v[marko] |
+      | v[marko] |
+
+  Scenario: g_V_repeatXin_outX_timesX3X_tailX7X_count
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.in().out()).times(3).tail(7).count()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[7] |
+
+  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local, 2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[josh,ripple] |
+      | l[josh,lop] |
+
+  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_1X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local, 1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | ripple |
+      | lop |
+
+  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocalX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | ripple |
+      | lop |
+
+  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXlimitXlocal_0XX_tailXlocal_1X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("a").out().as("a").select("a").by(__.limit(Scope.local, 0)).tail(Scope.local, 1)
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local, 2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"b":"josh","c":"ripple"}] |
+      | m[{"b":"josh","c":"lop"}] |
+
+  Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_1X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local, 1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"c":"ripple"}] |
+      | m[{"c":"lop"}] |
\ No newline at end of file


[17/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for simplePath()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for simplePath()


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

Branch: refs/heads/master
Commit: c24d5b40746950c28c02fef97da27cb95abf687b
Parents: d11787a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 12:46:26 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/SimplePath.feature | 69 ++++++++++++++++++++
 1 file changed, 69 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c24d5b40/gremlin-test/features/filter/SimplePath.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/SimplePath.feature b/gremlin-test/features/filter/SimplePath.feature
new file mode 100644
index 0000000..c8091af
--- /dev/null
+++ b/gremlin-test/features/filter/SimplePath.feature
@@ -0,0 +1,69 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - simplePath()
+
+  Scenario: g_VX1X_outXcreatedX_inXcreatedX_simplePath
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("created").in("created").simplePath()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[josh] |
+      | v[peter] |
+
+  Scenario: get_g_V_repeatXboth_simplePathX_timesX3X_path
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.both().simplePath()).times(3).path()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | p[v[marko],v[lop],v[josh],v[ripple]] |
+      | p[v[marko],v[josh],v[lop],v[peter]] |
+      | p[v[vadas],v[marko],v[lop],v[josh]] |
+      | p[v[vadas],v[marko],v[lop],v[peter]] |
+      | p[v[vadas],v[marko],v[josh],v[ripple]] |
+      | p[v[vadas],v[marko],v[josh],v[lop]] |
+      | p[v[lop],v[marko],v[josh],v[ripple]] |
+      | p[v[lop],v[josh],v[marko],v[vadas]] |
+      | p[v[josh],v[lop],v[marko],v[vadas]] |
+      | p[v[josh],v[marko],v[lop],v[peter]] |
+      | p[v[ripple],v[josh],v[lop],v[marko]] |
+      | p[v[ripple],v[josh],v[lop],v[peter]] |
+      | p[v[ripple],v[josh],v[marko],v[lop]] |
+      | p[v[ripple],v[josh],v[marko],v[vadas]] |
+      | p[v[peter],v[lop],v[marko],v[vadas]] |
+      | p[v[peter],v[lop],v[marko],v[josh]] |
+      | p[v[peter],v[lop],v[josh],v[ripple]] |
+      | p[v[peter],v[lop],v[josh],v[marko]] |
+
+  Scenario: get_g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V().as("a").out().as("b").out().as("c").simplePath().by(T.label).from("b").to("c").path().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | p[marko,josh,ripple] |
+      | p[marko,josh,lop]    |


[06/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for loop() and map()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for loop() and map()


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

Branch: refs/heads/master
Commit: 8f0b8f7a7c4455f92cd1384720262f068c8f8be6
Parents: 75d1e27
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Nov 2 11:59:10 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Loop.feature |  68 ++++++++++++++++++
 gremlin-test/features/map/Map.feature  | 108 ++++++++++++++++++++++++++++
 2 files changed, 176 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8f0b8f7a/gremlin-test/features/map/Loop.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Loop.feature b/gremlin-test/features/map/Loop.feature
new file mode 100644
index 0000000..efd439f
--- /dev/null
+++ b/gremlin-test/features/map/Loop.feature
@@ -0,0 +1,68 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - loop()
+
+  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(3)).has("name", "peter").path().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | p[marko,lop,peter] |
+      | p[marko,josh,lop,peter] |
+
+  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(2)).has("name", "peter").path().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | p[marko,lop,peter] |
+
+  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").and().loops().is(3)).has("name", "peter").path().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | p[marko,josh,lop,peter] |
+
+  Scenario: g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().emit(__.has("name", "marko").or().loops().is(2)).repeat(__.out()).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | ripple |
+      | lop |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8f0b8f7a/gremlin-test/features/map/Map.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Map.feature b/gremlin-test/features/map/Map.feature
new file mode 100644
index 0000000..573b404
--- /dev/null
+++ b/gremlin-test/features/map/Map.feature
@@ -0,0 +1,108 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - map()
+
+  Scenario: g_VX1X_mapXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter l defined as "c[it.get().value('name')]"
+    And the traversal of
+      """
+      g.V(v1Id).map(l)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+
+  Scenario: g_VX1X_outE_label_mapXlengthX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter l defined as "c[it.get().length()]"
+    And the traversal of
+      """
+      g.V(v1Id).outE().label().map(l)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[7] |
+      | d[5] |
+      | d[5] |
+
+  Scenario: g_VX1X_out_mapXnameX_mapXlengthX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter l1 defined as "c[it.get().value('name')]"
+    And using the parameter l2 defined as "c[it.get().toString().length()]"
+    And the traversal of
+      """
+      g.V(v1Id).out().map(l1).map(l2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[3] |
+      | d[5] |
+      | d[4] |
+
+  Scenario: g_withPath_V_asXaX_out_mapXa_nameX
+    Given the modern graph
+    And using the parameter l defined as "c[it.path('a').value('name')]"
+    And the traversal of
+      """
+      g.withPath().V().as("a").out().map(l)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | marko |
+      | marko |
+      | josh  |
+      | josh  |
+      | peter |
+
+  Scenario: g_withPath_V_asXaX_out_out_mapXa_name_it_nameX
+    Given the modern graph
+    And using the parameter l defined as "c[it.path('a').value('name')  + it.get().value('name')]"
+    And the traversal of
+      """
+      g.withPath().V().as("a").out().out().map(l)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | markoripple |
+      | markolop |
+
+  Scenario: g_V_mapXselectXaXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").map(__.select("a"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[marko] |
+      | v[vadas] |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+      | v[peter]  |


[50/50] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'

Conflicts:
	gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
	gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
	gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
	gremlin-server/src/test/scripts/test-server-start.groovy
	gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalTest.java


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

Branch: refs/heads/master
Commit: 04c52201857a92ccfdd7e8d2e19e4aceaae9d76a
Parents: 65259d2 78a1095
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Nov 22 13:47:48 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Nov 22 13:47:48 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   2 +
 .../Driver/Remote/DriverRemoteConnection.cs     |  16 +-
 .../GraphTraversalTests.cs                      |   8 +-
 .../RemoteConnectionFactory.cs                  |   8 +-
 gremlin-dotnet/test/pom.xml                     |   6 +-
 gremlin-python/pom.xml                          |  21 +-
 .../src/main/jython/radish/feature_steps.py     | 230 +++++++++
 .../src/main/jython/radish/terrain.py           | 101 ++++
 gremlin-python/src/main/jython/setup.py         |   4 +-
 .../remote/gremlin-server-integration.yaml      |   3 -
 .../server/gremlin-server-integration.yaml      |   3 -
 .../src/test/scripts/generate-all.groovy        |  40 ++
 .../src/test/scripts/test-server-start.groovy   |  26 +-
 .../test/scripts/tinkergraph-empty.properties   |  20 +
 gremlin-test/features/branch/Branch.feature     |  92 ++++
 gremlin-test/features/branch/Choose.feature     | 124 +++++
 gremlin-test/features/branch/Local.feature      | 183 +++++++
 gremlin-test/features/branch/Optional.feature   |  81 ++++
 gremlin-test/features/branch/Repeat.feature     | 230 +++++++++
 gremlin-test/features/branch/Union.feature      | 140 ++++++
 gremlin-test/features/filter/And.feature        |  69 +++
 gremlin-test/features/filter/Coin.feature       |  43 ++
 gremlin-test/features/filter/CyclicPath.feature |  52 ++
 gremlin-test/features/filter/Dedup.feature      | 237 +++++++++
 gremlin-test/features/filter/Drop.feature       |  63 +++
 gremlin-test/features/filter/Filter.feature     | 111 +++++
 gremlin-test/features/filter/Has.feature        |  45 ++
 gremlin-test/features/filter/Is.feature         |  75 +++
 gremlin-test/features/filter/Or.feature         |  62 +++
 gremlin-test/features/filter/Range.feature      | 171 +++++++
 gremlin-test/features/filter/Sample.feature     |  75 +++
 gremlin-test/features/filter/SimplePath.feature |  72 +++
 gremlin-test/features/filter/Tail.feature       | 145 ++++++
 gremlin-test/features/filter/Where.feature      | 105 ++++
 gremlin-test/features/map/AddEdge.feature       | 307 ++++++++++++
 gremlin-test/features/map/AddVertex.feature     | 147 ++++++
 gremlin-test/features/map/Coalesce.feature      |  78 +++
 gremlin-test/features/map/Constant.feature      |  52 ++
 gremlin-test/features/map/Count.feature         | 125 +++++
 gremlin-test/features/map/FlatMap.feature       |  35 ++
 gremlin-test/features/map/Fold.feature          |  57 +++
 gremlin-test/features/map/Graph.feature         | 109 +++++
 gremlin-test/features/map/Loops.feature         |  68 +++
 gremlin-test/features/map/Map.feature           | 108 +++++
 gremlin-test/features/map/Match.feature         |  80 ++++
 gremlin-test/features/map/Max.feature           |  51 ++
 gremlin-test/features/map/Mean.feature          |  40 ++
 gremlin-test/features/map/Min.feature           |  51 ++
 gremlin-test/features/map/Order.feature         | 132 ++++++
 gremlin-test/features/map/Path.feature          | 105 ++++
 gremlin-test/features/map/Project.feature       |  55 +++
 gremlin-test/features/map/Properties.feature    |  68 +++
 gremlin-test/features/map/Select.feature        | 324 +++++++++++++
 gremlin-test/features/map/Sum.feature           |  40 ++
 gremlin-test/features/map/Unfold.feature        |  76 +++
 gremlin-test/features/map/ValueMap.feature      |  62 +++
 gremlin-test/features/map/Vertex.feature        | 475 +++++++++++++++++++
 .../features/sideEffect/Aggregate.feature       |  80 ++++
 gremlin-test/features/sideEffect/Group.feature  | 244 ++++++++++
 .../features/sideEffect/GroupCount.feature      | 187 ++++++++
 gremlin-test/features/sideEffect/Inject.feature |  51 ++
 gremlin-test/features/sideEffect/Sack.feature   |  71 +++
 .../features/sideEffect/SideEffectCap.feature   |  38 ++
 gremlin-test/features/sideEffect/Store.feature  |  87 ++++
 .../step/sideEffect/GroupCountTest.java         |   2 +-
 .../gremlin/process/FeatureCoverageTest.java    | 131 +++++
 66 files changed, 6174 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --cc gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index 406bbb6,d9c47f1..90b2ea8
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@@ -135,10 -135,10 +135,10 @@@ namespace Gremlin.Net.IntegrationTest.P
              var g = graph.Traversal().WithRemote(connection);
  
              var shortestPath =
 -                g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit(1).Path().Next();
 +                g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit<Vertex>(1).Path().Next();
  
              Assert.Equal(4, shortestPath.Count);
-             Assert.Equal(new Vertex((long) 6), shortestPath[3]);
+             Assert.Equal(new Vertex(6), shortestPath[3]);
          }
  
          [Fact]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-python/pom.xml
----------------------------------------------------------------------
diff --cc gremlin-python/pom.xml
index 7365f6f,a1aee4a..27b3221
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@@ -440,6 -440,17 +440,17 @@@ limitations under the License
                                              <env key="PYTHONPATH" value=""/>
                                              <arg line="setup.py test"/>
                                          </exec>
+                                         <!-- radish seems to like all dependencies in place -->
+                                         <exec executable="env/bin/python" dir="${project.build.directory}/python2"
+                                               failonerror="true">
+                                             <env key="PYTHONPATH" value=""/>
+                                             <arg line="setup.py install"/>
+                                         </exec>
+                                         <exec executable="env/bin/radish" dir="${project.build.directory}/python2"
+                                               failonerror="true">
+                                             <env key="PYTHONPATH" value=""/>
 -                                            <arg line="-e -t -b ${project.build.directory}/python2/radish ${project.basedir}/../gremlin-test/features/"/> <!-- -no-line-jump -->
++                                            <arg line="-e -t -b ${project.build.directory}/python2/radish ${project.basedir}/../gremlin-test/features/ --no-line-jump"/> <!-- -no-line-jump -->
+                                         </exec>
                                      </target>
                                  </configuration>
                              </execution>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-python/src/main/jython/radish/terrain.py
----------------------------------------------------------------------
diff --cc gremlin-python/src/main/jython/radish/terrain.py
index 0000000,5897852..f91c603
mode 000000,100644..100644
--- a/gremlin-python/src/main/jython/radish/terrain.py
+++ b/gremlin-python/src/main/jython/radish/terrain.py
@@@ -1,0 -1,114 +1,101 @@@
+ '''
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ '''
+ 
+ import re
+ from gremlin_python.structure.graph import Graph
+ from gremlin_python.process.graph_traversal import __
++from gremlin_python.driver import serializer
+ from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
+ from radish import before, after, world
+ 
+ outV = __.outV
+ label = __.label
+ inV = __.inV
+ project = __.project
+ tail = __.tail
+ 
+ 
+ @before.all
+ def prepare_static_traversal_source(features, marker):
+     # as the various traversal sources for testing do not change their data, there is no need to re-create remotes
+     # and client side lookup data over and over. it can be created once for all tests and be reused.
+     cache = {}
+     for graph_name in (("modern", "gmodern"), ("classic", "gclassic"), ("crew", "gcrew"), ("grateful", "ggrateful")):
+         cache[graph_name[0]] = {}
+         remote = __create_remote(graph_name[1])
+         cache[graph_name[0]]["remote_conn"] = __create_remote(graph_name[1])
+         cache[graph_name[0]]["lookup_v"] = __create_lookup_v(remote)
+         cache[graph_name[0]]["lookup_e"] = __create_lookup_e(remote)
+ 
+     # store the cache on the global context so that remotes can be shutdown cleanly at the end of the tests
+     world.cache = cache
+ 
+     # iterate each feature and apply the cached remotes/lookups to each scenario context so that they are
+     # accessible to the feature steps for test logic
+     for feature in features:
+         for scenario in feature.all_scenarios:
+             scenario.context.remote_conn = {}
+             scenario.context.lookup_v = {}
+             scenario.context.lookup_e = {}
+ 
+             for graph_name in ("modern", "classic", "crew", "grateful"):
+                 scenario.context.remote_conn[graph_name] = cache[graph_name]["remote_conn"]
+                 scenario.context.lookup_v[graph_name] = cache[graph_name]["lookup_v"]
+                 scenario.context.lookup_e[graph_name] = cache[graph_name]["lookup_e"]
+ 
+ 
+ @before.each_scenario
+ def prepare_traversal_source(scenario):
+     # some tests create data - create a fresh remote to the empty graph and clear that graph prior to each test
 -    remote = DriverRemoteConnection('ws://localhost:45940/gremlin', "ggraph")
++    remote = DriverRemoteConnection('ws://localhost:45940/gremlin', "ggraph", message_serializer=serializer.GraphSONSerializersV2d0())
+     scenario.context.remote_conn["empty"] = remote
+     g = Graph().traversal().withRemote(remote)
+     g.V().drop().iterate()
+ 
+ 
+ @after.each_scenario
+ def close_traversal_source(scenario):
+     scenario.context.remote_conn["empty"].close()
+ 
+ 
+ @after.all
+ def close_static_traversal_source(features, marker):
+     for key, value in world.cache.iteritems():
+         value["remote_conn"].close()
+ 
+ 
+ def __create_remote(server_graph_name):
 -    return DriverRemoteConnection('ws://localhost:45940/gremlin', server_graph_name)
++    return DriverRemoteConnection('ws://localhost:45940/gremlin', server_graph_name, message_serializer=serializer.GraphSONSerializersV2d0())
+ 
+ 
+ def __create_lookup_v(remote):
+     g = Graph().traversal().withRemote(remote)
+ 
+     # hold a map of name/vertex for use in asserting results
+     return g.V().group().by('name').by(tail()).next()
+ 
+ 
+ def __create_lookup_e(remote):
+     g = Graph().traversal().withRemote(remote)
+ 
+     # hold a map of the "name"/edge for use in asserting results - "name" in this context is in the form of
+     # outgoingV-label->incomingV
 -    projection_of_edges = g.E().group(). \
 -        by(project("o", "l", "i").
 -           by(outV().values("name")).
 -           by(label()).
 -           by(inV().values("name"))). \
++    return g.E().group(). \
++        by(lambda: ("it.outVertex().value('name') + '-' + it.label() + '->' + it.inVertex().value('name')", "gremlin-groovy")).\
+         by(tail()).next()
 -    edges = {}
 -
 -    # in GraphSON 3.0 the "key" will be a dictionary and this can work more nicely - right now it's stuck as
 -    # a string and has to be parsed
 -    for key, value in projection_of_edges.items():
 -        o = re.search("o=(.+?)[,\}]", key).group(1)
 -        l = re.search("l=(.+?)[,\}]", key).group(1)
 -        i = re.search("i=(.+?)[,\}]", key).group(1)
 -        edges[o + "-" + l + "->" + i] = value
 -
 -    return edges

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-server/src/test/scripts/test-server-start.groovy
----------------------------------------------------------------------
diff --cc gremlin-server/src/test/scripts/test-server-start.groovy
index c187752,157f01c..00ebb59
--- a/gremlin-server/src/test/scripts/test-server-start.groovy
+++ b/gremlin-server/src/test/scripts/test-server-start.groovy
@@@ -25,9 -25,16 +25,16 @@@ if (Boolean.parseBoolean(skipTests)) re
  
  log.info("Starting Gremlin Server instances for native testing of ${executionName}")
  def settings = Settings.read("${settingsFile}")
- settings.graphs.graph = gremlinServerDir + "/conf/tinkergraph-empty.properties"
- settings.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = [gremlinServerDir + "/scripts/generate-modern.groovy"]
- settings.serializers << new SerializerSettings("org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0", [:])
+ settings.graphs.graph = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settings.graphs.classic = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settings.graphs.modern = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settings.graphs.crew = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settings.graphs.grateful = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
 -settings.scriptEngines["gremlin-groovy"].scripts = [gremlinServerDir + "/src/test/scripts/generate-all.groovy"]
++settings.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = [gremlinServerDir + "/src/test/scripts/generate-all.groovy"]
+ if (Boolean.parseBoolean(python)) {
+     settings.scriptEngines["gremlin-python"] = new Settings.ScriptEngineSettings()
+     settings.scriptEngines["gremlin-jython"] = new Settings.ScriptEngineSettings()
+ }
  settings.port = 45940
  
  def server = new GremlinServer(settings)
@@@ -36,22 -43,20 +43,29 @@@ server.start().join(
  project.setContextValue("gremlin.server", server)
  log.info("Gremlin Server with no authentication started on port 45940")
  
 +def securePropsFile = new File("${projectBaseDir}/target/tinkergraph-credentials.properties")
 +if (!securePropsFile.exists()) {
 +    securePropsFile.createNewFile()
 +    securePropsFile << "gremlin.graph=org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph\n"
 +    securePropsFile << "gremlin.tinkergraph.vertexIdManager=LONG\n"
 +    securePropsFile << "gremlin.tinkergraph.graphLocation=${gremlinServerDir}/data/credentials.kryo\n"
 +    securePropsFile << "gremlin.tinkergraph.graphFormat=gryo"
 +}
 +
  def settingsSecure = Settings.read("${settingsFile}")
- settingsSecure.graphs.graph = gremlinServerDir + "/conf/tinkergraph-empty.properties"
- settingsSecure.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = [gremlinServerDir + "/scripts/generate-modern.groovy"]
- settingsSecure.serializers << new SerializerSettings("org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0", [:])
+ settingsSecure.graphs.graph = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settingsSecure.graphs.classic = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settingsSecure.graphs.modern = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settingsSecure.graphs.crew = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+ settingsSecure.graphs.grateful = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
 -settingsSecure.scriptEngines["gremlin-groovy"].scripts = [gremlinServerDir + "/src/test/scripts/generate-all.groovy"]
++settingsSecure.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = [gremlinServerDir + "/src/test/scripts/generate-all.groovy"]
+ if (Boolean.parseBoolean(python)) {
+     settingsSecure.scriptEngines["gremlin-python"] = new Settings.ScriptEngineSettings()
+     settingsSecure.scriptEngines["gremlin-jython"] = new Settings.ScriptEngineSettings()
+ }
  settingsSecure.port = 45941
 -settingsSecure.authentication.className = SimpleAuthenticator.class.name
 -settingsSecure.authentication.config = [credentialsDb: gremlinServerDir + "/conf/tinkergraph-credentials.properties", credentialsDbLocation: gremlinServerDir + "/data/credentials.kryo"]
 +settingsSecure.authentication.authenticator = "org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator"
 +settingsSecure.authentication.config = [credentialsDb: projectBaseDir + "/target/tinkergraph-credentials.properties"]
  
  def serverSecure = new GremlinServer(settingsSecure)
  serverSecure.start().join()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-test/features/filter/Range.feature
----------------------------------------------------------------------
diff --cc gremlin-test/features/filter/Range.feature
index 0000000,42e2f9a..d9e7f23
mode 000000,100644..100644
--- a/gremlin-test/features/filter/Range.feature
+++ b/gremlin-test/features/filter/Range.feature
@@@ -1,0 -1,228 +1,171 @@@
+ # Licensed to the Apache Software Foundation (ASF) under one
+ # or more contributor license agreements.  See the NOTICE file
+ # distributed with this work for additional information
+ # regarding copyright ownership.  The ASF licenses this file
+ # to you under the Apache License, Version 2.0 (the
+ # "License"); you may not use this file except in compliance
+ # with the License.  You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing,
+ # software distributed under the License is distributed on an
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ # KIND, either express or implied.  See the License for the
+ # specific language governing permissions and limitations
+ # under the License.
+ 
+ Feature: Step - range()
+ 
+   Scenario: g_VX1X_out_limitX2X
+     Given the modern graph
+     And using the parameter v1Id defined as "v[marko].id"
+     And the traversal of
+       """
+       g.V(v1Id).out().limit(2)
+       """
+     When iterated to list
+     Then the result should be of
+       | result |
+       | v[josh] |
+       | v[vadas] |
+       | v[lop] |
+     And the result should have a count of 2
+ 
+   Scenario: g_V_localXoutE_limitX1X_inVX_limitX3X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().local(__.outE().limit(1)).inV().limit(3)
+       """
+     When iterated to list
+     Then the result should be of
+       | result |
+       | v[josh] |
+       | v[vadas] |
+       | v[lop] |
+       | v[ripple] |
+     And the result should have a count of 3
+ 
+   Scenario: g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV
+     Given the modern graph
+     And using the parameter v1Id defined as "v[marko].id"
+     And the traversal of
+       """
+       g.V(v1Id).out("knows").outE("created").range(0, 1).inV()
+       """
+     When iterated to list
+     Then the result should be of
+       | result |
+       | v[lop] |
+       | v[ripple] |
+     And the result should have a count of 1
+ 
+   Scenario: g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X
+     Given the modern graph
+     And using the parameter v1Id defined as "v[marko].id"
+     And the traversal of
+       """
+       g.V(v1Id).out("knows").out("created").range(0, 1)
+       """
+     When iterated to list
+     Then the result should be of
+       | result |
+       | v[lop] |
+       | v[ripple] |
+     And the result should have a count of 1
+ 
+   Scenario: g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X
+     Given the modern graph
+     And using the parameter v1Id defined as "v[marko].id"
+     And the traversal of
+       """
+       g.V(v1Id).out("created").in("created").range(1, 3)
+       """
+     When iterated to list
+     Then the result should be of
+       | result |
+       | v[marko] |
+       | v[josh] |
+       | v[peter] |
+     And the result should have a count of 2
+ 
+   Scenario: get_g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV
+     Given the modern graph
+     And using the parameter v1Id defined as "v[marko].id"
+     And the traversal of
+       """
+       g.V(v1Id).out("created").inE("created").range(1, 3).outV()
+       """
+     When iterated to list
+     Then the result should be of
+       | result |
+       | v[marko] |
+       | v[josh] |
+       | v[peter] |
+     And the result should have a count of 2
+ 
+   Scenario: get_g_V_repeatXbothX_timesX3X_rangeX5_11X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().repeat(__.both()).times(3).range(5, 11)
+       """
+     When iterated to list
+     Then the result should be of
+       | result |
+       | v[marko] |
+       | v[josh] |
+       | v[peter] |
+       | v[lop] |
+       | v[vadas] |
+       | v[ripple] |
+     And the result should have a count of 6
+ 
 -  Scenario: g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_2X
 -    Given the modern graph
 -    And the traversal of
 -      """
 -      g.V().as("a").in().as("a").in().as("a").select("a").by(__.unfold().values("name").fold()).limit(Scope.local, 2)
 -      """
 -    When iterated to list
 -    Then the result should be unordered
 -      | result |
 -      | l[lop,josh] |
 -      | l[ripple,josh] |
 -
 -  Scenario: g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_1X
 -    Given the modern graph
 -    And the traversal of
 -      """
 -      g.V().as("a").in().as("a").in().as("a").select("a").by(__.unfold().values("name").fold()).limit(Scope.local, 1)
 -      """
 -    When iterated to list
 -    Then the result should be unordered
 -      | result |
 -      | lop |
 -      | ripple |
 -
 -  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_3X
 -    Given the modern graph
 -    And the traversal of
 -      """
 -      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).range(Scope.local, 1, 3)
 -      """
 -    When iterated to list
 -    Then the result should be unordered
 -      | result |
 -      | l[josh,ripple] |
 -      | l[josh,lop] |
 -
 -  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_2X
 -    Given the modern graph
 -    And the traversal of
 -      """
 -      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).range(Scope.local, 1, 2)
 -      """
 -    When iterated to list
 -    Then the result should be unordered
 -      | result |
 -      | josh |
 -      | josh |
 -
 -  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_4_5X
 -    Given the modern graph
 -    And the traversal of
 -      """
 -      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).range(Scope.local, 4, 5)
 -      """
 -    When iterated to list
 -    Then the result should be empty
 -
+   Scenario: g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").in().as("b").in().as("c").select("a","b","c").by("name").limit(Scope.local, 2)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | m[{"a":"lop","b":"josh"}] |
+       | m[{"a":"ripple","b":"josh"}] |
+ 
+   Scenario: g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").in().as("b").in().as("c").select("a","b","c").by("name").limit(Scope.local, 1)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | m[{"a":"lop"}] |
+       | m[{"a":"ripple"}] |
+ 
+   Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local, 1, 3)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | m[{"b":"josh","c":"lop"}] |
+       | m[{"b":"josh","c":"ripple"}] |
+ 
+   Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_2X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local, 1, 2)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | m[{"b":"josh"}] |
+       | m[{"b":"josh"}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04c52201/gremlin-test/features/filter/Tail.feature
----------------------------------------------------------------------
diff --cc gremlin-test/features/filter/Tail.feature
index 0000000,b2daa2b..ef0643e
mode 000000,100644..100644
--- a/gremlin-test/features/filter/Tail.feature
+++ b/gremlin-test/features/filter/Tail.feature
@@@ -1,0 -1,166 +1,145 @@@
+ # Licensed to the Apache Software Foundation (ASF) under one
+ # or more contributor license agreements.  See the NOTICE file
+ # distributed with this work for additional information
+ # regarding copyright ownership.  The ASF licenses this file
+ # to you under the Apache License, Version 2.0 (the
+ # "License"); you may not use this file except in compliance
+ # with the License.  You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing,
+ # software distributed under the License is distributed on an
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ # KIND, either express or implied.  See the License for the
+ # specific language governing permissions and limitations
+ # under the License.
+ 
+ Feature: Step - tail()
+ 
+   Scenario: g_V_valuesXnameX_order_tailXglobal_2X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().values("name").order().tail(Scope.global, 2)
+       """
+     When iterated to list
+     Then the result should be ordered
+       | result |
+       | ripple |
+       | vadas |
+ 
+   Scenario: g_V_valuesXnameX_order_tailX2X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().values("name").order().tail(2)
+       """
+     When iterated to list
+     Then the result should be ordered
+       | result |
+       | ripple |
+       | vadas |
+ 
+   Scenario: g_V_valuesXnameX_order_tail
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().values("name").order().tail()
+       """
+     When iterated to list
+     Then the result should be ordered
+       | result |
+       | vadas |
+ 
+   Scenario: g_V_valuesXnameX_order_tailX7X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().values("name").order().tail(7)
+       """
+     When iterated to list
+     Then the result should be ordered
+       | result |
+       | josh   |
+       | lop    |
+       | marko  |
+       | peter  |
+       | ripple |
+       | vadas  |
+ 
+   Scenario: g_V_repeatXbothX_timesX3X_tailX7X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().repeat(__.both()).times(3).tail(7)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | v[peter] |
+       | v[peter] |
+       | v[peter] |
+       | v[peter] |
+       | v[marko] |
+       | v[marko] |
+       | v[marko] |
+ 
+   Scenario: g_V_repeatXin_outX_timesX3X_tailX7X_count
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().repeat(__.in().out()).times(3).tail(7).count()
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | d[7].l |
+ 
 -  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_2X
 -    Given the modern graph
 -    And the traversal of
 -      """
 -      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local, 2)
 -      """
 -    When iterated to list
 -    Then the result should be unordered
 -      | result |
 -      | l[josh,ripple] |
 -      | l[josh,lop] |
 -
+   Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_1X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local, 1)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | ripple |
+       | lop |
+ 
+   Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocalX
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | ripple |
+       | lop |
+ 
 -  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXlimitXlocal_0XX_tailXlocal_1X
 -    Given the modern graph
 -    And the traversal of
 -      """
 -      g.V().as("a").out().as("a").out().as("a").select("a").by(__.limit(Scope.local, 0)).tail(Scope.local, 1)
 -      """
 -    When iterated to list
 -    Then the result should be empty
 -
+   Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_2X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local, 2)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | m[{"b":"josh","c":"ripple"}] |
+       | m[{"b":"josh","c":"lop"}] |
+ 
+   Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_1X
+     Given the modern graph
+     And the traversal of
+       """
+       g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local, 1)
+       """
+     When iterated to list
+     Then the result should be unordered
+       | result |
+       | m[{"c":"ripple"}] |
+       | m[{"c":"lop"}] |


[04/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for V()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for V()


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

Branch: refs/heads/master
Commit: 75d1e27bb517494df7ab3fdc7ac02a23935ef91d
Parents: 78fd4fd
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Nov 2 08:58:27 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Graph.feature | 109 +++++++++++++++++++++++++++
 1 file changed, 109 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/75d1e27b/gremlin-test/features/map/Graph.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Graph.feature b/gremlin-test/features/map/Graph.feature
new file mode 100644
index 0000000..249d6a3
--- /dev/null
+++ b/gremlin-test/features/map/Graph.feature
@@ -0,0 +1,109 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - V()
+
+  Scenario: g_VX1X_V_valuesXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).V().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko  |
+      | vadas |
+      | lop   |
+      | josh |
+      | ripple |
+      | peter  |
+
+  Scenario: g_V_outXknowsX_V_name
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V().out("knows").V().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko  |
+      | marko  |
+      | vadas |
+      | vadas |
+      | lop   |
+      | lop   |
+      | josh |
+      | josh |
+      | ripple |
+      | ripple |
+      | peter  |
+      | peter  |
+
+  Scenario: g_V_hasXname_GarciaX_inXsungByX_asXsongX_V_hasXname_Willie_DixonX_inXwrittenByX_whereXeqXsongXX_name
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().has("artist", "name", "Garcia").in("sungBy").as("song").
+        V().has("artist", "name", "Willie_Dixon").in("writtenBy").where(P.eq("song")).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | MY BABE |
+      | HOOCHIE COOCHIE MAN |
+
+  Scenario: g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter software defined as "l[v[lop],v[ripple]]"
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v2Id defined as "v[vadas].id"
+    And using the parameter v3Id defined as "v[lop].id"
+    And using the parameter v4Id defined as "v[josh].id"
+    And using the parameter v5Id defined as "v[ripple].id"
+    And using the parameter v6Id defined as "v[peter].id"
+    And the traversal of
+      """
+      g.V().hasLabel("person").as("p").V(software).addE("uses").from("p")
+      """
+    When iterated to list
+    Then the result should have a count of 8
+    And the graph should return 8 for count of "g.E().hasLabel(\"uses\")"
+    And the graph should return 2 for count of "g.V(v1Id).outE(\"uses\")"
+    And the graph should return 2 for count of "g.V(v2Id).outE(\"uses\")"
+    And the graph should return 4 for count of "g.V(v3Id).inE(\"uses\")"
+    And the graph should return 2 for count of "g.V(v4Id).outE(\"uses\")"
+    And the graph should return 4 for count of "g.V(v5Id).inE(\"uses\")"
+    And the graph should return 2 for count of "g.V(v6Id).outE(\"uses\")"


[07/50] tinkerpop git commit: TINKERPOP-1784 Added local() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added local() feature tests

Had to add a way to assert a results that matched any in a set as limit() type steps might force different results depending on the graph being tested.


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

Branch: refs/heads/master
Commit: c45bac7890f5bd06d94726c6da15801b8c14d596
Parents: 77d59dd
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Oct 23 10:00:34 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |  23 ++-
 gremlin-test/features/branch/Local.feature      | 172 +++++++++++++++++++
 2 files changed, 191 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c45bac78/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index f58f0da..2d2ae8d 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -34,7 +34,9 @@ regex_not = re.compile(r"([(.,\s])not\(")
 regex_or = re.compile(r"([(.,\s])or\(")
 
 
-ignores = ["g.V(v1Id).out().inject(v2).values(\"name\")"]
+ignores = [
+    "g.V(v1Id).out().inject(v2).values(\"name\")"  # bug in attachment won't connect v2
+           ]
 
 
 @given("the {graph_name:w} graph")
@@ -89,12 +91,14 @@ def assert_result(step, characterized_as):
     if step.context.ignore:
         return
 
-    if characterized_as == "empty":
+    if characterized_as == "empty":        # no results
         assert_that(len(step.context.result), equal_to(0))
-    elif characterized_as == "ordered":
+    elif characterized_as == "ordered":    # results asserted in the order of the data table
         _table_assertion(step.table, step.context.result, step.context, True)
-    elif characterized_as == "unordered":
+    elif characterized_as == "unordered":  # results asserted in any order
         _table_assertion(step.table, step.context.result, step.context, False)
+    elif characterized_as == "of":         # results may be of any of the specified items in the data table
+        _any_assertion(step.table, step.context.result, step.context)
     else:
         raise ValueError("unknown data characterization of " + characterized_as)
 
@@ -108,6 +112,11 @@ def assert_side_effects(step, count, traversal_string):
     assert_that(count, equal_to(t.count().next()))
 
 
+@then("only have a result count of {count:d}")
+def assert_count(step, count):
+    assert_that(count, equal_to(len(step.context.result)))
+
+
 @then("nothing should happen because")
 def nothing_happening(step):
     return
@@ -158,6 +167,12 @@ def _convert_results(val):
         return val
 
 
+def _any_assertion(data, result, ctx):
+    converted = [_convert(line[0], ctx) for line in data]
+    for r in result:
+        assert_that(r, is_in(converted))
+
+
 def _table_assertion(data, result, ctx, ordered):
     # results from traversal should have the same number of entries as the feature data table
     assert_that(len(result), equal_to(len(data)))

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c45bac78/gremlin-test/features/branch/Local.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Local.feature b/gremlin-test/features/branch/Local.feature
new file mode 100644
index 0000000..53ae3ab
--- /dev/null
+++ b/gremlin-test/features/branch/Local.feature
@@ -0,0 +1,172 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contriAndor license agreements.  See the NOTICE file
+# distriAnded with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distriAnded under the License is distriAnded on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - local()
+
+  Scenario: g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value
+    Given the crew graph
+    And the traversal of
+      """
+      g.V().local(__.properties("location").order().by(T.value, Order.incr).range(0, 2)).value()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | brussels       |
+      | san diego      |
+      | centreville    |
+      | dulles         |
+      | baltimore      |
+      | bremen         |
+      | aachen         |
+      | kaiserslautern |
+
+  Scenario: g_V_hasXlabel_personX_asXaX_localXoutXcreatedX_asXbXX_selectXa_bX_byXnameX_byXidX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has(T.label, "person").as("a").local(__.out("created").as("b")).select("a", "b").by("name").by(T.id)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"a":"marko","b":3}] |
+      | m[{"a":"josh","b":5}]  |
+      | m[{"a":"josh","b":3}]  |
+      | m[{"a":"peter","b":3}] |
+
+  Scenario: g_V_localXoutE_countX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().local(__.outE().count())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[3] |
+      | d[0] |
+      | d[0] |
+      | d[2] |
+      | d[0] |
+      | d[1] |
+
+  Scenario: g_VX1X_localXoutEXknowsX_limitX1XX_inV_name
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).local(__.outE("knows").limit(1)).inV().values("name")
+      """
+    When iterated to list
+    Then the result should be of
+      | vadas |
+      | josh  |
+    And only have a result count of 1
+
+  Scenario: g_V_localXbothEXcreatedX_limitX1XX_otherV_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().local(__.bothE("created").limit(1)).otherV().values("name")
+      """
+    When iterated to list
+    Then the result should be of
+      | marko  |
+      | lop    |
+      | ripple |
+      | josh   |
+      | peter  |
+    And only have a result count of 5
+
+  Scenario: g_VX4X_localXbothEX1_createdX_limitX1XX
+    Given the modern graph
+    And using the parameter v4Id defined as "v[josh].id"
+    And the traversal of
+      """
+      g.V(v4Id).local(__.bothE("created").limit(1))
+      """
+    When iterated to list
+    Then the result should be of
+      | e[josh-created->lop]    |
+      | e[josh-created->ripple] |
+    And only have a result count of 1
+
+  Scenario: g_VX4X_localXbothEXknows_createdX_limitX1XX
+    Given the modern graph
+    And using the parameter v4Id defined as "v[josh].id"
+    And the traversal of
+      """
+      g.V(v4Id).local(__.bothE("knows", "created").limit(1))
+      """
+    When iterated to list
+    Then the result should be of
+      | e[marko-knows->josh]    |
+      | e[josh-created->lop]    |
+      | e[josh-created->ripple] |
+    And only have a result count of 1
+
+  Scenario: g_VX4X_localXbothE_limitX1XX_otherV_name
+    Given the modern graph
+    And using the parameter v4Id defined as "v[josh].id"
+    And the traversal of
+      """
+      g.V(v4Id).local(__.bothE().limit(1)).otherV().values("name")
+      """
+    When iterated to list
+    Then the result should be of
+      | marko  |
+      | ripple |
+      | lop    |
+    And only have a result count of 1
+
+  Scenario: g_VX4X_localXbothE_limitX2XX_otherV_name
+    Given the modern graph
+    And using the parameter v4Id defined as "v[josh].id"
+    And the traversal of
+      """
+      g.V(v4Id).local(__.bothE().limit(2)).otherV().values("name")
+      """
+    When iterated to list
+    Then the result should be of
+      | marko  |
+      | ripple |
+      | lop    |
+    And only have a result count of 2
+
+  Scenario: g_V_localXinEXknowsX_limitX2XX_outV_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().local(__.inE("knows").limit(2)).outV().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | marko |
+
+  Scenario: g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().local(__.match(
+                    __.as("project").in("created").as("person"),
+                    __.as("person").values("name").as("name"))).select("name", "project").by().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"name":"marko","project":"lop"}]   |
+      | m[{"name":"josh","project":"lop"}]    |
+      | m[{"name":"peter","project":"lop"}]   |
+      | m[{"name":"josh","project":"ripple"}] |
\ No newline at end of file


[19/50] tinkerpop git commit: TINKERPOP-1784 Added dedup() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added dedup() feature tests

Reworked test language for asserting counts so that it works better as a standalone assertion.


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

Branch: refs/heads/master
Commit: a5d99774e2f6b8dbe312062e99380b5a80873816
Parents: a9af53f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 11:37:18 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |   2 +-
 gremlin-test/features/branch/Local.feature      |  12 +-
 gremlin-test/features/branch/Repeat.feature     |   2 +-
 gremlin-test/features/filter/Dedup.feature      | 222 +++++++++++++++++++
 4 files changed, 230 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a5d99774/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 2d2ae8d..14a0153 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -112,7 +112,7 @@ def assert_side_effects(step, count, traversal_string):
     assert_that(count, equal_to(t.count().next()))
 
 
-@then("only have a result count of {count:d}")
+@then("should have a result count of {count:d}")
 def assert_count(step, count):
     assert_that(count, equal_to(len(step.context.result)))
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a5d99774/gremlin-test/features/branch/Local.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Local.feature b/gremlin-test/features/branch/Local.feature
index 53ae3ab..fa12d8c 100644
--- a/gremlin-test/features/branch/Local.feature
+++ b/gremlin-test/features/branch/Local.feature
@@ -73,7 +73,7 @@ Feature: Step - local()
     Then the result should be of
       | vadas |
       | josh  |
-    And only have a result count of 1
+    And should have a result count of 1
 
   Scenario: g_V_localXbothEXcreatedX_limitX1XX_otherV_name
     Given the modern graph
@@ -88,7 +88,7 @@ Feature: Step - local()
       | ripple |
       | josh   |
       | peter  |
-    And only have a result count of 5
+    And should have a result count of 5
 
   Scenario: g_VX4X_localXbothEX1_createdX_limitX1XX
     Given the modern graph
@@ -101,7 +101,7 @@ Feature: Step - local()
     Then the result should be of
       | e[josh-created->lop]    |
       | e[josh-created->ripple] |
-    And only have a result count of 1
+    And should have a result count of 1
 
   Scenario: g_VX4X_localXbothEXknows_createdX_limitX1XX
     Given the modern graph
@@ -115,7 +115,7 @@ Feature: Step - local()
       | e[marko-knows->josh]    |
       | e[josh-created->lop]    |
       | e[josh-created->ripple] |
-    And only have a result count of 1
+    And should have a result count of 1
 
   Scenario: g_VX4X_localXbothE_limitX1XX_otherV_name
     Given the modern graph
@@ -129,7 +129,7 @@ Feature: Step - local()
       | marko  |
       | ripple |
       | lop    |
-    And only have a result count of 1
+    And should have a result count of 1
 
   Scenario: g_VX4X_localXbothE_limitX2XX_otherV_name
     Given the modern graph
@@ -143,7 +143,7 @@ Feature: Step - local()
       | marko  |
       | ripple |
       | lop    |
-    And only have a result count of 2
+    And should have a result count of 2
 
   Scenario: g_V_localXinEXknowsX_limitX2XX_outV_name
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a5d99774/gremlin-test/features/branch/Repeat.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Repeat.feature b/gremlin-test/features/branch/Repeat.feature
index e6049b5..6d97fc0 100644
--- a/gremlin-test/features/branch/Repeat.feature
+++ b/gremlin-test/features/branch/Repeat.feature
@@ -68,7 +68,7 @@ Feature: Step - repeat()
       | v[lop] |
       | v[josh] |
       | v[vadas] |
-    And only have a result count of 8
+    And should have a result count of 8
 
   Scenario: g_VX1X_timesX2X_repeatXoutX_name
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a5d99774/gremlin-test/features/filter/Dedup.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Dedup.feature b/gremlin-test/features/filter/Dedup.feature
new file mode 100644
index 0000000..7433da2
--- /dev/null
+++ b/gremlin-test/features/filter/Dedup.feature
@@ -0,0 +1,222 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - dedup()
+
+  Scenario: g_V_out_in_valuesXnameX_fold_dedupXlocalX_unfold
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().out().in().values("name").fold().dedup(Scope.local).unfold()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | josh  |
+      | peter |
+
+  Scenario: g_V_out_asXxX_in_asXyX_selectXx_yX_byXnameX_fold_dedupXlocal_x_yX_unfold
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().out().as("x").in().as("y").select("x", "y").by("name").fold().dedup(Scope.local, "x", "y").unfold()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"x":"lop","y":"marko"}] |
+      | m[{"x":"lop","y":"josh"}] |
+      | m[{"x":"lop","y":"peter"}] |
+      | m[{"x":"vadas","y":"marko"}] |
+      | m[{"x":"josh","y":"marko"}] |
+      | m[{"x":"ripple","y":"josh"}] |
+
+  Scenario: g_V_both_dedup_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().both().dedup().values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | lop |
+      | vadas |
+      | josh  |
+      | peter |
+      | marko |
+      | ripple |
+
+  Scenario: g_V_both_hasXlabel_softwareX_dedup_byXlangX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().both().has(T.label, "software").dedup().by("lang").values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | lop |
+
+  Scenario: g_V_both_name_order_byXa_bX_dedup_value
+    Given the modern graph
+    And using the parameter l defined as "c[a,b -> a.value().compareTo(b.value())]"
+    And the traversal of
+      """
+      g.V().both().properties("name").order().by(l).dedup().value()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | josh |
+      | lop  |
+      | marko |
+      | peter |
+      | ripple |
+      | vadas  |
+
+  Scenario: g_V_both_both_name_dedup
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().both().both().values("name").dedup()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | josh |
+      | lop  |
+      | marko |
+      | peter |
+      | ripple |
+      | vadas  |
+
+  Scenario: g_V_both_both_dedup
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().both().both().dedup()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[josh] |
+      | v[lop]  |
+      | v[marko] |
+      | v[peter] |
+      | v[ripple] |
+      | v[vadas]  |
+
+  Scenario: g_V_both_both_dedup_byXlabelX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().both().both().dedup().by(T.label)
+      """
+    When iterated to list
+    Then should have a result count of 2
+
+  Scenario: g_V_group_byXlabelX_byXbothE_weight_dedup_foldX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group().by(T.label).by(__.bothE().values("weight").dedup().fold())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"software":[1.0,0.4,0.2],"person":[0.5,1.0,0.4,0.2]}] |
+
+  Scenario: g_V_asXaX_both_asXbX_dedupXa_bX_byXlabelX_selectXa_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").both().as("b").dedup("a", "b").by(T.label).select("a", "b")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"a":"v[marko]","b":"v[lop]"}] |
+      | m[{"a":"v[marko]","b":"v[vadas]"}] |
+      | m[{"a":"v[lop]","b":"v[marko]"}] |
+
+  Scenario: g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_dedupXa_bX_path
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out("created").as("b").in("created").as("c").dedup("a", "b").path()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | p[v[marko],v[lop],v[marko]] |
+      | p[v[josh],v[ripple],v[josh]] |
+      | p[v[josh],v[lop],v[marko]] |
+      | p[v[peter],v[lop],v[marko]] |
+
+  Scenario: g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_incrX_selectXvX_valuesXnameX_dedup
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().outE().as("e").inV().as("v").select("e").order().by("weight", Order.incr).select("v").values("name").dedup()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | lop |
+      | vadas |
+      | josh |
+      | ripple |
+
+  Scenario: g_V_both_both_dedup_byXoutE_countX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().both().both().dedup().by(__.outE().count()).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | josh |
+      | peter |
+      | ripple |
+
+  Scenario: g_V_groupCount_selectXvaluesX_unfold_dedup
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().groupCount().select(Column.values).unfold().dedup()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[1] |
+
+  Scenario: g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").repeat(__.both()).times(3).emit().values("name").as("b").group().by(__.select("a")).by(__.select("b").dedup().order().fold()).select(Column.values).unfold().dedup()
+      """
+    When iterated next
+    Then the result should be unordered
+      | josh |
+      | lop  |
+      | marko |
+      | peter |
+      | ripple |
+      | vadas  |
+
+  Scenario: g_V_repeatXdedupX_timesX2X_count
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.dedup()).times(2).count()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[0] |
+


[30/50] tinkerpop git commit: TINKERPOP-1784 Added mean() feature test

Posted by sp...@apache.org.
TINKERPOP-1784 Added mean() feature test


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

Branch: refs/heads/master
Commit: 754b7f5c5def7a1388d955df464507cbb44e40b0
Parents: 26779e1
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 13:38:55 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Mean.feature | 40 +++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/754b7f5c/gremlin-test/features/map/Mean.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Mean.feature b/gremlin-test/features/map/Mean.feature
new file mode 100644
index 0000000..22fab7d
--- /dev/null
+++ b/gremlin-test/features/map/Mean.feature
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - mean()
+
+  Scenario: g_V_age_mean
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").mean()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[30.75] |
+
+  Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").mean())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":1.0,"lop":0.3333333333333333}] |
\ No newline at end of file


[46/50] tinkerpop git commit: TINKERPOP-1784 Introduced types for all numerics of the feature test

Posted by sp...@apache.org.
TINKERPOP-1784 Introduced types for all numerics of the feature test


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

Branch: refs/heads/master
Commit: 014d552fac9174c0fc3b0d6c3174269f7386f25c
Parents: 5286c20
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 17 08:37:17 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |  2 +-
 gremlin-test/features/branch/Branch.feature     | 24 ++++++++++----------
 gremlin-test/features/branch/Local.feature      | 22 +++++++++---------
 gremlin-test/features/branch/Repeat.feature     |  6 ++---
 gremlin-test/features/branch/Union.feature      | 22 +++++++++---------
 gremlin-test/features/filter/Dedup.feature      |  4 ++--
 gremlin-test/features/filter/Is.feature         | 10 ++++----
 gremlin-test/features/filter/Tail.feature       |  2 +-
 gremlin-test/features/map/Coalesce.feature      |  2 +-
 gremlin-test/features/map/Constant.feature      | 12 +++++-----
 gremlin-test/features/map/Count.feature         | 16 ++++++-------
 gremlin-test/features/map/Fold.feature          |  2 +-
 gremlin-test/features/map/Map.feature           | 12 +++++-----
 gremlin-test/features/map/Match.feature         | 12 +++++-----
 gremlin-test/features/map/Max.feature           |  6 ++---
 gremlin-test/features/map/Mean.feature          |  4 ++--
 gremlin-test/features/map/Min.feature           |  6 ++---
 gremlin-test/features/map/Order.feature         | 12 +++++-----
 gremlin-test/features/map/Path.feature          | 10 ++++----
 gremlin-test/features/map/Project.feature       |  8 +++----
 gremlin-test/features/map/Properties.feature    | 16 ++++++-------
 gremlin-test/features/map/Select.feature        | 20 ++++++++--------
 gremlin-test/features/map/Sum.feature           |  4 ++--
 .../features/sideEffect/Aggregate.feature       |  8 +++----
 gremlin-test/features/sideEffect/Group.feature  | 18 +++++++--------
 .../features/sideEffect/GroupCount.feature      | 14 ++++++------
 gremlin-test/features/sideEffect/Inject.feature |  8 +++----
 gremlin-test/features/sideEffect/Sack.feature   |  6 ++---
 gremlin-test/features/sideEffect/Store.feature  | 16 ++++++-------
 29 files changed, 152 insertions(+), 152 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 94b0c77..9f00535 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -136,7 +136,7 @@ def _convert(val, ctx):
         return list(map((lambda x: _convert(x, ctx)), val[2:-1].split(",")))
     elif isinstance(val, str) and re.match("^s\[.*\]$", val):         # parse set
         return set(map((lambda x: _convert(x, ctx)), val[2:-1].split(",")))
-    elif isinstance(val, str) and re.match("^d\[.*\]$", val):         # parse numeric
+    elif isinstance(val, str) and re.match("^d\[.*\][ilfd]$", val):   # parse numeric
         return float(val[2:-1]) if val[2:-1].__contains__(".") else long(val[2:-1])
     elif isinstance(val, str) and re.match("^v\[.*\]\.id$", val):     # parse vertex id
         return ctx.lookup_v["modern"][val[2:-4]].id

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/branch/Branch.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Branch.feature b/gremlin-test/features/branch/Branch.feature
index b8690c6..6ee261f 100644
--- a/gremlin-test/features/branch/Branch.feature
+++ b/gremlin-test/features/branch/Branch.feature
@@ -35,10 +35,10 @@ Feature: Step - branch()
       | java |
       | lop |
       | ripple |
-      | d[29] |
-      | d[27] |
-      | d[32] |
-      | d[35] |
+      | d[29].i |
+      | d[27].i |
+      | d[32].i |
+      | d[35].i |
 
   Scenario: g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX
     Given the modern graph
@@ -57,10 +57,10 @@ Feature: Step - branch()
       | java |
       | lop |
       | ripple |
-      | d[29] |
-      | d[27] |
-      | d[32] |
-      | d[35] |
+      | d[29].i |
+      | d[27].i |
+      | d[32].i |
+      | d[35].i |
 
   Scenario: g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX
     Given the modern graph
@@ -80,10 +80,10 @@ Feature: Step - branch()
       | java |
       | lop |
       | ripple |
-      | d[29] |
-      | d[27] |
-      | d[32] |
-      | d[35] |
+      | d[29].i |
+      | d[27].i |
+      | d[32].i |
+      | d[35].i |
       | person |
       | person |
       | person |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/branch/Local.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Local.feature b/gremlin-test/features/branch/Local.feature
index fbc0dec..d6e809e 100644
--- a/gremlin-test/features/branch/Local.feature
+++ b/gremlin-test/features/branch/Local.feature
@@ -44,26 +44,26 @@ Feature: Step - local()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"a":"marko","b":3}] |
-      | m[{"a":"josh","b":5}]  |
-      | m[{"a":"josh","b":3}]  |
-      | m[{"a":"peter","b":3}] |
+      | m[{"a":"marko","b":"d[3].i"}] |
+      | m[{"a":"josh","b":"d[5].i"}]  |
+      | m[{"a":"josh","b":"d[3].i"}]  |
+      | m[{"a":"peter","b":"d[3].i}] |
 
   Scenario: g_V_localXoutE_countX
     Given the modern graph
     And the traversal of
       """
-      g.V().local(__.outE().count())
+      g.V().local(__.outE().count()) 
       """
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[3] |
-      | d[0] |
-      | d[0] |
-      | d[2] |
-      | d[0] |
-      | d[1] |
+      | d[3].l |
+      | d[0].l |
+      | d[0].l |
+      | d[2].l |
+      | d[0].l |
+      | d[1].l |
 
   Scenario: g_VX1X_localXoutEXknowsX_limitX1XX_inV_name
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/branch/Repeat.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Repeat.feature b/gremlin-test/features/branch/Repeat.feature
index 1a76452..89eb002 100644
--- a/gremlin-test/features/branch/Repeat.feature
+++ b/gremlin-test/features/branch/Repeat.feature
@@ -158,7 +158,7 @@ Feature: Step - repeat()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":2,"peter":1,"vadas":2,"josh":2,"lop":4,"marko":1}] |
+      | m[{"ripple":"d[2].l","peter":"d[1].l","vadas":"d[2].l","josh":"d[2].l","lop":"d[4].l","marko":"d[1].l"}] |
 
   Scenario: g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX
     Given the modern graph
@@ -184,7 +184,7 @@ Feature: Step - repeat()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[43958] |
+      | d[43958].l |
 
   Scenario: g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name
     Given the modern graph
@@ -212,7 +212,7 @@ Feature: Step - repeat()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":3,"vadas":3,"josh":4,"lop":10,"marko":4}] |
+      | m[{"ripple":"d[3].l,"vadas":"d[3].l","josh":"d[4].l","lop":"d[10].l","marko":"d[4].l"}] |
 
   Scenario: g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/branch/Union.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Union.feature b/gremlin-test/features/branch/Union.feature
index 6178092..30eb53c 100644
--- a/gremlin-test/features/branch/Union.feature
+++ b/gremlin-test/features/branch/Union.feature
@@ -88,7 +88,7 @@ Feature: Step - union()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"java":4,"ripple":1,"person":4,"vadas":1,"josh":1,"lop":3}] |
+      | m[{"java":"d[4].l","ripple":"d[1].l","person":"d[4].l","vadas":"d[1].l","josh":"d[1].l","lop":"d[3].l"}] |
 
   Scenario: g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount
     Given the modern graph
@@ -104,7 +104,7 @@ Feature: Step - union()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"software":12,"person":20}] |
+      | m[{"software":"d[12].l","person":"d[20].l"}] |
 
   Scenario: g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX
     Given the modern graph
@@ -117,9 +117,9 @@ Feature: Step - union()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[3]   |
-      | d[1.9] |
-      | d[1]   |
+      | d[3].l   |
+      | d[1.9].d |
+      | d[1].l   |
 
   Scenario: get_g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX
     Given the modern graph
@@ -132,9 +132,9 @@ Feature: Step - union()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[3]   |
-      | d[0]   |
-      | d[1.9] |
-      | d[0]   |
-      | d[0]   |
-      | d[1]   |
\ No newline at end of file
+      | d[3].l   |
+      | d[0].l   |
+      | d[1.9].d |
+      | d[0].i   |
+      | d[0].l   |
+      | d[1].l   |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/filter/Dedup.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Dedup.feature b/gremlin-test/features/filter/Dedup.feature
index 805497f..c502c96 100644
--- a/gremlin-test/features/filter/Dedup.feature
+++ b/gremlin-test/features/filter/Dedup.feature
@@ -206,7 +206,7 @@ Feature: Step - dedup()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[1] |
+      | d[1].l |
 
   Scenario: g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup
     Given the modern graph
@@ -233,5 +233,5 @@ Feature: Step - dedup()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[0] |
+      | d[0].l |
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/filter/Is.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Is.feature b/gremlin-test/features/filter/Is.feature
index 5ed0485..4eec274 100644
--- a/gremlin-test/features/filter/Is.feature
+++ b/gremlin-test/features/filter/Is.feature
@@ -26,7 +26,7 @@ Feature: Step - coin()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[32] |
+      | d[32].i |
 
   Scenario: g_V_valuesXageX_isXlte_30X
     Given the modern graph
@@ -37,8 +37,8 @@ Feature: Step - coin()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[27] |
-      | d[29] |
+      | d[27].i |
+      | d[29].i |
 
   Scenario: g_V_valuesXageX_isXgte_29X_isXlt_34X
     Given the modern graph
@@ -49,8 +49,8 @@ Feature: Step - coin()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[29] |
-      | d[32] |
+      | d[29].i |
+      | d[32].i |
 
   Scenario: g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/filter/Tail.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Tail.feature b/gremlin-test/features/filter/Tail.feature
index 35083ef..b2daa2b 100644
--- a/gremlin-test/features/filter/Tail.feature
+++ b/gremlin-test/features/filter/Tail.feature
@@ -94,7 +94,7 @@ Feature: Step - tail()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[7] |
+      | d[7].l |
 
   Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_2X
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Coalesce.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Coalesce.feature b/gremlin-test/features/map/Coalesce.feature
index f7786ff..8bdac15 100644
--- a/gremlin-test/features/map/Coalesce.feature
+++ b/gremlin-test/features/map/Coalesce.feature
@@ -60,7 +60,7 @@ Feature: Step - coalesce()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":1, "vadas":1, "josh":1, "lop":2}] |
+      | m[{"ripple":"d[1].l", "vadas":"d[1].l", "josh":"d[1].l", "lop":"d[2].l"}] |
 
   Scenario: g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Constant.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Constant.feature b/gremlin-test/features/map/Constant.feature
index 9fb3dfb..9ad8d13 100644
--- a/gremlin-test/features/map/Constant.feature
+++ b/gremlin-test/features/map/Constant.feature
@@ -27,12 +27,12 @@ Feature: Step - constant()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[123] |
-      | d[123] |
-      | d[123] |
-      | d[123] |
-      | d[123] |
-      | d[123] |
+      | d[123].i |
+      | d[123].i |
+      | d[123].i |
+      | d[123].i |
+      | d[123].i |
+      | d[123].i |
 
   Scenario: g_V_chooseXhasLabelXpersonX_valuesXnameX_constantXinhumanXX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Count.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Count.feature b/gremlin-test/features/map/Count.feature
index 1d98464..6e47ab7 100644
--- a/gremlin-test/features/map/Count.feature
+++ b/gremlin-test/features/map/Count.feature
@@ -26,7 +26,7 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[6] |
+      | d[6].l |
 
   Scenario: g_V_out_count
     Given the modern graph
@@ -37,7 +37,7 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[6] |
+      | d[6].l |
 
   Scenario: g_V_both_both_count
     Given the modern graph
@@ -48,7 +48,7 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[30] |
+      | d[30].l |
 
   Scenario: g_V_fold_countXlocalX
     Given the modern graph
@@ -59,7 +59,7 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[6] |
+      | d[6].l |
 
   Scenario: g_V_hasXnoX_count
     Given the modern graph
@@ -70,7 +70,7 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[0] |
+      | d[0].l |
 
   Scenario: g_V_whereXinXkknowsX_outXcreatedX_count_is_0XX_name
     Given the modern graph
@@ -95,7 +95,7 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[2505037961767380] |
+      | d[2505037961767380].l |
 
   Scenario: g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count
     Given the grateful graph
@@ -111,7 +111,7 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[24309134024] |
+      | d[24309134024].l |
 
   Scenario: g_V_repeatXoutX_timesX3X_count
     Given the grateful graph
@@ -122,4 +122,4 @@ Feature: Step - count()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[14465066] |
+      | d[14465066].l |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Fold.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Fold.feature b/gremlin-test/features/map/Fold.feature
index 1c71b27..83f4be4 100644
--- a/gremlin-test/features/map/Fold.feature
+++ b/gremlin-test/features/map/Fold.feature
@@ -53,5 +53,5 @@ Feature: Step - fold()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[123] |
+      | d[123].l |
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Map.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Map.feature b/gremlin-test/features/map/Map.feature
index 573b404..8d1029f 100644
--- a/gremlin-test/features/map/Map.feature
+++ b/gremlin-test/features/map/Map.feature
@@ -41,9 +41,9 @@ Feature: Step - map()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[7] |
-      | d[5] |
-      | d[5] |
+      | d[7].i |
+      | d[5].i |
+      | d[5].i |
 
   Scenario: g_VX1X_out_mapXnameX_mapXlengthX
     Given the modern graph
@@ -57,9 +57,9 @@ Feature: Step - map()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[3] |
-      | d[5] |
-      | d[4] |
+      | d[3].i |
+      | d[5].i |
+      | d[4].i |
 
   Scenario: g_withPath_V_asXaX_out_mapXa_nameX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Match.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Match.feature b/gremlin-test/features/map/Match.feature
index 59c56fd..c55a3825 100644
--- a/gremlin-test/features/map/Match.feature
+++ b/gremlin-test/features/map/Match.feature
@@ -58,12 +58,12 @@ Feature: Step - match()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[3] |
-      | d[2] |
-      | d[4] |
-      | d[5] |
-      | d[3] |
-      | d[3] |
+      | d[3].l |
+      | d[2].l |
+      | d[4].l |
+      | d[5].l |
+      | d[3].l |
+      | d[3].l |
 
   Scenario: g_V_matchXa_knows_b__b_created_cX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Max.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Max.feature b/gremlin-test/features/map/Max.feature
index bb7e3d4..ad0a270 100644
--- a/gremlin-test/features/map/Max.feature
+++ b/gremlin-test/features/map/Max.feature
@@ -26,7 +26,7 @@ Feature: Step - max()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[35] |
+      | d[35].i |
 
   Scenario: g_V_repeatXbothX_timesX5X_age_max
     Given the modern graph
@@ -37,7 +37,7 @@ Feature: Step - max()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[35] |
+      | d[35].i |
 
   Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX
     Given the modern graph
@@ -48,4 +48,4 @@ Feature: Step - max()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":1.0,"lop":0.4}] |
+      | m[{"ripple":"d[1.0].d","lop":"d[0.4].d"}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Mean.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Mean.feature b/gremlin-test/features/map/Mean.feature
index 22fab7d..b716bde 100644
--- a/gremlin-test/features/map/Mean.feature
+++ b/gremlin-test/features/map/Mean.feature
@@ -26,7 +26,7 @@ Feature: Step - mean()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[30.75] |
+      | d[30.75].d |
 
   Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX
     Given the modern graph
@@ -37,4 +37,4 @@ Feature: Step - mean()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":1.0,"lop":0.3333333333333333}] |
\ No newline at end of file
+      | m[{"ripple":"d[1.0]".d,"lop":"d[0.3333333333333333].d"}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Min.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Min.feature b/gremlin-test/features/map/Min.feature
index c4b86c6..3cdb7e3 100644
--- a/gremlin-test/features/map/Min.feature
+++ b/gremlin-test/features/map/Min.feature
@@ -26,7 +26,7 @@ Feature: Step - min()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[27] |
+      | d[27].i |
 
   Scenario: g_V_repeatXbothX_timesX5X_age_min
     Given the modern graph
@@ -37,7 +37,7 @@ Feature: Step - min()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[27] |
+      | d[27].i |
 
   Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX
     Given the modern graph
@@ -48,4 +48,4 @@ Feature: Step - min()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":1.0,"lop":0.2}] |
+      | m[{"ripple":"d[1.0].d","lop":"d[0.2]d"}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Order.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Order.feature b/gremlin-test/features/map/Order.feature
index 9005465..879bfd0 100644
--- a/gremlin-test/features/map/Order.feature
+++ b/gremlin-test/features/map/Order.feature
@@ -92,12 +92,12 @@ Feature: Step - order()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[1.0] |
-      | d[1.0] |
-      | d[0.5] |
-      | d[0.4] |
-      | d[0.4] |
-      | d[0.2] |
+      | d[1.0].d |
+      | d[1.0].d |
+      | d[0.5].d |
+      | d[0.4].d |
+      | d[0.4].d |
+      | d[0.2].d] |
 
   Scenario: g_V_order_byXname_a1_b1X_byXname_b2_a2X_name
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Path.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Path.feature b/gremlin-test/features/map/Path.feature
index ea98a7a..b0cb9dd 100644
--- a/gremlin-test/features/map/Path.feature
+++ b/gremlin-test/features/map/Path.feature
@@ -39,9 +39,9 @@ Feature: Step - count()
     When iterated to list
     Then the result should be unordered
       | result |
-      | p[d[29],lop] |
-      | p[d[29],vadas] |
-      | p[d[29],josh] |
+      | p[d[29].i,lop] |
+      | p[d[29].i,vadas] |
+      | p[d[29].i,josh] |
 
   Scenario: g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX
     Given the modern graph
@@ -64,8 +64,8 @@ Feature: Step - count()
     When iterated to list
     Then the result should be unordered
       | result |
-      | p[marko,d[32],ripple] |
-      | p[marko,d[32],lop] |
+      | p[marko,d[32].i,ripple] |
+      | p[marko,d[32].i,lop] |
 
   Scenario: g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Project.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Project.feature b/gremlin-test/features/map/Project.feature
index 8a781f2..cda2029 100644
--- a/gremlin-test/features/map/Project.feature
+++ b/gremlin-test/features/map/Project.feature
@@ -29,10 +29,10 @@ Feature: Step - project()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"a":3, "b":29}] |
-      | m[{"a":0, "b":27}] |
-      | m[{"a":2, "b":32}] |
-      | m[{"a":1, "b":35}] |
+      | m[{"a":"d[3].l", "b":"d[29].i"}] |
+      | m[{"a":"d[0].l", "b":"d[27].i"}] |
+      | m[{"a":"d[2].l", "b":"d[32].i"}] |
+      | m[{"a":"d[1].l", "b":"d[35].i"}] |
 
   Scenario: g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__decrX_selectXaX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Properties.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Properties.feature b/gremlin-test/features/map/Properties.feature
index 35ccd77..88f8d70 100644
--- a/gremlin-test/features/map/Properties.feature
+++ b/gremlin-test/features/map/Properties.feature
@@ -27,13 +27,13 @@ Feature: Step - properties()
     Then the result should be unordered
       | result |
       | marko |
-      | d[29] |
+      | d[29].i |
       | vadas |
-      | d[27] |
+      | d[27].i |
       | josh  |
-      | d[32] |
+      | d[32].i |
       | peter |
-      | d[35] |
+      | d[35.i] |
 
   Scenario: g_V_hasXageX_propertiesXage_nameX_value
     Given the modern graph
@@ -45,13 +45,13 @@ Feature: Step - properties()
     Then the result should be unordered
       | result |
       | marko |
-      | d[29] |
+      | d[29].i |
       | vadas |
-      | d[27] |
+      | d[27].i |
       | josh  |
-      | d[32] |
+      | d[32].i |
       | peter |
-      | d[35] |
+      | d[35].i |
 
   Scenario: g_V_hasXageX_properties_hasXid_nameIdX_value
     Given an unsupported test

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Select.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature
index 538a734..06f00d2 100644
--- a/gremlin-test/features/map/Select.feature
+++ b/gremlin-test/features/map/Select.feature
@@ -140,10 +140,10 @@ Feature: Step - select()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"a": 3, "b": "matthias"}] |
-      | m[{"a": 4, "b": "marko"}] |
-      | m[{"a": 5, "b": "stephen"}] |
-      | m[{"a": 5, "b": "daniel"}] |
+      | m[{"a":"d[3].i", "b": "matthias"}] |
+      | m[{"a":"d[4].i", "b": "marko"}] |
+      | m[{"a":"d[5].i", "b": "stephen"}] |
+      | m[{"a":"d[5].i", "b": "daniel"}] |
 
   Scenario: g_V_hasXname_isXmarkoXX_asXaX_selectXaX
     Given the modern graph
@@ -165,7 +165,7 @@ Feature: Step - select()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"software": 2, "person": 4}] |
+      | m[{"software":"d[2].l", "person":"d[4].l"}] |
 
   Scenario: g_V_hasLabelXpersonX_asXpX_mapXbothE_label_groupCountX_asXrX_selectXp_rX
     Given the modern graph
@@ -178,10 +178,10 @@ Feature: Step - select()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"p": "v[marko]", "r": {"created": 1, "knows": 2}}] |
-      | m[{"p": "v[vadas]", "r": {"knows": 1}}] |
-      | m[{"p": "v[josh]", "r": {"created": 2, "knows": 1}}] |
-      | m[{"p": "v[peter]", "r": {"created": 1}}] |
+      | m[{"p": "v[marko]", "r": {"created": "d[1].l", "knows": "d[2].l"}}] |
+      | m[{"p": "v[vadas]", "r": {"knows": "d[1].l"}}] |
+      | m[{"p": "v[josh]", "r": {"created": "d[2].l", "knows": "d[1].l"}}] |
+      | m[{"p": "v[peter]", "r": {"created": "d[1].l"}}] |
 
   Scenario: g_V_chooseXoutE_count_isX0X__asXaX__asXbXX_chooseXselectXaX__selectXaX__selectXbXX
     Given the modern graph
@@ -321,4 +321,4 @@ Feature: Step - select()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple": 1, "lop": 6}] |
\ No newline at end of file
+      | m[{"ripple":"d[1].l", "lop":"d[6].l"}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/map/Sum.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Sum.feature b/gremlin-test/features/map/Sum.feature
index 35571fa..2c89946 100644
--- a/gremlin-test/features/map/Sum.feature
+++ b/gremlin-test/features/map/Sum.feature
@@ -26,7 +26,7 @@ Feature: Step - sum()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[123] |
+      | d[123].l |
 
   Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX
     Given the modern graph
@@ -37,4 +37,4 @@ Feature: Step - sum()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":1.0,"lop":1.0}] |
\ No newline at end of file
+      | m[{"ripple":"d[1.0].d","lop":"d[1.0].d"}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/sideEffect/Aggregate.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Aggregate.feature b/gremlin-test/features/sideEffect/Aggregate.feature
index 52454f4..2ab35ef 100644
--- a/gremlin-test/features/sideEffect/Aggregate.feature
+++ b/gremlin-test/features/sideEffect/Aggregate.feature
@@ -74,7 +74,7 @@ Feature: Step - aggregate()
     When iterated next
     Then the result should be unordered
       | result |
-      | d[29] |
-      | d[27] |
-      | d[32] |
-      | d[35] |
\ No newline at end of file
+      | d[29].i |
+      | d[27].i |
+      | d[32].i |
+      | d[35].i |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/sideEffect/Group.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Group.feature b/gremlin-test/features/sideEffect/Group.feature
index ac89e7d..3b9bb11 100644
--- a/gremlin-test/features/sideEffect/Group.feature
+++ b/gremlin-test/features/sideEffect/Group.feature
@@ -70,7 +70,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"java":2}] |
+      | m[{"java":"d[2].l"}] |
 
   Scenario: g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX
     Given the modern graph
@@ -81,7 +81,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":2, "vadas":1, "josh":1, "lop":4}] |
+      | m[{"ripple":"d[2].l", "vadas":"d[1].l", "josh":"d[1].l", "lop":"d[4].l"}] |
 
   Scenario: g_V_group_byXoutE_countX_byXnameX
     Given an unsupported test
@@ -101,7 +101,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"software":0, "person":3.5}] |
+      | m[{"software":"d[0].i", "person":"d[3.5].d}] |
 
   Scenario: g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX
     Given the grateful graph
@@ -112,7 +112,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"original":771317, "":160968, "cover":368579}] |
+      | m[{"original":"d[771317].l", "":"d[160968].l", "cover":"d[368579].l"}] |
 
   Scenario: g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX
     Given the grateful graph
@@ -123,7 +123,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"original":771317, "":160968, "cover":368579}] |
+      | m[{"original":"d[771317].l", "":"d[160968].l", "cover":"d[368579].l"}] |
 
   Scenario: g_V_group_byXname_substring_1X_byXconstantX1XX
     Given the modern graph
@@ -135,7 +135,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"p":1, "r":1, "v":1, "j":1, "l":1, "m":1}] |
+      | m[{"p":"d[1].i", "r":"d[1].i", "v":"d[1].i", "j":"d[1].i", "l":"d[1].i", "m":"d[1].i"}] |
 
   Scenario: g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX
     Given the modern graph
@@ -147,7 +147,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"p":1, "r":1, "v":1, "j":1, "l":1, "m":1}] |
+      | m[{"p":"d[1].i", "r":"d[1].i", "v":"d[1].i", "j":"d[1].i", "l":"d[1].i", "m":"d[1].i"}] |
 
   Scenario: g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X
     Given the modern graph
@@ -207,7 +207,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"cover":{"followedBy":777982, "sungBy":0, "writtenBy":0}, "":{"followedBy":179350}, "original":{"followedBy":2185613, "sungBy":0, "writtenBy":0}}] |
+      | m[{"cover":{"followedBy":"d[777982].l", "sungBy":"d[0].l", "writtenBy":"d[0].l"}, "":{"followedBy":"d[179350].l"}, "original":{"followedBy":"d[2185613].l", "sungBy":"d[0].l", "writtenBy":"d[0].l"}}] |
 
   Scenario: g_V_groupXmX_byXnameX_byXinXknowsX_nameX_capXmX
     Given the modern graph
@@ -229,7 +229,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"software":2.0, "person":5.0}] |
+      | m[{"software":"d[2.0].d", "person":"d[5.0].d"}] |
 
   Scenario: g_withSideEffectXa__marko_666_noone_blahX_V_groupXaX_byXnameX_byXoutE_label_foldX_capXaX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/sideEffect/GroupCount.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/GroupCount.feature b/gremlin-test/features/sideEffect/GroupCount.feature
index 8803722..c5422a2 100644
--- a/gremlin-test/features/sideEffect/GroupCount.feature
+++ b/gremlin-test/features/sideEffect/GroupCount.feature
@@ -26,7 +26,7 @@ Feature: Step - groupCount()
     When iterated to list
     Then the result should be ordered
       | result |
-      | m[{"ripple": 1, "lop": 3}] |
+      | m[{"ripple":"d[1].l", "lop":"d[3].l"}] |
 
   Scenario: g_V_outXcreatedX_name_groupCount
     Given the modern graph
@@ -37,7 +37,7 @@ Feature: Step - groupCount()
     When iterated to list
     Then the result should be ordered
       | result |
-      | m[{"ripple": 1, "lop": 3}] |
+      | m[{"ripple":"d[1].l", "lop":"d[3].l"}] |
 
   Scenario: g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX
     Given the modern graph
@@ -51,7 +51,7 @@ Feature: Step - groupCount()
     When iterated to list
     Then the result should be ordered
       | result |
-      | m[{"ripple": 1, "lop": 3}] |
+      | m[{"ripple":"d[1].l", "lop":"d[3].l"}] |
 
   Scenario: g_V_outXcreatedX_name_groupCountXaX_capXaX
     Given the modern graph
@@ -64,7 +64,7 @@ Feature: Step - groupCount()
     When iterated to list
     Then the result should be ordered
       | result |
-      | m[{"ripple": 1, "lop": 3}] |
+      | m[{"ripple":"d[1].l", "lop":"d[3].l"}] |
 
   Scenario: g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX
     Given the modern graph
@@ -78,7 +78,7 @@ Feature: Step - groupCount()
     When iterated to list
     Then the result should be ordered
       | result |
-      | m[{"ripple":2, "lop": 4, "josh": 1, "vadas": 1}] |
+      | m[{"ripple":"d[2].l", "lop":"d[4].l", "josh":"d[1].l", "vadas":"d[1].l"}] |
 
   Scenario: g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name
     Given the modern graph
@@ -123,7 +123,7 @@ Feature: Step - groupCount()
     When iterated to list
     Then the result should be ordered
       | result |
-      | d[12] |
+      | d[12].l |
 
   Scenario: g_V_hasXnoX_groupCount
     Given the modern graph
@@ -157,7 +157,7 @@ Feature: Step - groupCount()
     When iterated to list
     Then the result should be ordered
       | result |
-      | m[{"marko": 2, "java": 2}] |
+      | m[{"marko":"d[2].l", "java":"d[2].l"}] |
 
   Scenario: g_V_outXcreatedX_groupCountXxX_capXxX
     Given an unsupported test

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/sideEffect/Inject.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Inject.feature b/gremlin-test/features/sideEffect/Inject.feature
index 532dbe1..61ffb58 100644
--- a/gremlin-test/features/sideEffect/Inject.feature
+++ b/gremlin-test/features/sideEffect/Inject.feature
@@ -45,7 +45,7 @@ Feature: Step - inject()
     When iterated to list
     Then the result should be unordered
       | result |
-      | p[daniel,d[6]] |
-      | p[v[marko],v[lop],lop,d[3]] |
-      | p[v[marko],v[vadas],vadas,d[5]] |
-      | p[v[marko],v[josh],josh,d[4]] |
+      | p[daniel,d[6].i] |
+      | p[v[marko],v[lop],lop,d[3].i] |
+      | p[v[marko],v[vadas],vadas,d[5].i] |
+      | p[v[marko],v[josh],josh,d[4].i] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/sideEffect/Sack.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Sack.feature b/gremlin-test/features/sideEffect/Sack.feature
index b0d4cc0..487f31b 100644
--- a/gremlin-test/features/sideEffect/Sack.feature
+++ b/gremlin-test/features/sideEffect/Sack.feature
@@ -42,7 +42,7 @@ Feature: Step - sack()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[3.5] |
+      | d[3.5].d |
 
   Scenario: g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack
     Given the modern graph
@@ -53,8 +53,8 @@ Feature: Step - sack()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[2.0] |
-      | d[1.4] |
+      | d[2.0].d |
+      | d[1.4].d |
 
   Scenario: g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum
     Given an unsupported test

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/014d552f/gremlin-test/features/sideEffect/Store.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Store.feature b/gremlin-test/features/sideEffect/Store.feature
index 2cb7faf..aa58621 100644
--- a/gremlin-test/features/sideEffect/Store.feature
+++ b/gremlin-test/features/sideEffect/Store.feature
@@ -77,11 +77,11 @@ Feature: Step - store()
     When iterated next
     Then the result should be unordered
       | result |
-      | d[1] |
-      | d[1] |
-      | d[0] |
-      | d[0] |
-      | d[0] |
-      | d[2] |
-      | d[1.0] |
-      | d[1.0] |
\ No newline at end of file
+      | 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 |
\ No newline at end of file


[21/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for constant()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for constant()


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

Branch: refs/heads/master
Commit: 1588d3e27d91c01808ef342773be3616d8ec8fae
Parents: 5478e5d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 15:42:29 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Constant.feature | 50 +++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1588d3e2/gremlin-test/features/map/Constant.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Constant.feature b/gremlin-test/features/map/Constant.feature
new file mode 100644
index 0000000..f4ff337
--- /dev/null
+++ b/gremlin-test/features/map/Constant.feature
@@ -0,0 +1,50 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - constant()
+
+  Scenario: g_V_constantX123X
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V().constant(123)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[123] |
+      | d[123] |
+      | d[123] |
+      | d[123] |
+      | d[123] |
+      | d[123] |
+
+  Scenario: g_V_chooseXhasLabelXpersonX_valuesXnameX_constantXinhumanXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().choose(__.hasLabel("person"), __.values("name"), __.constant("inhuman"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | vadas |
+      | inhuman |
+      | josh |
+      | inhuman |
+      | peter |
+


[48/50] tinkerpop git commit: TINKERPOP-1784 Fixed configuration for secure test server

Posted by sp...@apache.org.
TINKERPOP-1784 Fixed configuration for secure test server


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

Branch: refs/heads/master
Commit: 2819dba8ecd269b3ca3234f07e6fbfb5888fcf5a
Parents: c0a3ce0
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Nov 22 07:01:28 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Nov 22 07:01:28 2017 -0500

----------------------------------------------------------------------
 gremlin-server/src/test/scripts/test-server-start.groovy | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2819dba8/gremlin-server/src/test/scripts/test-server-start.groovy
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/scripts/test-server-start.groovy b/gremlin-server/src/test/scripts/test-server-start.groovy
index d793d26..157f01c 100644
--- a/gremlin-server/src/test/scripts/test-server-start.groovy
+++ b/gremlin-server/src/test/scripts/test-server-start.groovy
@@ -44,11 +44,11 @@ project.setContextValue("gremlin.server", server)
 log.info("Gremlin Server with no authentication started on port 45940")
 
 def settingsSecure = Settings.read("${settingsFile}")
-settings.graphs.graph = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
-settings.graphs.classic = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
-settings.graphs.modern = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
-settings.graphs.crew = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
-settings.graphs.grateful = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+settingsSecure.graphs.graph = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+settingsSecure.graphs.classic = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+settingsSecure.graphs.modern = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+settingsSecure.graphs.crew = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
+settingsSecure.graphs.grateful = gremlinServerDir + "/src/test/scripts/tinkergraph-empty.properties"
 settingsSecure.scriptEngines["gremlin-groovy"].scripts = [gremlinServerDir + "/src/test/scripts/generate-all.groovy"]
 if (Boolean.parseBoolean(python)) {
     settingsSecure.scriptEngines["gremlin-python"] = new Settings.ScriptEngineSettings()


[44/50] tinkerpop git commit: TINKERPOP-1784 Removed a commented out debug line

Posted by sp...@apache.org.
TINKERPOP-1784 Removed a commented out debug line


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

Branch: refs/heads/master
Commit: 50f8286e6bafd9ca3b1a92b01b1317e330579e89
Parents: a3c981f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Nov 13 07:58:54 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 gremlin-python/src/main/jython/radish/feature_steps.py | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/50f8286e/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 90b0120..94b0c77 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -227,5 +227,4 @@ def _make_traversal(g, traversal_string, params):
 
     b.update(params)
 
-    # print _translate(step.text + " - " + str(b))
     return eval(_translate(traversal_string), b)


[31/50] tinkerpop git commit: TINKERPOP-1784 Added unfold() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added unfold() feature tests


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

Branch: refs/heads/master
Commit: 4a5b87c5eaf74a114182dc7aa2cb6ced1944571b
Parents: 5dd6a24
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 14:50:32 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Unfold.feature | 76 +++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4a5b87c5/gremlin-test/features/map/Unfold.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Unfold.feature b/gremlin-test/features/map/Unfold.feature
new file mode 100644
index 0000000..3a20d08
--- /dev/null
+++ b/gremlin-test/features/map/Unfold.feature
@@ -0,0 +1,76 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - unfold()
+
+  Scenario: g_V_localXoutE_foldX_unfold
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().local(__.outE().fold()).unfold()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | e[marko-created->lop] |
+      | e[marko-knows->vadas] |
+      | e[marko-knows->josh] |
+      | e[josh-created->ripple] |
+      | e[josh-created->lop] |
+      | e[peter-created->lop] |
+
+  Scenario: g_V_valueMap_unfold_mapXkeyX
+    Given the modern graph
+    And using the parameter l defined as "c[it.get().getKey()]"
+    And the traversal of
+      """
+      g.V().valueMap().unfold().map(l)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | name   |
+      | age    |
+      | name   |
+      | age    |
+      | name   |
+      | lang   |
+      | lang   |
+      | name   |
+      | age    |
+      | name   |
+      | name   |
+      | age    |
+
+  Scenario: g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v6Id defined as "v[peter].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.both().simplePath()).until(__.hasId(v6Id)).path().by("name").unfold()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | marko |
+      | lop  |
+      | peter |
+      | marko |
+      | josh  |
+      | lop   |
+      | peter |
\ No newline at end of file


[23/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for max()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for max()


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

Branch: refs/heads/master
Commit: 5478e5ddca1c228a4df48310a4373dca97192c61
Parents: d55e058
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 13:51:30 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Max.feature | 48 ++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5478e5dd/gremlin-test/features/map/Max.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Max.feature b/gremlin-test/features/map/Max.feature
new file mode 100644
index 0000000..c36177d
--- /dev/null
+++ b/gremlin-test/features/map/Max.feature
@@ -0,0 +1,48 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - max()
+
+  Scenario: g_V_age_max
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").max()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[35] |
+
+  Scenario: g_V_repeatXbothX_timesX5X_age_max
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.both()).times(5).values("age").max()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[35] |
+
+  Scenario: get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").max())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"ripple":1.0,"lop":0.4}] |


[45/50] tinkerpop git commit: TINKERPOP-1784 Changed expected datatypes for sack assertions

Posted by sp...@apache.org.
TINKERPOP-1784 Changed expected datatypes for sack assertions


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

Branch: refs/heads/master
Commit: c0a3ce0e32c70af1d61312966485b5651afc3076
Parents: 11a180f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Nov 21 15:50:07 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/sideEffect/Sack.feature | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c0a3ce0e/gremlin-test/features/sideEffect/Sack.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Sack.feature b/gremlin-test/features/sideEffect/Sack.feature
index d83d7e1..73e65da 100644
--- a/gremlin-test/features/sideEffect/Sack.feature
+++ b/gremlin-test/features/sideEffect/Sack.feature
@@ -53,8 +53,8 @@ Feature: Step - sack()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[2.0].d |
-      | d[1.4].d |
+      | d[2.0].m |
+      | d[1.4].m |
 
   Scenario: g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum
     Given an unsupported test


[28/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for addV()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for addV()

Included Cardinality in imports for test logic


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

Branch: refs/heads/master
Commit: 9910519423bbf89f05f48ec83986ea9e6cec0e4f
Parents: 9c93fd7
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 12:55:01 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |   3 +-
 gremlin-test/features/map/AddVertex.feature     | 147 +++++++++++++++++++
 2 files changed, 149 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99105194/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 6c72bf1..90b0120 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -21,7 +21,7 @@ import json
 import re
 from gremlin_python.structure.graph import Graph, Path
 from gremlin_python.process.graph_traversal import __
-from gremlin_python.process.traversal import P, Scope, Column, Order, Direction, T, Pick, Operator
+from gremlin_python.process.traversal import Cardinality, P, Scope, Column, Order, Direction, T, Pick, Operator
 from radish import given, when, then
 from hamcrest import *
 
@@ -215,6 +215,7 @@ def _translate(traversal):
 def _make_traversal(g, traversal_string, params):
     b = {"g": g,
          "__": __,
+         "Cardinality": Cardinality,
          "Column": Column,
          "Direction": Direction,
          "Order": Order,

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/99105194/gremlin-test/features/map/AddVertex.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/AddVertex.feature b/gremlin-test/features/map/AddVertex.feature
new file mode 100644
index 0000000..3335e29
--- /dev/null
+++ b/gremlin-test/features/map/AddVertex.feature
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - addV()
+
+  Scenario: g_VX1X_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).as("a").addV("animal").property("age", __.select("a").by("age")).property("name", "puppy")
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 1 for count of "g.V().has(\"animal\",\"age\",29)"
+
+  Scenario: g_V_addVXanimalX_propertyXage_0X
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And the traversal of
+      """
+      g.V().addV("animal").property("age", 0)
+      """
+    When iterated to list
+    Then the result should have a count of 6
+    And the graph should return 6 for count of "g.V().has(\"animal\",\"age\",0)"
+
+  Scenario: g_addVXpersonX_propertyXname_stephenX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And the traversal of
+      """
+      g.addV("person").property("name", "stephen")
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"stephen\")"
+
+  Scenario: g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenmX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And the traversal of
+      """
+      g.addV("person").property(Cardinality.single, "name", "stephen").property(Cardinality.single, "name", "stephenm")
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 0 for count of "g.V().has(\"person\",\"name\",\"stephen\")"
+    And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"stephenm\")"
+
+  Scenario: get_g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenm_since_2010X
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And the traversal of
+      """
+      g.addV("person").property(Cardinality.single, "name", "stephen").property(Cardinality.single, "name", "stephenm", "since", 2010)
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 0 for count of "g.V().has(\"person\",\"name\",\"stephen\")"
+    And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"stephenm\")"
+    And the graph should return 1 for count of "g.V().has(\"person\",\"name\",\"stephenm\").properties(\"name\").has(\"since\",2010)"
\ No newline at end of file


[35/50] tinkerpop git commit: TINKERPOP-1784 Added sack() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added sack() feature tests


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

Branch: refs/heads/master
Commit: f98036605cfefac5d6a18b8e4e0f9ffeee690323
Parents: 04c903e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 15:17:20 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:13 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/sideEffect/Sack.feature | 71 ++++++++++++++++++++++
 1 file changed, 71 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f9803660/gremlin-test/features/sideEffect/Sack.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Sack.feature b/gremlin-test/features/sideEffect/Sack.feature
new file mode 100644
index 0000000..b0d4cc0
--- /dev/null
+++ b/gremlin-test/features/sideEffect/Sack.feature
@@ -0,0 +1,71 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - sack()
+
+  Scenario: g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack
+    Given the modern graph
+    And the traversal of
+      """
+      g.withSack("hello").V().outE().sack(Operator.assign).by(T.label).inV().sack()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | created |
+      | knows |
+      | knows |
+      | created |
+      | created |
+      | created |
+
+  Scenario: g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum
+    Given the modern graph
+    And the traversal of
+      """
+      g.withSack(0.0).V().outE().sack(Operator.sum).by("weight").inV().sack().sum()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[3.5] |
+
+  Scenario: g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack
+    Given the modern graph
+    And the traversal of
+      """
+      g.withSack(0.0).V().repeat(__.outE().sack(Operator.sum).by("weight").inV()).times(2).sack()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[2.0] |
+      | d[1.4] |
+
+  Scenario: g_withSackX0X_V_outE_sackXsum_weightX_inV_sack_sum
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This API is deprecated - will not test.
+      """
+
+  Scenario: g_withSackX0X_V_repeatXoutE_sackXsum_weightX_inVX_timesX2X_sack
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This API is deprecated - will not test.
+      """
\ No newline at end of file


[13/50] tinkerpop git commit: TINKERPOP-1784 Added sample() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added sample() feature tests


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

Branch: refs/heads/master
Commit: d11787a7e1177491cb126def43d1c101485d1e22
Parents: 22e113d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 12:35:59 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/Sample.feature | 75 ++++++++++++++++++++++++
 1 file changed, 75 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d11787a7/gremlin-test/features/filter/Sample.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Sample.feature b/gremlin-test/features/filter/Sample.feature
new file mode 100644
index 0000000..0f30527
--- /dev/null
+++ b/gremlin-test/features/filter/Sample.feature
@@ -0,0 +1,75 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - sample()
+
+  Scenario: g_E_sampleX1X
+    Given the modern graph
+    And the traversal of
+      """
+      g.E().sample(1)
+      """
+    When iterated to list
+    Then should have a result count of 1
+
+  Scenario: g_E_sampleX2X_byXweightX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.E().sample(2).by("weight")
+      """
+    When iterated to list
+    Then should have a result count of 2
+
+  Scenario: g_V_localXoutE_sampleX1X_byXweightXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().local(__.outE().sample(1).by("weight"))
+      """
+    When iterated to list
+    Then should have a result count of 3
+
+  Scenario: g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group().by(T.label).by(__.bothE().values("weight").sample(2).fold())
+      """
+    When iterated to list
+    Then nothing should happen because
+      """
+      The return value of this traversal is a map of samples weights in a list for each key which makes it
+      especially hard to assert with the current test language established and the non-deterministic outcomes
+      of sample().
+      """
+
+  Scenario: g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group().by(T.label).by(__.bothE().values("weight").fold().sample(Scope.local, 5))
+      """
+    When iterated to list
+    Then nothing should happen because
+      """
+      The return value of this traversal is a map of samples weights in a list for each key which makes it
+      especially hard to assert with the current test language established and the non-deterministic outcomes
+      of sample().
+      """
+


[18/50] tinkerpop git commit: TINKERPOP-1784 Added range() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added range() feature tests


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

Branch: refs/heads/master
Commit: 22e113d1a1e746d87a3da57df16f9f3adc0a6f33
Parents: a5d9977
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 12:17:43 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/Range.feature | 213 ++++++++++++++++++++++++
 1 file changed, 213 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/22e113d1/gremlin-test/features/filter/Range.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Range.feature b/gremlin-test/features/filter/Range.feature
new file mode 100644
index 0000000..d5ea3bc
--- /dev/null
+++ b/gremlin-test/features/filter/Range.feature
@@ -0,0 +1,213 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - range()
+
+  Scenario: g_VX1X_out_limitX2X
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out().limit(2)
+      """
+    When iterated to list
+    Then the result should be of
+      | v[josh] |
+      | v[vadas] |
+      | v[lop] |
+    And should have a result count of 2
+
+  Scenario: g_V_localXoutE_limitX1X_inVX_limitX3X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().local(__.outE().limit(1)).inV().limit(3)
+      """
+    When iterated to list
+    Then the result should be of
+      | v[josh] |
+      | v[vadas] |
+      | v[lop] |
+      | v[ripple] |
+    And should have a result count of 3
+
+  Scenario: g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("knows").outE("created").range(0, 1).inV()
+      """
+    When iterated to list
+    Then the result should be of
+      | v[lop] |
+      | v[ripple] |
+    And should have a result count of 1
+
+  Scenario: g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("knows").out("created").range(0, 1)
+      """
+    When iterated to list
+    Then the result should be of
+      | v[lop] |
+      | v[ripple] |
+    And should have a result count of 1
+
+  Scenario: g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("created").in("created").range(1, 3)
+      """
+    When iterated to list
+    Then the result should be of
+      | v[marko] |
+      | v[josh] |
+      | v[peter] |
+    And should have a result count of 2
+
+  Scenario: get_g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("created").inE("created").range(1, 3).outV()
+      """
+    When iterated to list
+    Then the result should be of
+      | v[marko] |
+      | v[josh] |
+      | v[peter] |
+    And should have a result count of 2
+
+  Scenario: get_g_V_repeatXbothX_timesX3X_rangeX5_11X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.both()).times(3).range(5, 11)
+      """
+    When iterated to list
+    Then the result should be of
+      | v[marko] |
+      | v[josh] |
+      | v[peter] |
+      | v[lop] |
+      | v[vadas] |
+      | v[ripple] |
+    And should have a result count of 6
+
+  Scenario: g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").in().as("a").in().as("a").select("a").by(__.unfold().values("name").fold()).limit(Scope.local, 2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | l[lop,josh] |
+      | l[ripple,josh] |
+
+  Scenario: g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_1X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").in().as("a").in().as("a").select("a").by(__.unfold().values("name").fold()).limit(Scope.local, 1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | lop |
+      | ripple |
+
+  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_3X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).range(Scope.local, 1, 3)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | l[josh,ripple] |
+      | l[josh,lop] |
+
+  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).range(Scope.local, 1, 2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | josh |
+      | josh |
+
+  Scenario: g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_rangeXlocal_4_5X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).range(Scope.local, 4, 5)
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").in().as("b").in().as("c").select("a","b","c").by("name").limit(Scope.local, 2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"a":"lop","b":"josh"}] |
+      | m[{"a":"ripple","b":"josh"}] |
+
+  Scenario: g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").in().as("b").in().as("c").select("a","b","c").by("name").limit(Scope.local, 1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"a":"lop"}] |
+      | m[{"a":"ripple"}] |
+
+  Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local, 1, 3)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"b":"josh","c":"lop"}] |
+      | m[{"b":"josh","c":"ripple"}] |
+
+  Scenario: g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local, 1, 2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"b":"josh"}] |
+      | m[{"b":"josh"}] |
\ No newline at end of file


[32/50] tinkerpop git commit: TINKERPOP-1784 Fixed some badly named feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Fixed some badly named feature tests


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

Branch: refs/heads/master
Commit: c7347ab2c61c759f35cbdb0a9e5b81c665f9d271
Parents: 5045a56
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 14:31:01 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Max.feature | 2 +-
 gremlin-test/features/map/Min.feature | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7347ab2/gremlin-test/features/map/Max.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Max.feature b/gremlin-test/features/map/Max.feature
index 24cb81a..bb7e3d4 100644
--- a/gremlin-test/features/map/Max.feature
+++ b/gremlin-test/features/map/Max.feature
@@ -39,7 +39,7 @@ Feature: Step - max()
       | result |
       | d[35] |
 
-  Scenario: get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX
+  Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX
     Given the modern graph
     And the traversal of
       """

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7347ab2/gremlin-test/features/map/Min.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Min.feature b/gremlin-test/features/map/Min.feature
index 172fbaf..c4b86c6 100644
--- a/gremlin-test/features/map/Min.feature
+++ b/gremlin-test/features/map/Min.feature
@@ -39,7 +39,7 @@ Feature: Step - min()
       | result |
       | d[27] |
 
-  Scenario: get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX
+  Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX
     Given the modern graph
     And the traversal of
       """


[33/50] tinkerpop git commit: TINKERPOP-1784 Added sum() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added sum() feature tests


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

Branch: refs/heads/master
Commit: 5dd6a240b30c29cd2d2d4625a0415159b191818f
Parents: 447e57c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 14:36:03 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Sum.feature | 40 ++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5dd6a240/gremlin-test/features/map/Sum.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Sum.feature b/gremlin-test/features/map/Sum.feature
new file mode 100644
index 0000000..35571fa
--- /dev/null
+++ b/gremlin-test/features/map/Sum.feature
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - sum()
+
+  Scenario: g_V_valuesXageX_sum
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").sum()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[123] |
+
+  Scenario: g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").sum())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":1.0,"lop":1.0}] |
\ No newline at end of file


[16/50] tinkerpop git commit: TINKERPOP-1784 Added repeat() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added repeat() feature tests


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

Branch: refs/heads/master
Commit: 401a44fc95c628cccbdd6b47c604488561a13bd8
Parents: f784e71
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Oct 23 13:50:37 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/branch/Repeat.feature | 217 +++++++++++++++++++++++
 1 file changed, 217 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/401a44fc/gremlin-test/features/branch/Repeat.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Repeat.feature b/gremlin-test/features/branch/Repeat.feature
new file mode 100644
index 0000000..e6049b5
--- /dev/null
+++ b/gremlin-test/features/branch/Repeat.feature
@@ -0,0 +1,217 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - repeat()
+
+  Scenario: g_V_repeatXoutX_timesX2X_emit_path
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.out()).times(2).emit().path()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | p[v[marko],v[lop]] |
+      | p[v[marko],v[vadas]] |
+      | p[v[marko],v[josh]] |
+      | p[v[marko],v[josh],v[ripple]] |
+      | p[v[marko],v[josh],v[lop]] |
+      | p[v[josh],v[ripple]] |
+      | p[v[josh],v[lop]] |
+      | p[v[peter],v[lop]] |
+
+  Scenario: g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.out()).times(2).repeat(__.in()).times(2).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | marko |
+
+  Scenario: g_V_repeatXoutX_timesX2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.out()).times(2) 
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[ripple] |
+      | v[lop] |
+
+  Scenario: g_V_repeatXoutX_timesX2X_emit
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.out()).times(2).emit()
+      """
+    When iterated to list
+    Then the result should be of
+      | v[ripple] |
+      | v[lop] |
+      | v[josh] |
+      | v[vadas] |
+    And only have a result count of 8
+
+  Scenario: g_VX1X_timesX2X_repeatXoutX_name
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).times(2).repeat(__.out()).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | ripple |
+      | lop |
+
+  Scenario: g_V_emit_timesX2X_repeatXoutX_path
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().emit().times(2).repeat(__.out()).path()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | p[v[marko]] |
+      | p[v[marko],v[lop]] |
+      | p[v[marko],v[vadas]] |
+      | p[v[marko],v[josh]] |
+      | p[v[marko],v[josh],v[ripple]] |
+      | p[v[marko],v[josh],v[lop]] |
+      | p[v[vadas]] |
+      | p[v[lop]] |
+      | p[v[josh]] |
+      | p[v[josh],v[ripple]] |
+      | p[v[josh],v[lop]] |
+      | p[v[ripple]] |
+      | p[v[peter]] |
+      | p[v[peter],v[lop]] |
+
+  Scenario: g_V_emit_repeatXoutX_timesX2X_path
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().emit().repeat(__.out()).times(2).path()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | p[v[marko]] |
+      | p[v[marko],v[lop]] |
+      | p[v[marko],v[vadas]] |
+      | p[v[marko],v[josh]] |
+      | p[v[marko],v[josh],v[ripple]] |
+      | p[v[marko],v[josh],v[lop]] |
+      | p[v[vadas]] |
+      | p[v[lop]] |
+      | p[v[josh]] |
+      | p[v[josh],v[ripple]] |
+      | p[v[josh],v[lop]] |
+      | p[v[ripple]] |
+      | p[v[peter]] |
+      | p[v[peter],v[lop]] |
+
+  Scenario: g_VX1X_emitXhasXlabel_personXX_repeatXoutX_name
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).emit(__.has(T.label, "person")).repeat(__.out()).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | vadas |
+      | josh  |
+
+  Scenario: g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.groupCount("m").by("name").out()).times(2).cap("m")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"ripple":2,"peter":1,"vadas":2,"josh":2,"lop":4,"marko":1}] |
+
+  Scenario: g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.groupCount("m").by(__.loops()).out()).times(3).cap("m")
+      """
+    When iterated to list
+    Then nothing should happen because
+      """
+      The result returned is not supported under GraphSON 2.x and therefore cannot be properly asserted. More
+      specifically it has long keys which basically get toString()'d under GraphSON 2.x. This test can be supported
+      with GraphSON 3.x.
+      """
+
+  Scenario: g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.both()).times(10).as("a").out().as("b").select("a", "b").count()
+      """
+    When iterated to list
+    Then the result should be ordered
+      | d[43958] |
+
+  Scenario: g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).repeat(__.out()).until(__.outE().count().is(0)).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | lop |
+      | vadas |
+      | ripple  |
+      | lop  |
+
+  Scenario: g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter l defined as "c[t -> t.get().value('name').equals('lop') || t.loops() > 1]"
+    And the traversal of
+      """
+      g.V().repeat(__.both()).until(l).groupCount().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"ripple":3,"vadas":3,"josh":4,"lop":10,"marko":4}] |
+
+  Scenario: g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("name", "marko").repeat(__.outE().inV().simplePath()).until(__.has("name", "ripple")).path().by("name").by(T.label)
+      """
+    When iterated next
+    Then the result should be unordered
+      | marko |
+      | knows |
+      | josh  |
+      | created |
+      | ripple  |


[40/50] tinkerpop git commit: TINKERPOP-1784 Removed the linejump option to clean up output to console

Posted by sp...@apache.org.
TINKERPOP-1784 Removed the linejump option to clean up output to console


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

Branch: refs/heads/master
Commit: 2b24f589e6f6468fec2cba5dda6a7e95cefc8987
Parents: f980366
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 15:27:45 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 gremlin-python/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2b24f589/gremlin-python/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-python/pom.xml b/gremlin-python/pom.xml
index 67cc35b..d1a4a76 100644
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@ -449,7 +449,7 @@ limitations under the License.
                                         <exec executable="env/bin/radish" dir="${project.build.directory}/python2"
                                               failonerror="true">
                                             <env key="PYTHONPATH" value=""/>
-                                            <arg line="-e -t -b ${project.build.directory}/python2/radish ${project.basedir}/../gremlin-test/features/ --no-line-jump"/> <!-- -no-line-jump -->
+                                            <arg line="-e -t -b ${project.build.directory}/python2/radish ${project.basedir}/../gremlin-test/features/"/> <!-- -no-line-jump -->
                                         </exec>                                                                  
                                     </target>
                                 </configuration>


[24/50] tinkerpop git commit: TINKERPOP-1784 Add more tests for group() and cap()

Posted by sp...@apache.org.
TINKERPOP-1784 Add more tests for group() and cap()


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

Branch: refs/heads/master
Commit: c3a3848d274a04eda8f930f0bfcf964b675f40c0
Parents: 3314644
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 31 09:23:22 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |   2 +-
 gremlin-test/features/sideEffect/Group.feature  | 244 +++++++++++++++++++
 .../features/sideEffect/SideEffectCap.feature   |  38 +++
 3 files changed, 283 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c3a3848d/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index b48b7ef..b8b31ce 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -149,7 +149,7 @@ def _convert(val, ctx):
     elif isinstance(val, str) and re.match("^e\[.*\]$", val):         # parse edge
         return ctx.lookup_e["modern"][val[2:-1]]
     elif isinstance(val, str) and re.match("^m\[.*\]$", val):         # parse json as a map
-        return _convert(json.loads(val[2:-1]), ctx)
+        return _convert(json.loads(val[2:-1].replace('\\"', '"')), ctx)
     elif isinstance(val, str) and re.match("^p\[.*\]$", val):         # parse path
         path_objects = list(map((lambda x: _convert(x, ctx)), val[2:-1].split(",")))
         return Path([set([])], path_objects)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c3a3848d/gremlin-test/features/sideEffect/Group.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Group.feature b/gremlin-test/features/sideEffect/Group.feature
new file mode 100644
index 0000000..9ba57ec
--- /dev/null
+++ b/gremlin-test/features/sideEffect/Group.feature
@@ -0,0 +1,244 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - group()
+
+  Scenario: g_V_group_byXnameX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":"l[v[ripple]]", "peter":"l[v[peter]]", "vadas":"l[v[vadas]]", "josh": "l[v[josh]]", "lop":"l[v[lop]]", "marko":"l[v[marko]]"}] |
+
+  Scenario: g_V_group_byXnameX_by
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group().by("name").by()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":"l[v[ripple]]", "peter":"l[v[peter]]", "vadas":"l[v[vadas]]", "josh": "l[v[josh]]", "lop":"l[v[lop]]", "marko":"l[v[marko]]"}] |
+
+  Scenario: g_V_groupXaX_byXnameX_capXaX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group("a").by("name").cap("a")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":"l[v[ripple]]", "peter":"l[v[peter]]", "vadas":"l[v[vadas]]", "josh": "l[v[josh]]", "lop":"l[v[lop]]", "marko":"l[v[marko]]"}] |
+
+  Scenario: g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("lang").group("a").by("lang").by("name").out().cap("a")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"java":["lop","ripple"]}] |
+
+  Scenario: g_V_hasXlangX_group_byXlangX_byXcountX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().has("lang").group().by("lang").by(__.count())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"java":2}] |
+
+  Scenario: g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().repeat(__.out().group("a").by("name").by(__.count())).times(2).cap("a")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":2, "vadas":1, "josh":1, "lop":4}] |
+
+  Scenario: g_V_group_byXoutE_countX_byXnameX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      The result returned is not supported under GraphSON 2.x and therefore cannot be properly asserted. More
+      specifically it has numeric keys which basically get toString()'d under GraphSON 2.x. This test can be supported
+      with GraphSON 3.x.
+      """
+
+  Scenario: g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group("a").by(T.label).by(__.outE().values("weight").sum()).cap("a")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"software":0, "person":3.5}] |
+
+  Scenario: g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().repeat(__.both("followedBy")).times(2).group().by("songType").by(__.count())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"original":771317, "":160968, "cover":368579}] |
+
+  Scenario: g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().repeat(__.both("followedBy")).times(2).group("a").by("songType").by(__.count()).cap("a")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"original":771317, "":160968, "cover":368579}] |
+
+  Scenario: g_V_group_byXname_substring_1X_byXconstantX1XX
+    Given the modern graph
+    And using the parameter l1 defined as "c[it.value('name').substring(0, 1)]"
+    And the traversal of
+      """
+      g.V().group().by(l1).by(__.constant(1))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"p":1, "r":1, "v":1, "j":1, "l":1, "m":1}] |
+
+  Scenario: g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX
+    Given the modern graph
+    And using the parameter l1 defined as "c[it.value('name').substring(0, 1)]"
+    And the traversal of
+      """
+      g.V().group("a").by(l1).by(__.constant(1)).cap("a")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"p":1, "r":1, "v":1, "j":1, "l":1, "m":1}] |
+
+  Scenario: g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().out().group().by(T.label).select("person").unfold().out("created").values("name").limit(2)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | ripple |
+      | lop |
+
+  # TODO: can we change the traversal to allow for a better assertion
+  Scenario: g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().hasLabel("song").group().by("name").by(__.properties().groupCount().by(T.label))
+      """
+    When iterated next
+    Then should have a result count of 584
+
+  Scenario: g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().hasLabel("song").group("a").by("name").by(__.properties().groupCount().by(T.label)).out().cap("a")
+      """
+    When iterated next
+    Then should have a result count of 584
+
+  Scenario: g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      The result returned is not supported under GraphSON 2.x and therefore cannot be properly asserted. More
+      specifically it has numeric keys which basically get toString()'d under GraphSON 2.x. This test can be supported
+      with GraphSON 3.x.
+      """
+
+  Scenario: g_V_group_byXbothE_countX_byXgroup_byXlabelXX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      The result returned is not supported under GraphSON 2.x and therefore cannot be properly asserted. More
+      specifically it has numeric keys which basically get toString()'d under GraphSON 2.x. This test can be supported
+      with GraphSON 3.x.
+      """
+
+  Scenario: g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX
+    Given the grateful graph
+    And the traversal of
+      """
+      g.V().out("followedBy").group().by("songType").by(__.bothE().group().by(T.label).by(__.values("weight").sum()))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"cover":{"followedBy":777982, "sungBy":0, "writtenBy":0}, "":{"followedBy":179350}, "original":{"followedBy":2185613, "sungBy":0, "writtenBy":0}}] |
+
+  Scenario: g_V_groupXmX_byXnameX_byXinXknowsX_nameX_capXmX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group("m").by("name").by(__.in("knows").values("name")).cap("m")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"vadas":"marko", "josh":"marko"}] |
+
+  Scenario: g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group().by(T.label).by(__.bothE().group("a").by(T.label).by(__.values("weight").sum()).values("weight").sum())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"software":2.0, "person":5.0}] |
+
+  Scenario: g_withSideEffectXa__marko_666_noone_blahX_V_groupXaX_byXnameX_byXoutE_label_foldX_capXaX
+    Given the modern graph
+    And using the parameter m defined as "m[{\"marko\":[666], \"noone\":[\"blah\"]}]"
+    And the traversal of
+      """
+      g.withSideEffect("a", m).V().group("a").by("name").by(__.outE().label().fold()).cap("a")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":[], "peter":["created"], "noone":["blah"], "vadas":[], "josh":["created", "created"], "lop":[], "marko":[666, "created", "knows", "knows"]}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c3a3848d/gremlin-test/features/sideEffect/SideEffectCap.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/SideEffectCap.feature b/gremlin-test/features/sideEffect/SideEffectCap.feature
new file mode 100644
index 0000000..6be2fdb
--- /dev/null
+++ b/gremlin-test/features/sideEffect/SideEffectCap.feature
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - cap()
+
+  Scenario: g_V_group_byXnameX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().group().by("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"ripple":"l[v[ripple]]", "vadas":"l[v[vadas]]", "lop":"l[v[lop]]", "peter": "l[v[peter]]", "josh": "l[v[josh]]", "marko":"l[v[marko]]"}] |
+    
+  Scenario: g_V_chooseXlabel_person__age_groupCountXaX__name_groupCountXbXX_capXa_bX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      The result returned is not supported under GraphSON 2.x and therefore cannot be properly asserted. More
+      specifically it has numeric keys which basically get toString()'d under GraphSON 2.x. This test can be supported
+      with GraphSON 3.x.
+      """
\ No newline at end of file


[02/50] tinkerpop git commit: TINKERPOP-1784 Added valueMap() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added valueMap() feature tests


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

Branch: refs/heads/master
Commit: 72e98b68f8f120f5b6ba0f011b97007fca759c30
Parents: 8437c18
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Oct 20 13:57:59 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:51 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/ValueMap.feature      | 59 ++++++++++++++++++++
 .../gremlin/process/FeatureCoverageTest.java    |  2 +
 2 files changed, 61 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/72e98b68/gremlin-test/features/map/ValueMap.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/ValueMap.feature b/gremlin-test/features/map/ValueMap.feature
new file mode 100644
index 0000000..0a2220e
--- /dev/null
+++ b/gremlin-test/features/map/ValueMap.feature
@@ -0,0 +1,59 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - valueMap()
+
+  Scenario: g_V_valueMap
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"name": ["marko"], "age": [29]}] |
+      | m[{"name": ["josh"], "age": [32]}] |
+      | m[{"name": ["peter"], "age": [35]}] |
+      | m[{"name": ["vadas"], "age": [27]}] |
+      | m[{"name": ["lop"], "lang": ["java"]}] |
+      | m[{"name": ["ripple"], "lang": ["java"]}] |
+
+  Scenario: g_V_valueMapXname_ageX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap("name", "age")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"name": ["marko"], "age": [29]}] |
+      | m[{"name": ["josh"], "age": [32]}] |
+      | m[{"name": ["peter"], "age": [35]}] |
+      | m[{"name": ["vadas"], "age": [27]}] |
+      | m[{"name": ["lop"]}] |
+      | m[{"name": ["ripple"]}] |
+
+  Scenario: g_VX1X_outXcreatedX_valueMap
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).out("created").valueMap()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"name": ["lop"], "lang": ["java"]}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/72e98b68/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index eb62f77..97f1fd6 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -27,6 +27,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProjectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ValueMapTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountTest;
@@ -78,6 +79,7 @@ public class FeatureCoverageTest {
                 CountTest.class,
                 PathTest.class,
                 ProjectTest.class,
+                ValueMapTest.class,
                 VertexTest.class,
                 // sideEffect
                 AggregateTest.class,


[43/50] tinkerpop git commit: TINKERPOP-1784 Killed some whitespace in gremlin-python pom

Posted by sp...@apache.org.
TINKERPOP-1784 Killed some whitespace in gremlin-python pom


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

Branch: refs/heads/master
Commit: 5286c2042690369c25bda8dd69692ae11b02841e
Parents: 50f8286
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Nov 13 08:04:28 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 gremlin-python/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5286c204/gremlin-python/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-python/pom.xml b/gremlin-python/pom.xml
index d1a4a76..a1aee4a 100644
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@ -450,7 +450,7 @@ limitations under the License.
                                               failonerror="true">
                                             <env key="PYTHONPATH" value=""/>
                                             <arg line="-e -t -b ${project.build.directory}/python2/radish ${project.basedir}/../gremlin-test/features/"/> <!-- -no-line-jump -->
-                                        </exec>                                                                  
+                                        </exec>
                                     </target>
                                 </configuration>
                             </execution>


[20/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for AddEdge

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for AddEdge

Minor refactoring to test language around result counts


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

Branch: refs/heads/master
Commit: 3a294df142d7608eb8814542d6f9b9e7d24aa986
Parents: c3a3848
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Nov 1 15:36:23 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |   7 +-
 gremlin-test/features/branch/Local.feature      |  12 +-
 gremlin-test/features/branch/Repeat.feature     |   2 +-
 gremlin-test/features/filter/Dedup.feature      |   2 +-
 gremlin-test/features/filter/Range.feature      |  14 +-
 gremlin-test/features/filter/Sample.feature     |   6 +-
 gremlin-test/features/map/AddEdge.feature       | 307 +++++++++++++++++++
 gremlin-test/features/sideEffect/Group.feature  |   4 +-
 8 files changed, 331 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index b8b31ce..b7050e9 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -108,13 +108,14 @@ def assert_side_effects(step, count, traversal_string):
     if step.context.ignore:
         return
 
-    t = _make_traversal(step.context.g, traversal_string, {})
+    t = _make_traversal(step.context.g, traversal_string.replace('\\"', '"'),
+                        step.context.traversal_params if hasattr(step.context, "traversal_params") else {})
     assert_that(count, equal_to(t.count().next()))
 
 
-@then("should have a result count of {count:d}")
+@then("the result should have a count of {count:d}")
 def assert_count(step, count):
-    assert_that(count, equal_to(len(step.context.result)))
+    assert_that(len(step.context.result), equal_to(count))
 
 
 @then("nothing should happen because")

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-test/features/branch/Local.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Local.feature b/gremlin-test/features/branch/Local.feature
index 4b33d62..fbc0dec 100644
--- a/gremlin-test/features/branch/Local.feature
+++ b/gremlin-test/features/branch/Local.feature
@@ -77,7 +77,7 @@ Feature: Step - local()
       | result |
       | vadas |
       | josh  |
-    And should have a result count of 1
+    And the result should have a count of 1
 
   Scenario: g_V_localXbothEXcreatedX_limitX1XX_otherV_name
     Given the modern graph
@@ -93,7 +93,7 @@ Feature: Step - local()
       | ripple |
       | josh   |
       | peter  |
-    And should have a result count of 5
+    And the result should have a count of 5
 
   Scenario: g_VX4X_localXbothEX1_createdX_limitX1XX
     Given the modern graph
@@ -107,7 +107,7 @@ Feature: Step - local()
       | result |
       | e[josh-created->lop]    |
       | e[josh-created->ripple] |
-    And should have a result count of 1
+    And the result should have a count of 1
 
   Scenario: g_VX4X_localXbothEXknows_createdX_limitX1XX
     Given the modern graph
@@ -122,7 +122,7 @@ Feature: Step - local()
       | e[marko-knows->josh]    |
       | e[josh-created->lop]    |
       | e[josh-created->ripple] |
-    And should have a result count of 1
+    And the result should have a count of 1
 
   Scenario: g_VX4X_localXbothE_limitX1XX_otherV_name
     Given the modern graph
@@ -137,7 +137,7 @@ Feature: Step - local()
       | marko  |
       | ripple |
       | lop    |
-    And should have a result count of 1
+    And the result should have a count of 1
 
   Scenario: g_VX4X_localXbothE_limitX2XX_otherV_name
     Given the modern graph
@@ -152,7 +152,7 @@ Feature: Step - local()
       | marko  |
       | ripple |
       | lop    |
-    And should have a result count of 2
+    And the result should have a count of 2
 
   Scenario: g_V_localXinEXknowsX_limitX2XX_outV_name
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-test/features/branch/Repeat.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Repeat.feature b/gremlin-test/features/branch/Repeat.feature
index 082a3c6..1a76452 100644
--- a/gremlin-test/features/branch/Repeat.feature
+++ b/gremlin-test/features/branch/Repeat.feature
@@ -72,7 +72,7 @@ Feature: Step - repeat()
       | v[lop] |
       | v[josh] |
       | v[vadas] |
-    And should have a result count of 8
+    And the result should have a count of 8
 
   Scenario: g_VX1X_timesX2X_repeatXoutX_name
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-test/features/filter/Dedup.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Dedup.feature b/gremlin-test/features/filter/Dedup.feature
index a19a0bf..805497f 100644
--- a/gremlin-test/features/filter/Dedup.feature
+++ b/gremlin-test/features/filter/Dedup.feature
@@ -129,7 +129,7 @@ Feature: Step - dedup()
       g.V().both().both().dedup().by(T.label)
       """
     When iterated to list
-    Then should have a result count of 2
+    Then the result should have a count of 2
 
   Scenario: g_V_group_byXlabelX_byXbothE_weight_dedup_foldX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-test/features/filter/Range.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Range.feature b/gremlin-test/features/filter/Range.feature
index da02849..42e2f9a 100644
--- a/gremlin-test/features/filter/Range.feature
+++ b/gremlin-test/features/filter/Range.feature
@@ -30,7 +30,7 @@ Feature: Step - range()
       | v[josh] |
       | v[vadas] |
       | v[lop] |
-    And should have a result count of 2
+    And the result should have a count of 2
 
   Scenario: g_V_localXoutE_limitX1X_inVX_limitX3X
     Given the modern graph
@@ -45,7 +45,7 @@ Feature: Step - range()
       | v[vadas] |
       | v[lop] |
       | v[ripple] |
-    And should have a result count of 3
+    And the result should have a count of 3
 
   Scenario: g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV
     Given the modern graph
@@ -59,7 +59,7 @@ Feature: Step - range()
       | result |
       | v[lop] |
       | v[ripple] |
-    And should have a result count of 1
+    And the result should have a count of 1
 
   Scenario: g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X
     Given the modern graph
@@ -73,7 +73,7 @@ Feature: Step - range()
       | result |
       | v[lop] |
       | v[ripple] |
-    And should have a result count of 1
+    And the result should have a count of 1
 
   Scenario: g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X
     Given the modern graph
@@ -88,7 +88,7 @@ Feature: Step - range()
       | v[marko] |
       | v[josh] |
       | v[peter] |
-    And should have a result count of 2
+    And the result should have a count of 2
 
   Scenario: get_g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV
     Given the modern graph
@@ -103,7 +103,7 @@ Feature: Step - range()
       | v[marko] |
       | v[josh] |
       | v[peter] |
-    And should have a result count of 2
+    And the result should have a count of 2
 
   Scenario: get_g_V_repeatXbothX_timesX3X_rangeX5_11X
     Given the modern graph
@@ -120,7 +120,7 @@ Feature: Step - range()
       | v[lop] |
       | v[vadas] |
       | v[ripple] |
-    And should have a result count of 6
+    And the result should have a count of 6
 
   Scenario: g_V_asXaX_in_asXaX_in_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_limitXlocal_2X
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-test/features/filter/Sample.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Sample.feature b/gremlin-test/features/filter/Sample.feature
index 0f30527..ab3a9ae 100644
--- a/gremlin-test/features/filter/Sample.feature
+++ b/gremlin-test/features/filter/Sample.feature
@@ -24,7 +24,7 @@ Feature: Step - sample()
       g.E().sample(1)
       """
     When iterated to list
-    Then should have a result count of 1
+    Then the result should have a count of 1
 
   Scenario: g_E_sampleX2X_byXweightX
     Given the modern graph
@@ -34,7 +34,7 @@ Feature: Step - sample()
       g.E().sample(2).by("weight")
       """
     When iterated to list
-    Then should have a result count of 2
+    Then the result should have a count of 2
 
   Scenario: g_V_localXoutE_sampleX1X_byXweightXX
     Given the modern graph
@@ -43,7 +43,7 @@ Feature: Step - sample()
       g.V().local(__.outE().sample(1).by("weight"))
       """
     When iterated to list
-    Then should have a result count of 3
+    Then the result should have a count of 3
 
   Scenario: g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-test/features/map/AddEdge.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/AddEdge.feature b/gremlin-test/features/map/AddEdge.feature
new file mode 100644
index 0000000..f3a55bb
--- /dev/null
+++ b/gremlin-test/features/map/AddEdge.feature
@@ -0,0 +1,307 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - addE()
+
+  Scenario: g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_aX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This test is deprecated.
+      """
+
+  Scenario: g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).as("a").out("created").addE("createdBy").to("a")
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 7 for count of "g.E()"
+    And the graph should return 1 for count of "g.V(v1Id).inE()"
+
+  Scenario: g_VX1X_asXaX_outXcreatedX_addOutEXcreatedBy_a_weight_2X
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This test is deprecated.
+      """
+
+  Scenario: g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX_propertyXweight_2X
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).as("a").out("created").addE("createdBy").to("a").property("weight", 2.0)
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 7 for count of "g.E()"
+    And the graph should return 4 for count of "g.V(v1Id).bothE()"
+    And the graph should return 1 for count of "g.V(v1Id).inE().has(\"weight\", 2.0)"
+
+  Scenario: g_withSideEffectXx__g_V_toListX_addOutEXexistsWith_x_time_nowX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This test is marked as @Ignored in the test suite.
+      """
+
+  Scenario: g_V_aggregateXxX_asXaX_selectXxX_unfold_addEXexistsWithX_toXaX_propertyXtime_nowX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v2Id defined as "v[vadas].id"
+    And using the parameter v3Id defined as "v[lop].id"
+    And using the parameter v4Id defined as "v[josh].id"
+    And using the parameter v5Id defined as "v[ripple].id"
+    And using the parameter v6Id defined as "v[peter].id"
+    And the traversal of
+      """
+      g.V().aggregate("x").as("a").select("x").unfold().addE("existsWith").to("a").property("time", "now")
+      """
+    When iterated to list
+    Then the result should have a count of 36
+    And the graph should return 42 for count of "g.E()"
+    And the graph should return 15 for count of "g.V(v1Id).bothE()"
+    And the graph should return 6 for count of "g.V(v1Id).inE(\"existsWith\")"
+    And the graph should return 6 for count of "g.V(v1Id).outE(\"existsWith\")"
+    And the graph should return 12 for count of "g.V(v1Id).bothE(\"existsWith\").has(\"time\",\"now\")"
+    And the graph should return 13 for count of "g.V(v2Id).bothE()"
+    And the graph should return 6 for count of "g.V(v2Id).inE(\"existsWith\")"
+    And the graph should return 6 for count of "g.V(v2Id).outE(\"existsWith\")"
+    And the graph should return 12 for count of "g.V(v2Id).bothE(\"existsWith\").has(\"time\",\"now\")"
+    And the graph should return 15 for count of "g.V(v3Id).bothE()"
+    And the graph should return 6 for count of "g.V(v3Id).inE(\"existsWith\")"
+    And the graph should return 6 for count of "g.V(v3Id).outE(\"existsWith\")"
+    And the graph should return 12 for count of "g.V(v3Id).bothE(\"existsWith\").has(\"time\",\"now\")"
+    And the graph should return 15 for count of "g.V(v4Id).bothE()"
+    And the graph should return 6 for count of "g.V(v4Id).inE(\"existsWith\")"
+    And the graph should return 6 for count of "g.V(v4Id).outE(\"existsWith\")"
+    And the graph should return 12 for count of "g.V(v4Id).bothE(\"existsWith\").has(\"time\",\"now\")"
+    And the graph should return 13 for count of "g.V(v5Id).bothE()"
+    And the graph should return 6 for count of "g.V(v5Id).inE(\"existsWith\")"
+    And the graph should return 6 for count of "g.V(v5Id).outE(\"existsWith\")"
+    And the graph should return 12 for count of "g.V(v5Id).bothE(\"existsWith\").has(\"time\",\"now\")"
+    And the graph should return 13 for count of "g.V(v6Id).bothE()"
+    And the graph should return 6 for count of "g.V(v6Id).inE(\"existsWith\")"
+    And the graph should return 6 for count of "g.V(v6Id).outE(\"existsWith\")"
+    And the graph should return 12 for count of "g.V(v6Id).bothE(\"existsWith\").has(\"time\",\"now\")"
+
+  Scenario: g_V_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_asXbX_selectXa_bX_addInEXa_codeveloper_b_year_2009X
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This test is deprecated.
+      """
+
+  Scenario: g_V_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_asXbX_addEXcodeveloperX_fromXaX_toXbX_propertyXyear_2009X
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v2Id defined as "v[vadas].id"
+    And using the parameter v4Id defined as "v[josh].id"
+    And using the parameter v6Id defined as "v[peter].id"
+    And the traversal of
+      """
+      g.V().as("a").out("created").in("created").where(P.neq("a")).as("b").addE("codeveloper").from("a").to("b").property("year", 2009)
+      """
+    When iterated to list
+    Then the result should have a count of 6
+    And the graph should return 12 for count of "g.E()"
+    And the graph should return 7 for count of "g.V(v1Id).bothE()"
+    And the graph should return 2 for count of "g.V(v1Id).inE(\"codeveloper\")"
+    And the graph should return 2 for count of "g.V(v1Id).outE(\"codeveloper\")"
+    And the graph should return 4 for count of "g.V(v1Id).bothE(\"codeveloper\").has(\"year\",2009)"
+    And the graph should return 1 for count of "g.V(v2Id).bothE()"
+    And the graph should return 7 for count of "g.V(v4Id).bothE()"
+    And the graph should return 2 for count of "g.V(v4Id).inE(\"codeveloper\")"
+    And the graph should return 2 for count of "g.V(v4Id).outE(\"codeveloper\")"
+    And the graph should return 4 for count of "g.V(v4Id).bothE(\"codeveloper\").has(\"year\",2009)"
+    And the graph should return 5 for count of "g.V(v6Id).bothE()"
+    And the graph should return 2 for count of "g.V(v6Id).inE(\"codeveloper\")"
+    And the graph should return 2 for count of "g.V(v6Id).outE(\"codeveloper\")"
+    And the graph should return 4 for count of "g.V(v6Id).bothE(\"codeveloper\").has(\"year\",2009)"
+
+  Scenario: g_V_asXaX_inXcreatedX_addEXcreatedByX_fromXaX_propertyXyear_2009X_propertyXacl_publicX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v2Id defined as "v[vadas].id"
+    And using the parameter v3Id defined as "v[lop].id"
+    And using the parameter v4Id defined as "v[josh].id"
+    And using the parameter v5Id defined as "v[ripple].id"
+    And using the parameter v6Id defined as "v[peter].id"
+    And the traversal of
+      """
+      g.V().as("a").in("created").addE("createdBy").from("a").property("year", 2009).property("acl", "public")
+      """
+    When iterated to list
+    Then the result should have a count of 4
+    And the graph should return 10 for count of "g.E()"
+    And the graph should return 4 for count of "g.V(v1Id).bothE()"
+    And the graph should return 1 for count of "g.V(v1Id).inE(\"createdBy\")"
+    And the graph should return 0 for count of "g.V(v1Id).outE(\"createdBy\")"
+    And the graph should return 1 for count of "g.V(v1Id).bothE(\"createdBy\").has(\"year\",2009).has(\"acl\", \"public\")"
+    And the graph should return 1 for count of "g.V(v2Id).bothE()"
+    And the graph should return 6 for count of "g.V(v3Id).bothE()"
+    And the graph should return 0 for count of "g.V(v3Id).inE(\"createdBy\")"
+    And the graph should return 3 for count of "g.V(v3Id).outE(\"createdBy\")"
+    And the graph should return 3 for count of "g.V(v3Id).bothE(\"createdBy\").has(\"year\",2009).has(\"acl\", \"public\")"
+    And the graph should return 5 for count of "g.V(v4Id).bothE()"
+    And the graph should return 2 for count of "g.V(v4Id).inE(\"createdBy\")"
+    And the graph should return 0 for count of "g.V(v4Id).outE(\"createdBy\")"
+    And the graph should return 2 for count of "g.V(v4Id).bothE(\"createdBy\").has(\"year\",2009).has(\"acl\", \"public\")"
+    And the graph should return 2 for count of "g.V(v5Id).bothE()"
+    And the graph should return 0 for count of "g.V(v5Id).inE(\"createdBy\")"
+    And the graph should return 1 for count of "g.V(v5Id).outE(\"createdBy\")"
+    And the graph should return 1 for count of "g.V(v5Id).bothE(\"createdBy\").has(\"year\",2009).has(\"acl\", \"public\")"
+    And the graph should return 2 for count of "g.V(v6Id).bothE()"
+    And the graph should return 1 for count of "g.V(v6Id).inE(\"createdBy\")"
+    And the graph should return 0 for count of "g.V(v6Id).outE(\"createdBy\")"
+    And the graph should return 1 for count of "g.V(v6Id).bothE(\"createdBy\").has(\"year\",2009).has(\"acl\", \"public\")"
+
+  Scenario: g_V_asXaX_inXcreatedX_addInEXcreatedBy_a_year_2009_acl_publicX
+    Given an unsupported test
+    Then nothing should happen because
+      """
+      This test is deprecated.
+      """
+
+  Scenario: g_withSideEffectXb_bX_VXaX_addEXknowsX_toXbX_propertyXweight_0_5X
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", "marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", "vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", "lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", "ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", "peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 12).property("weight", 0.2)
+      """
+    And using the parameter v1 defined as "v[marko]"
+    And using the parameter v6 defined as "v[peter]"
+    And the traversal of
+      """
+      g.withSideEffect("b", v6).V(v1).addE("knows").to("b").property("weight", 0.5)
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 7 for count of "g.E()"
+    And the graph should return 4 for count of "g.V(v1).bothE()"
+    And the graph should return 0 for count of "g.V(v1).inE(\"knows\")"
+    And the graph should return 3 for count of "g.V(v1).outE(\"knows\")"
+    And the graph should return 2 for count of "g.V(v1).bothE(\"knows\").has(\"weight\",0.5)"
+    And the graph should return 2 for count of "g.V(v6).bothE()"
+    And the graph should return 1 for count of "g.V(v6).inE(\"knows\")"
+    And the graph should return 0 for count of "g.V(v6).outE(\"knows\")"
+    And the graph should return 1 for count of "g.V(v6).bothE(\"knows\").has(\"weight\",0.5)"
+
+  Scenario: g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX
+    Given the empty graph
+    And the traversal of
+      """
+      g.addV().as("first").repeat(__.addE("next").to(__.addV()).inV()).times(5).addE("next").to(__.select("first"))
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 6 for count of "g.V()"
+    And the graph should return 6 for count of "g.E()"
+    And the graph should return 6 for count of "g.E().hasLabel(\"next\")"
+    And the graph should return 2 for count of "g.V().limit(1).bothE()"
+    And the graph should return 1 for count of "g.V().limit(1).inE()"
+    And the graph should return 1 for count of "g.V().limit(1).outE()"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3a294df1/gremlin-test/features/sideEffect/Group.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Group.feature b/gremlin-test/features/sideEffect/Group.feature
index 9ba57ec..ac89e7d 100644
--- a/gremlin-test/features/sideEffect/Group.feature
+++ b/gremlin-test/features/sideEffect/Group.feature
@@ -169,7 +169,7 @@ Feature: Step - group()
       g.V().hasLabel("song").group().by("name").by(__.properties().groupCount().by(T.label))
       """
     When iterated next
-    Then should have a result count of 584
+    Then the result should have a count of 584
 
   Scenario: g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX
     Given the grateful graph
@@ -178,7 +178,7 @@ Feature: Step - group()
       g.V().hasLabel("song").group("a").by("name").by(__.properties().groupCount().by(T.label)).out().cap("a")
       """
     When iterated next
-    Then should have a result count of 584
+    Then the result should have a count of 584
 
   Scenario: g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX
     Given an unsupported test


[05/50] tinkerpop git commit: TINKERPOP-1784 Added flatMap()/fold() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added flatMap()/fold() feature tests


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

Branch: refs/heads/master
Commit: 78fd4fdc8f177ecab960f7d5c94aa6374606cd61
Parents: e9ee40f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Nov 2 08:11:48 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |  3 +-
 gremlin-test/features/map/FlatMap.feature       | 35 ++++++++++++
 gremlin-test/features/map/Fold.feature          | 57 ++++++++++++++++++++
 3 files changed, 94 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/78fd4fdc/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index b7050e9..dae6361a 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -21,7 +21,7 @@ import json
 import re
 from gremlin_python.structure.graph import Graph, Path
 from gremlin_python.process.graph_traversal import __
-from gremlin_python.process.traversal import P, Scope, Column, Order, Direction, T, Pick
+from gremlin_python.process.traversal import P, Scope, Column, Order, Direction, T, Pick, Operator
 from radish import given, when, then
 from hamcrest import *
 
@@ -218,6 +218,7 @@ def _make_traversal(g, traversal_string, params):
          "P": P,
          "Pick": Pick,
          "Scope": Scope,
+         "Operator": Operator,
          "T": T}
 
     b.update(params)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/78fd4fdc/gremlin-test/features/map/FlatMap.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/FlatMap.feature b/gremlin-test/features/map/FlatMap.feature
new file mode 100644
index 0000000..7384ee3
--- /dev/null
+++ b/gremlin-test/features/map/FlatMap.feature
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - flatMap()
+
+  Scenario: g_V_asXaX_flatMapXselectXaXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").flatMap(__.select("a"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[marko] |
+      | v[vadas] |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+      | v[peter]  |
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/78fd4fdc/gremlin-test/features/map/Fold.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Fold.feature b/gremlin-test/features/map/Fold.feature
new file mode 100644
index 0000000..1c71b27
--- /dev/null
+++ b/gremlin-test/features/map/Fold.feature
@@ -0,0 +1,57 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - fold()
+
+  Scenario: g_V_fold
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().fold()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | l[v[marko],v[vadas],v[lop],v[josh],v[ripple],v[peter]] |
+
+  Scenario: g_V_fold_unfold
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().fold().unfold()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | v[marko] |
+      | v[vadas] |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+      | v[peter]  |
+
+  Scenario: g_V_age_foldX0_plusX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("age").fold(0, Operator.sum)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | d[123] |
+


[25/50] tinkerpop git commit: TINKERPOP-1784 radish bumped version and broke stuff

Posted by sp...@apache.org.
TINKERPOP-1784 radish bumped version and broke stuff

Tables now return a list of maps that required a header so all feature files needed header.


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

Branch: refs/heads/master
Commit: 33146446fe67ff25e378e2025d2b03e2c207d119
Parents: 1588d3e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 31 08:24:28 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py     |  4 +--
 gremlin-python/src/main/jython/setup.py         |  2 +-
 gremlin-test/features/branch/Branch.feature     |  3 ++
 gremlin-test/features/branch/Choose.feature     |  6 ++++
 gremlin-test/features/branch/Local.feature      | 11 +++++++
 gremlin-test/features/branch/Optional.feature   |  4 +++
 gremlin-test/features/branch/Repeat.feature     | 13 ++++++++
 gremlin-test/features/branch/Union.feature      |  7 ++++
 gremlin-test/features/filter/And.feature        |  4 +++
 gremlin-test/features/filter/Coin.feature       |  1 +
 gremlin-test/features/filter/CyclicPath.feature |  2 ++
 gremlin-test/features/filter/Dedup.feature      | 15 +++++++++
 gremlin-test/features/filter/Filter.feature     |  5 +++
 gremlin-test/features/filter/Has.feature        |  2 ++
 gremlin-test/features/filter/Is.feature         |  5 +++
 gremlin-test/features/filter/Or.feature         |  3 ++
 gremlin-test/features/filter/Range.feature      | 15 +++++++++
 gremlin-test/features/filter/SimplePath.feature |  7 ++--
 gremlin-test/features/map/Constant.feature      |  2 ++
 gremlin-test/features/map/Count.feature         |  9 ++++++
 gremlin-test/features/map/Max.feature           |  3 ++
 gremlin-test/features/map/Min.feature           |  3 ++
 gremlin-test/features/map/Path.feature          |  7 ++++
 gremlin-test/features/map/Project.feature       |  2 ++
 gremlin-test/features/map/Select.feature        | 20 ++++++++++++
 gremlin-test/features/map/ValueMap.feature      |  3 ++
 gremlin-test/features/map/Vertex.feature        | 34 +++++++++++++++++++-
 .../features/sideEffect/Aggregate.feature       |  4 +++
 .../features/sideEffect/GroupCount.feature      | 10 ++++++
 gremlin-test/features/sideEffect/Inject.feature |  2 ++
 gremlin-test/features/sideEffect/Store.feature  |  3 ++
 31 files changed, 205 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 14a0153..b48b7ef 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -168,7 +168,7 @@ def _convert_results(val):
 
 
 def _any_assertion(data, result, ctx):
-    converted = [_convert(line[0], ctx) for line in data]
+    converted = [_convert(line['result'], ctx) for line in data]
     for r in result:
         assert_that(r, is_in(converted))
 
@@ -182,7 +182,7 @@ def _table_assertion(data, result, ctx, ordered):
     # finds a match in the results for each line of data to assert and then removes that item
     # from the list - in the end there should be no items left over and each will have been asserted
     for ix, line in enumerate(data):
-        val = _convert(line[0], ctx)
+        val = _convert(line['result'], ctx)
 
         # clear the labels since we don't define them in .feature files
         if isinstance(val, Path):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-python/src/main/jython/setup.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/setup.py b/gremlin-python/src/main/jython/setup.py
index 9a66c81..c72a4d3 100644
--- a/gremlin-python/src/main/jython/setup.py
+++ b/gremlin-python/src/main/jython/setup.py
@@ -71,7 +71,7 @@ setup(
     tests_require=[
         'pytest',
         'mock',
-        'radish-bdd',
+        'radish-bdd==0.8.0',
         'PyHamcrest'
     ],
     install_requires=install_requires,

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/branch/Branch.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Branch.feature b/gremlin-test/features/branch/Branch.feature
index d306c3b..b8690c6 100644
--- a/gremlin-test/features/branch/Branch.feature
+++ b/gremlin-test/features/branch/Branch.feature
@@ -30,6 +30,7 @@ Feature: Step - branch()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | java |
       | java |
       | lop |
@@ -51,6 +52,7 @@ Feature: Step - branch()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | java |
       | java |
       | lop |
@@ -73,6 +75,7 @@ Feature: Step - branch()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | java |
       | java |
       | lop |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/branch/Choose.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Choose.feature b/gremlin-test/features/branch/Choose.feature
index 0b5f00d..aa5a545 100644
--- a/gremlin-test/features/branch/Choose.feature
+++ b/gremlin-test/features/branch/Choose.feature
@@ -27,6 +27,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"name":["marko"], "age":[29]}] |
       | josh |
 
@@ -39,6 +40,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | josh |
       | vadas |
       | josh |
@@ -57,6 +59,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | ripple |
       | josh |
@@ -75,6 +78,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | vadas |
       | peter |
@@ -92,6 +96,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | vadas |
       | josh |
       | vadas |
@@ -111,6 +116,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"p1":"marko", "p2":"vadas"}] |
       | m[{"p1":"marko", "p2":"josh"}] |
       | m[{"p1":"vadas", "p2":"vadas"}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/branch/Local.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Local.feature b/gremlin-test/features/branch/Local.feature
index fa12d8c..4b33d62 100644
--- a/gremlin-test/features/branch/Local.feature
+++ b/gremlin-test/features/branch/Local.feature
@@ -25,6 +25,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | brussels       |
       | san diego      |
       | centreville    |
@@ -42,6 +43,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a":"marko","b":3}] |
       | m[{"a":"josh","b":5}]  |
       | m[{"a":"josh","b":3}]  |
@@ -55,6 +57,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[3] |
       | d[0] |
       | d[0] |
@@ -71,6 +74,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | vadas |
       | josh  |
     And should have a result count of 1
@@ -83,6 +87,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | marko  |
       | lop    |
       | ripple |
@@ -99,6 +104,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | e[josh-created->lop]    |
       | e[josh-created->ripple] |
     And should have a result count of 1
@@ -112,6 +118,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | e[marko-knows->josh]    |
       | e[josh-created->lop]    |
       | e[josh-created->ripple] |
@@ -126,6 +133,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | marko  |
       | ripple |
       | lop    |
@@ -140,6 +148,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | marko  |
       | ripple |
       | lop    |
@@ -153,6 +162,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | marko |
 
@@ -166,6 +176,7 @@ Feature: Step - local()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"name":"marko","project":"lop"}]   |
       | m[{"name":"josh","project":"lop"}]    |
       | m[{"name":"peter","project":"lop"}]   |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/branch/Optional.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Optional.feature b/gremlin-test/features/branch/Optional.feature
index 258230c..5d2be8d 100644
--- a/gremlin-test/features/branch/Optional.feature
+++ b/gremlin-test/features/branch/Optional.feature
@@ -26,6 +26,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
 
   Scenario: g_VX2X_optionalXinXknowsXX
@@ -37,6 +38,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
 
   Scenario: g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path
@@ -50,6 +52,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],v[vadas]] |
       | p[v[marko],v[josh],v[ripple]] |
       | p[v[marko],v[josh],v[lop]] |
@@ -65,6 +68,7 @@ Feature: Step - choose()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],v[lop]] |
       | p[v[marko],v[vadas]] |
       | p[v[marko],v[josh],v[ripple]] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/branch/Repeat.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Repeat.feature b/gremlin-test/features/branch/Repeat.feature
index 6d97fc0..082a3c6 100644
--- a/gremlin-test/features/branch/Repeat.feature
+++ b/gremlin-test/features/branch/Repeat.feature
@@ -25,6 +25,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],v[lop]] |
       | p[v[marko],v[vadas]] |
       | p[v[marko],v[josh]] |
@@ -42,6 +43,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | marko |
 
@@ -53,6 +55,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[ripple] |
       | v[lop] |
 
@@ -64,6 +67,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[ripple] |
       | v[lop] |
       | v[josh] |
@@ -79,6 +83,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | ripple |
       | lop |
 
@@ -90,6 +95,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko]] |
       | p[v[marko],v[lop]] |
       | p[v[marko],v[vadas]] |
@@ -113,6 +119,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko]] |
       | p[v[marko],v[lop]] |
       | p[v[marko],v[vadas]] |
@@ -137,6 +144,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | vadas |
       | josh  |
@@ -149,6 +157,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"ripple":2,"peter":1,"vadas":2,"josh":2,"lop":4,"marko":1}] |
 
   Scenario: g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX
@@ -174,6 +183,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[43958] |
 
   Scenario: g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name
@@ -185,6 +195,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | vadas |
       | ripple  |
@@ -200,6 +211,7 @@ Feature: Step - repeat()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"ripple":3,"vadas":3,"josh":4,"lop":10,"marko":4}] |
 
   Scenario: g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX
@@ -210,6 +222,7 @@ Feature: Step - repeat()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | marko |
       | knows |
       | josh  |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/branch/Union.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Union.feature b/gremlin-test/features/branch/Union.feature
index 938f51a..6178092 100644
--- a/gremlin-test/features/branch/Union.feature
+++ b/gremlin-test/features/branch/Union.feature
@@ -25,6 +25,7 @@ Feature: Step - union()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | vadas |
       | josh |
@@ -47,6 +48,7 @@ Feature: Step - union()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | ripple |
       | lop |
       | lop   |
@@ -61,6 +63,7 @@ Feature: Step - union()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | java   |
       | lop    |
       | vadas  |
@@ -84,6 +87,7 @@ Feature: Step - union()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"java":4,"ripple":1,"person":4,"vadas":1,"josh":1,"lop":3}] |
 
   Scenario: g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount
@@ -99,6 +103,7 @@ Feature: Step - union()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"software":12,"person":20}] |
 
   Scenario: g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX
@@ -111,6 +116,7 @@ Feature: Step - union()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[3]   |
       | d[1.9] |
       | d[1]   |
@@ -125,6 +131,7 @@ Feature: Step - union()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[3]   |
       | d[0]   |
       | d[1.9] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/And.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/And.feature b/gremlin-test/features/filter/And.feature
index c47ec6e..1e8732e 100644
--- a/gremlin-test/features/filter/And.feature
+++ b/gremlin-test/features/filter/And.feature
@@ -25,6 +25,7 @@ Feature: Step - and()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | josh |
 
@@ -36,6 +37,7 @@ Feature: Step - and()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | josh |
       | peter  |
 
@@ -47,6 +49,7 @@ Feature: Step - and()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
 
   Scenario: g_V_asXaX_andXselectXaX_selectXaXX
@@ -57,6 +60,7 @@ Feature: Step - and()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[vadas] |
       | v[lop] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/Coin.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Coin.feature b/gremlin-test/features/filter/Coin.feature
index 569f1db..b9e8ac8 100644
--- a/gremlin-test/features/filter/Coin.feature
+++ b/gremlin-test/features/filter/Coin.feature
@@ -25,6 +25,7 @@ Feature: Step - coin()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[vadas] |
       | v[lop] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/CyclicPath.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/CyclicPath.feature b/gremlin-test/features/filter/CyclicPath.feature
index d07e4ad..bfbb3a9 100644
--- a/gremlin-test/features/filter/CyclicPath.feature
+++ b/gremlin-test/features/filter/CyclicPath.feature
@@ -26,6 +26,7 @@ Feature: Step - cyclicPath()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
 
   Scenario: g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path
@@ -37,6 +38,7 @@ Feature: Step - cyclicPath()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],v[lop],v[marko]] |
 
   Scenario: g_VX1X_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_cyclicPath_fromXaX_toXbX_path

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/Dedup.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Dedup.feature b/gremlin-test/features/filter/Dedup.feature
index 7433da2..a19a0bf 100644
--- a/gremlin-test/features/filter/Dedup.feature
+++ b/gremlin-test/features/filter/Dedup.feature
@@ -25,6 +25,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | josh  |
       | peter |
@@ -37,6 +38,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"x":"lop","y":"marko"}] |
       | m[{"x":"lop","y":"josh"}] |
       | m[{"x":"lop","y":"peter"}] |
@@ -52,6 +54,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | vadas |
       | josh  |
@@ -67,6 +70,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
 
   Scenario: g_V_both_name_order_byXa_bX_dedup_value
@@ -78,6 +82,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | josh |
       | lop  |
       | marko |
@@ -93,6 +98,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | josh |
       | lop  |
       | marko |
@@ -108,6 +114,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[josh] |
       | v[lop]  |
       | v[marko] |
@@ -132,6 +139,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"software":[1.0,0.4,0.2],"person":[0.5,1.0,0.4,0.2]}] |
 
   Scenario: g_V_asXaX_both_asXbX_dedupXa_bX_byXlabelX_selectXa_bX
@@ -142,6 +150,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a":"v[marko]","b":"v[lop]"}] |
       | m[{"a":"v[marko]","b":"v[vadas]"}] |
       | m[{"a":"v[lop]","b":"v[marko]"}] |
@@ -154,6 +163,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],v[lop],v[marko]] |
       | p[v[josh],v[ripple],v[josh]] |
       | p[v[josh],v[lop],v[marko]] |
@@ -167,6 +177,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | vadas |
       | josh |
@@ -180,6 +191,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | josh |
       | peter |
@@ -193,6 +205,7 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[1] |
 
   Scenario: g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup
@@ -203,6 +216,7 @@ Feature: Step - dedup()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | josh |
       | lop  |
       | marko |
@@ -218,5 +232,6 @@ Feature: Step - dedup()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[0] |
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/Filter.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Filter.feature b/gremlin-test/features/filter/Filter.feature
index 05e7cea..76a5d7d 100644
--- a/gremlin-test/features/filter/Filter.feature
+++ b/gremlin-test/features/filter/Filter.feature
@@ -36,6 +36,7 @@ Feature: Step - filter()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[vadas] |
       | v[lop] |
@@ -52,6 +53,7 @@ Feature: Step - filter()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[ripple] |
       | v[lop]  |
 
@@ -65,6 +67,7 @@ Feature: Step - filter()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[josh] |
 
   Scenario: g_V_filterXname_startsWith_m_OR_name_startsWith_pX
@@ -76,6 +79,7 @@ Feature: Step - filter()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[peter]  |
 
@@ -98,6 +102,7 @@ Feature: Step - filter()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-created->lop] |
       | e[marko-knows->josh] |
       | e[marko-knows->vadas] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/Has.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Has.feature b/gremlin-test/features/filter/Has.feature
index fb140a9..797a1ec 100644
--- a/gremlin-test/features/filter/Has.feature
+++ b/gremlin-test/features/filter/Has.feature
@@ -25,6 +25,7 @@ Feature: Step - has()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[josh] |
       | v[peter] |
 
@@ -37,6 +38,7 @@ Feature: Step - has()
     """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[josh] |
       | v[josh] |
       | v[peter] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/Is.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Is.feature b/gremlin-test/features/filter/Is.feature
index 9a00945..5ed0485 100644
--- a/gremlin-test/features/filter/Is.feature
+++ b/gremlin-test/features/filter/Is.feature
@@ -25,6 +25,7 @@ Feature: Step - coin()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[32] |
 
   Scenario: g_V_valuesXageX_isXlte_30X
@@ -35,6 +36,7 @@ Feature: Step - coin()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[27] |
       | d[29] |
 
@@ -46,6 +48,7 @@ Feature: Step - coin()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[29] |
       | d[32] |
 
@@ -57,6 +60,7 @@ Feature: Step - coin()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | ripple |
 
   Scenario: g_V_whereXinXcreatedX_count_isXgte_2XX_valuesXnameX
@@ -67,4 +71,5 @@ Feature: Step - coin()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/Or.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Or.feature b/gremlin-test/features/filter/Or.feature
index 111315a..7f4782d 100644
--- a/gremlin-test/features/filter/Or.feature
+++ b/gremlin-test/features/filter/Or.feature
@@ -25,6 +25,7 @@ Feature: Step - or()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | josh  |
       | peter |
@@ -37,6 +38,7 @@ Feature: Step - or()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | ripple |
       | lop  |
@@ -50,6 +52,7 @@ Feature: Step - or()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[vadas] |
       | v[lop] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/Range.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Range.feature b/gremlin-test/features/filter/Range.feature
index d5ea3bc..da02849 100644
--- a/gremlin-test/features/filter/Range.feature
+++ b/gremlin-test/features/filter/Range.feature
@@ -26,6 +26,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[josh] |
       | v[vadas] |
       | v[lop] |
@@ -39,6 +40,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[josh] |
       | v[vadas] |
       | v[lop] |
@@ -54,6 +56,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[lop] |
       | v[ripple] |
     And should have a result count of 1
@@ -67,6 +70,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[lop] |
       | v[ripple] |
     And should have a result count of 1
@@ -80,6 +84,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[marko] |
       | v[josh] |
       | v[peter] |
@@ -94,6 +99,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[marko] |
       | v[josh] |
       | v[peter] |
@@ -107,6 +113,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be of
+      | result |
       | v[marko] |
       | v[josh] |
       | v[peter] |
@@ -123,6 +130,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | l[lop,josh] |
       | l[ripple,josh] |
 
@@ -134,6 +142,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | ripple |
 
@@ -145,6 +154,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | l[josh,ripple] |
       | l[josh,lop] |
 
@@ -156,6 +166,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | josh |
       | josh |
 
@@ -176,6 +187,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a":"lop","b":"josh"}] |
       | m[{"a":"ripple","b":"josh"}] |
 
@@ -187,6 +199,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a":"lop"}] |
       | m[{"a":"ripple"}] |
 
@@ -198,6 +211,7 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"b":"josh","c":"lop"}] |
       | m[{"b":"josh","c":"ripple"}] |
 
@@ -209,5 +223,6 @@ Feature: Step - range()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"b":"josh"}] |
       | m[{"b":"josh"}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/filter/SimplePath.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/SimplePath.feature b/gremlin-test/features/filter/SimplePath.feature
index c8091af..ed66e8b 100644
--- a/gremlin-test/features/filter/SimplePath.feature
+++ b/gremlin-test/features/filter/SimplePath.feature
@@ -26,10 +26,11 @@ Feature: Step - simplePath()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[josh] |
       | v[peter] |
 
-  Scenario: get_g_V_repeatXboth_simplePathX_timesX3X_path
+  Scenario: g_V_repeatXboth_simplePathX_timesX3X_path
     Given the modern graph
     And the traversal of
       """
@@ -37,6 +38,7 @@ Feature: Step - simplePath()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],v[lop],v[josh],v[ripple]] |
       | p[v[marko],v[josh],v[lop],v[peter]] |
       | p[v[vadas],v[marko],v[lop],v[josh]] |
@@ -56,7 +58,7 @@ Feature: Step - simplePath()
       | p[v[peter],v[lop],v[josh],v[ripple]] |
       | p[v[peter],v[lop],v[josh],v[marko]] |
 
-  Scenario: get_g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX
+  Scenario: g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX
     Given the modern graph
     And using the parameter v1Id defined as "v[marko].id"
     And the traversal of
@@ -65,5 +67,6 @@ Feature: Step - simplePath()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[marko,josh,ripple] |
       | p[marko,josh,lop]    |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Constant.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Constant.feature b/gremlin-test/features/map/Constant.feature
index f4ff337..9fb3dfb 100644
--- a/gremlin-test/features/map/Constant.feature
+++ b/gremlin-test/features/map/Constant.feature
@@ -26,6 +26,7 @@ Feature: Step - constant()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[123] |
       | d[123] |
       | d[123] |
@@ -41,6 +42,7 @@ Feature: Step - constant()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | vadas |
       | inhuman |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Count.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Count.feature b/gremlin-test/features/map/Count.feature
index 7f708ee..1d98464 100644
--- a/gremlin-test/features/map/Count.feature
+++ b/gremlin-test/features/map/Count.feature
@@ -25,6 +25,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[6] |
 
   Scenario: g_V_out_count
@@ -35,6 +36,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[6] |
 
   Scenario: g_V_both_both_count
@@ -45,6 +47,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[30] |
 
   Scenario: g_V_fold_countXlocalX
@@ -55,6 +58,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[6] |
 
   Scenario: g_V_hasXnoX_count
@@ -65,6 +69,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[0] |
 
   Scenario: g_V_whereXinXkknowsX_outXcreatedX_count_is_0XX_name
@@ -75,6 +80,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | lop  |
       | ripple |
@@ -88,6 +94,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[2505037961767380] |
 
   Scenario: g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count
@@ -103,6 +110,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[24309134024] |
 
   Scenario: g_V_repeatXoutX_timesX3X_count
@@ -113,4 +121,5 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[14465066] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Max.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Max.feature b/gremlin-test/features/map/Max.feature
index c36177d..24cb81a 100644
--- a/gremlin-test/features/map/Max.feature
+++ b/gremlin-test/features/map/Max.feature
@@ -25,6 +25,7 @@ Feature: Step - max()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[35] |
 
   Scenario: g_V_repeatXbothX_timesX5X_age_max
@@ -35,6 +36,7 @@ Feature: Step - max()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[35] |
 
   Scenario: get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX
@@ -45,4 +47,5 @@ Feature: Step - max()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"ripple":1.0,"lop":0.4}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Min.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Min.feature b/gremlin-test/features/map/Min.feature
index 48ceeb9..172fbaf 100644
--- a/gremlin-test/features/map/Min.feature
+++ b/gremlin-test/features/map/Min.feature
@@ -25,6 +25,7 @@ Feature: Step - min()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[27] |
 
   Scenario: g_V_repeatXbothX_timesX5X_age_min
@@ -35,6 +36,7 @@ Feature: Step - min()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | d[27] |
 
   Scenario: get_g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX
@@ -45,4 +47,5 @@ Feature: Step - min()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"ripple":1.0,"lop":0.2}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Path.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Path.feature b/gremlin-test/features/map/Path.feature
index 2126138..ea98a7a 100644
--- a/gremlin-test/features/map/Path.feature
+++ b/gremlin-test/features/map/Path.feature
@@ -26,6 +26,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],marko] |
 
   Scenario: g_VX1X_out_path_byXageX_byXnameX
@@ -37,6 +38,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[d[29],lop] |
       | p[d[29],vadas] |
       | p[d[29],josh] |
@@ -49,6 +51,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],josh,java] |
       | p[v[marko],josh,java] |
 
@@ -60,6 +63,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[marko,d[32],ripple] |
       | p[marko,d[32],lop] |
 
@@ -71,6 +75,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko]] |
 
   Scenario: g_VX1X_outEXcreatedX_inV_inE_outV_path
@@ -82,6 +87,7 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],e[marko-created->lop],v[lop],e[marko-created->lop],v[marko]] |
       | p[v[marko],e[marko-created->lop],v[lop],e[josh-created->lop],v[josh]] |
       | p[v[marko],e[marko-created->lop],v[lop],e[peter-created->lop],v[peter]] |
@@ -94,5 +100,6 @@ Feature: Step - count()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[josh,ripple] |
       | p[josh,lop] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Project.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Project.feature b/gremlin-test/features/map/Project.feature
index 3d8b9cc..8a781f2 100644
--- a/gremlin-test/features/map/Project.feature
+++ b/gremlin-test/features/map/Project.feature
@@ -28,6 +28,7 @@ Feature: Step - project()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a":3, "b":29}] |
       | m[{"a":0, "b":27}] |
       | m[{"a":2, "b":32}] |
@@ -47,6 +48,7 @@ Feature: Step - project()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | lop |
       | lop |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Select.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature
index 317dad8..538a734 100644
--- a/gremlin-test/features/map/Select.feature
+++ b/gremlin-test/features/map/Select.feature
@@ -26,6 +26,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a": "v[marko]", "b": "v[vadas]"}] |
       | m[{"a": "v[marko]", "b": "v[josh]"}] |
 
@@ -39,6 +40,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a": "marko", "b": "vadas"}] |
       | m[{"a": "marko", "b": "josh"}] |
 
@@ -51,6 +53,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[marko] |
 
@@ -64,6 +67,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | marko |
 
@@ -76,6 +80,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a": "marko", "b": "lop"}] |
       | m[{"a": "marko", "b": "vadas"}] |
       | m[{"a": "marko", "b": "josh"}] |
@@ -92,6 +97,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a": "marko", "b": "lop"}] |
       | m[{"a": "marko", "b": "vadas"}] |
       | m[{"a": "marko", "b": "josh"}] |
@@ -111,6 +117,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a": "marko", "b": "marko"}] |
       | m[{"a": "vadas", "b": "vadas"}] |
       | m[{"a": "josh", "b": "josh"}] |
@@ -132,6 +139,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"a": 3, "b": "matthias"}] |
       | m[{"a": 4, "b": "marko"}] |
       | m[{"a": 5, "b": "stephen"}] |
@@ -145,6 +153,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
 
   Scenario: g_V_label_groupCount_asXxX_selectXxX
@@ -155,6 +164,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"software": 2, "person": 4}] |
 
   Scenario: g_V_hasLabelXpersonX_asXpX_mapXbothE_label_groupCountX_asXrX_selectXp_rX
@@ -167,6 +177,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"p": "v[marko]", "r": {"created": 1, "knows": 2}}] |
       | m[{"p": "v[vadas]", "r": {"knows": 1}}] |
       | m[{"p": "v[josh]", "r": {"created": 2, "knows": 1}}] |
@@ -185,6 +196,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[vadas] |
       | v[lop] |
@@ -201,6 +213,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[marko] |
       | v[marko] |
@@ -214,6 +227,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[josh] |
       | v[josh] |
 
@@ -228,6 +242,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | ripple |
       | lop |
 
@@ -242,6 +257,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-knows->vadas] |
 
   Scenario: g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX
@@ -256,6 +272,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-knows->josh] |
 
   Scenario: g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX
@@ -270,6 +287,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-knows->josh] |
 
   Scenario: g_V_asXhereXout_name_selectXhereX
@@ -282,6 +300,7 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[marko] |
       | v[marko] |
@@ -301,4 +320,5 @@ Feature: Step - select()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"ripple": 1, "lop": 6}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/ValueMap.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/ValueMap.feature b/gremlin-test/features/map/ValueMap.feature
index 0a2220e..2390512 100644
--- a/gremlin-test/features/map/ValueMap.feature
+++ b/gremlin-test/features/map/ValueMap.feature
@@ -25,6 +25,7 @@ Feature: Step - valueMap()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"name": ["marko"], "age": [29]}] |
       | m[{"name": ["josh"], "age": [32]}] |
       | m[{"name": ["peter"], "age": [35]}] |
@@ -40,6 +41,7 @@ Feature: Step - valueMap()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"name": ["marko"], "age": [29]}] |
       | m[{"name": ["josh"], "age": [32]}] |
       | m[{"name": ["peter"], "age": [35]}] |
@@ -56,4 +58,5 @@ Feature: Step - valueMap()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | m[{"name": ["lop"], "lang": ["java"]}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/map/Vertex.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Vertex.feature b/gremlin-test/features/map/Vertex.feature
index 9dff917..569fb6f 100644
--- a/gremlin-test/features/map/Vertex.feature
+++ b/gremlin-test/features/map/Vertex.feature
@@ -26,6 +26,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | vadas |
       | lop |
@@ -39,6 +40,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | vadas |
       | lop |
@@ -51,6 +53,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[vadas] |
       | v[lop] |
@@ -67,6 +70,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[lop] |
       | v[josh] |
@@ -80,6 +84,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
 
   Scenario: g_VX4X_both
@@ -91,6 +96,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[lop] |
       | v[ripple] |
@@ -103,6 +109,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-created->lop] |
       | e[marko-knows->josh] |
       | e[marko-knows->vadas] |
@@ -119,6 +126,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[josh-created->lop] |
 
   Scenario: g_EX11AsStringX
@@ -130,6 +138,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[josh-created->lop] |
 
   Scenario: g_VX1X_outE
@@ -141,6 +150,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-created->lop] |
       | e[marko-knows->josh] |
       | e[marko-knows->vadas] |
@@ -154,6 +164,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-knows->vadas] |
 
   Scenario: g_VX4X_bothEXcreatedX
@@ -165,6 +176,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[josh-created->lop] |
       | e[josh-created->ripple] |
 
@@ -177,6 +189,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[josh-created->lop] |
       | e[josh-created->ripple] |
       | e[marko-knows->josh] |
@@ -190,6 +203,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
       | v[lop] |
@@ -203,6 +217,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
 
   Scenario: g_V_outE_hasXweight_1X_outV
@@ -213,6 +228,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[josh] |
 
@@ -224,6 +240,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | marko |
       | marko |
@@ -244,6 +261,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | marko |
       | marko |
       | josh |
@@ -258,6 +276,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
       | v[lop] |
@@ -271,6 +290,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[marko] |
       | v[ripple] |
       | v[lop] |
@@ -284,6 +304,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[lop] |
 
   Scenario: g_VX2X_inE
@@ -295,6 +316,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | e[marko-knows->vadas] |
 
   Scenario: get_g_VX1X_outE_otherV
@@ -306,7 +328,8 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
-      | v[vadas] |                               
+      | result |
+      | v[vadas] |
       | v[josh] |
       | v[lop] |
 
@@ -319,6 +342,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
 
@@ -331,6 +355,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
 
@@ -343,6 +368,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
       | v[lop] |
@@ -356,6 +382,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
 
@@ -368,6 +395,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
       | v[lop] |
@@ -380,6 +408,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[ripple] |
       | v[lop] |
 
@@ -402,6 +431,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | vadas |
       | josh |
       | lop |
@@ -415,6 +445,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | v[vadas] |
       | v[josh] |
 
@@ -433,6 +464,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | lop |
       | lop |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/sideEffect/Aggregate.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Aggregate.feature b/gremlin-test/features/sideEffect/Aggregate.feature
index 1a5634d..52454f4 100644
--- a/gremlin-test/features/sideEffect/Aggregate.feature
+++ b/gremlin-test/features/sideEffect/Aggregate.feature
@@ -25,6 +25,7 @@ Feature: Step - aggregate()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | marko |
       | josh |
       | peter |
@@ -40,6 +41,7 @@ Feature: Step - aggregate()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | marko |
       | josh |
       | peter |
@@ -55,6 +57,7 @@ Feature: Step - aggregate()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[v[marko],v[lop]] |
       | p[v[marko],v[vadas]] |
       | p[v[marko],v[josh]] |
@@ -70,6 +73,7 @@ Feature: Step - aggregate()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | d[29] |
       | d[27] |
       | d[32] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/sideEffect/GroupCount.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/GroupCount.feature b/gremlin-test/features/sideEffect/GroupCount.feature
index 35ac8d3..8803722 100644
--- a/gremlin-test/features/sideEffect/GroupCount.feature
+++ b/gremlin-test/features/sideEffect/GroupCount.feature
@@ -25,6 +25,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{"ripple": 1, "lop": 3}] |
 
   Scenario: g_V_outXcreatedX_name_groupCount
@@ -35,6 +36,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{"ripple": 1, "lop": 3}] |
 
   Scenario: g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX
@@ -48,6 +50,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{"ripple": 1, "lop": 3}] |
 
   Scenario: g_V_outXcreatedX_name_groupCountXaX_capXaX
@@ -60,6 +63,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{"ripple": 1, "lop": 3}] |
 
   Scenario: g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX
@@ -73,6 +77,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{"ripple":2, "lop": 4, "josh": 1, "vadas": 1}] |
 
   Scenario: g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name
@@ -90,6 +95,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | lop |
       | lop |
       | lop |
@@ -116,6 +122,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | d[12] |
 
   Scenario: g_V_hasXnoX_groupCount
@@ -126,6 +133,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{}] |
 
   Scenario: g_V_hasXnoX_groupCountXaX_capXaX
@@ -136,6 +144,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{}] |
 
   Scenario: g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX
@@ -147,6 +156,7 @@ Feature: Step - groupCount()
       """
     When iterated to list
     Then the result should be ordered
+      | result |
       | m[{"marko": 2, "java": 2}] |
 
   Scenario: g_V_outXcreatedX_groupCountXxX_capXxX

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/sideEffect/Inject.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Inject.feature b/gremlin-test/features/sideEffect/Inject.feature
index fcb5ff4..532dbe1 100644
--- a/gremlin-test/features/sideEffect/Inject.feature
+++ b/gremlin-test/features/sideEffect/Inject.feature
@@ -27,6 +27,7 @@ Feature: Step - inject()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | vadas |
       | lop   |
       | vadas |
@@ -43,6 +44,7 @@ Feature: Step - inject()
       """
     When iterated to list
     Then the result should be unordered
+      | result |
       | p[daniel,d[6]] |
       | p[v[marko],v[lop],lop,d[3]] |
       | p[v[marko],v[vadas],vadas,d[5]] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33146446/gremlin-test/features/sideEffect/Store.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Store.feature b/gremlin-test/features/sideEffect/Store.feature
index ef66c5e..2cb7faf 100644
--- a/gremlin-test/features/sideEffect/Store.feature
+++ b/gremlin-test/features/sideEffect/Store.feature
@@ -25,6 +25,7 @@ Feature: Step - store()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | marko |
       | vadas |
       | lop |
@@ -41,6 +42,7 @@ Feature: Step - store()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | marko |
       | vadas |
       | lop |
@@ -74,6 +76,7 @@ Feature: Step - store()
       """
     When iterated next
     Then the result should be unordered
+      | result |
       | d[1] |
       | d[1] |
       | d[0] |


[15/50] tinkerpop git commit: TINKERPOP-1784 Add union() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Add union() feature tests


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

Branch: refs/heads/master
Commit: f784e71988183852cdef8713fa66b84f3e332a28
Parents: c45bac7
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Oct 23 10:58:36 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/branch/Union.feature | 133 ++++++++++++++++++++++++
 1 file changed, 133 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f784e719/gremlin-test/features/branch/Union.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Union.feature b/gremlin-test/features/branch/Union.feature
new file mode 100644
index 0000000..938f51a
--- /dev/null
+++ b/gremlin-test/features/branch/Union.feature
@@ -0,0 +1,133 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - union()
+
+  Scenario: g_V_unionXout__inX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().union(__.out(), __.in()).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | lop |
+      | vadas |
+      | josh |
+      | marko |
+      | marko |
+      | josh |
+      | peter |
+      | ripple |
+      | lop |
+      | marko |
+      | josh |
+      | lop |
+
+  Scenario: g_VX1X_unionXrepeatXoutX_timesX2X__outX_name
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And the traversal of
+      """
+      g.V(v1Id).union(__.repeat(__.out()).times(2), __.out()).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | ripple |
+      | lop |
+      | lop   |
+      | vadas |
+      | josh  |
+
+  Scenario: g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().choose(__.label().is("person"), __.union(__.out().values("lang"), __.out().values("name")), __.in().label())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | java   |
+      | lop    |
+      | vadas  |
+      | josh   |
+      | person |
+      | person |
+      | person |
+      | java   |
+      | java   |
+      | ripple |
+      | lop    |
+      | person |
+      | java   |
+      | lop    |
+
+  Scenario: g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX_groupCount
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().choose(__.label().is("person"), __.union(__.out().values("lang"), __.out().values("name")), __.in().label()).groupCount()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"java":4,"ripple":1,"person":4,"vadas":1,"josh":1,"lop":3}] |
+
+  Scenario: g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().union(__.repeat(__.union(
+                            __.out("created"),
+                            __.in("created"))).times(2),
+                  __.repeat(__.union(
+                            __.in("created"),
+                            __.out("created"))).times(2)).label().groupCount()
+      """
+    When iterated to list
+    Then the result should be unordered
+      | m[{"software":12,"person":20}] |
+
+  Scenario: g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v2Id defined as "v[vadas].id"
+    And the traversal of
+      """
+      g.V(v1Id, v2Id).union(__.outE().count(), __.inE().count(), __.outE().values("weight").sum())
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[3]   |
+      | d[1.9] |
+      | d[1]   |
+
+  Scenario: get_g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter v2Id defined as "v[vadas].id"
+    And the traversal of
+      """
+      g.V(v1Id, v2Id).local(__.union(__.outE().count(), __.inE().count(), __.outE().values("weight").sum()))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | d[3]   |
+      | d[0]   |
+      | d[1.9] |
+      | d[0]   |
+      | d[0]   |
+      | d[1]   |
\ No newline at end of file


[49/50] tinkerpop git commit: Merge branch 'TINKERPOP-1784' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1784' into tp32


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

Branch: refs/heads/master
Commit: 78a1095bc768c5aa623182b5368ff5a404884673
Parents: 0f27197 2819dba
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Nov 22 08:12:45 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Nov 22 08:12:45 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   2 +
 .../Driver/Remote/DriverRemoteConnection.cs     |  16 +-
 .../GraphTraversalTests.cs                      |   8 +-
 .../RemoteConnectionFactory.cs                  |   8 +-
 gremlin-dotnet/test/pom.xml                     |   6 +-
 gremlin-python/pom.xml                          |  21 +-
 .../src/main/jython/radish/feature_steps.py     | 230 +++++++++
 .../src/main/jython/radish/terrain.py           | 114 +++++
 gremlin-python/src/main/jython/setup.py         |   4 +-
 .../remote/gremlin-server-integration.yaml      |   7 +-
 .../server/gremlin-server-integration.yaml      |   7 +-
 .../server/gremlin-server-performance.yaml      |   7 +-
 .../src/test/scripts/generate-all.groovy        |  40 ++
 .../src/test/scripts/test-server-start.groovy   |  24 +-
 .../test/scripts/tinkergraph-empty.properties   |  20 +
 gremlin-test/features/branch/Branch.feature     |  92 ++++
 gremlin-test/features/branch/Choose.feature     | 124 +++++
 gremlin-test/features/branch/Local.feature      | 183 +++++++
 gremlin-test/features/branch/Optional.feature   |  81 ++++
 gremlin-test/features/branch/Repeat.feature     | 230 +++++++++
 gremlin-test/features/branch/Union.feature      | 140 ++++++
 gremlin-test/features/filter/And.feature        |  69 +++
 gremlin-test/features/filter/Coin.feature       |  43 ++
 gremlin-test/features/filter/CyclicPath.feature |  52 ++
 gremlin-test/features/filter/Dedup.feature      | 237 +++++++++
 gremlin-test/features/filter/Drop.feature       |  63 +++
 gremlin-test/features/filter/Filter.feature     | 111 +++++
 gremlin-test/features/filter/Has.feature        |  45 ++
 gremlin-test/features/filter/Is.feature         |  75 +++
 gremlin-test/features/filter/Or.feature         |  62 +++
 gremlin-test/features/filter/Range.feature      | 228 +++++++++
 gremlin-test/features/filter/Sample.feature     |  75 +++
 gremlin-test/features/filter/SimplePath.feature |  72 +++
 gremlin-test/features/filter/Tail.feature       | 166 +++++++
 gremlin-test/features/filter/Where.feature      | 105 ++++
 gremlin-test/features/map/AddEdge.feature       | 307 ++++++++++++
 gremlin-test/features/map/AddVertex.feature     | 147 ++++++
 gremlin-test/features/map/Coalesce.feature      |  78 +++
 gremlin-test/features/map/Constant.feature      |  52 ++
 gremlin-test/features/map/Count.feature         | 125 +++++
 gremlin-test/features/map/FlatMap.feature       |  35 ++
 gremlin-test/features/map/Fold.feature          |  57 +++
 gremlin-test/features/map/Graph.feature         | 109 +++++
 gremlin-test/features/map/Loops.feature         |  68 +++
 gremlin-test/features/map/Map.feature           | 108 +++++
 gremlin-test/features/map/Match.feature         |  80 ++++
 gremlin-test/features/map/Max.feature           |  51 ++
 gremlin-test/features/map/Mean.feature          |  40 ++
 gremlin-test/features/map/Min.feature           |  51 ++
 gremlin-test/features/map/Order.feature         | 132 ++++++
 gremlin-test/features/map/Path.feature          | 105 ++++
 gremlin-test/features/map/Project.feature       |  55 +++
 gremlin-test/features/map/Properties.feature    |  68 +++
 gremlin-test/features/map/Select.feature        | 324 +++++++++++++
 gremlin-test/features/map/Sum.feature           |  40 ++
 gremlin-test/features/map/Unfold.feature        |  76 +++
 gremlin-test/features/map/ValueMap.feature      |  62 +++
 gremlin-test/features/map/Vertex.feature        | 475 +++++++++++++++++++
 .../features/sideEffect/Aggregate.feature       |  80 ++++
 gremlin-test/features/sideEffect/Group.feature  | 244 ++++++++++
 .../features/sideEffect/GroupCount.feature      | 187 ++++++++
 gremlin-test/features/sideEffect/Inject.feature |  51 ++
 gremlin-test/features/sideEffect/Sack.feature   |  71 +++
 .../features/sideEffect/SideEffectCap.feature   |  38 ++
 gremlin-test/features/sideEffect/Store.feature  |  87 ++++
 .../traversal/step/branch/OptionalTest.java     |   4 +-
 .../step/sideEffect/GroupCountTest.java         |   2 +-
 .../gremlin/process/FeatureCoverageTest.java    | 131 +++++
 68 files changed, 6270 insertions(+), 37 deletions(-)
----------------------------------------------------------------------



[10/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for filter()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for filter()


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

Branch: refs/heads/master
Commit: 77d59ddf9c323842872c875445e35952210784ca
Parents: bd3868b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Oct 20 15:13:06 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/Filter.feature     | 106 +++++++++++++++++++
 .../gremlin/process/FeatureCoverageTest.java    |   2 +
 2 files changed, 108 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/77d59ddf/gremlin-test/features/filter/Filter.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Filter.feature b/gremlin-test/features/filter/Filter.feature
new file mode 100644
index 0000000..05e7cea
--- /dev/null
+++ b/gremlin-test/features/filter/Filter.feature
@@ -0,0 +1,106 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - filter()
+
+  Scenario: g_V_filterXfalseX
+    Given the modern graph
+    And using the parameter l1 defined as "c[false]"
+    And the traversal of
+      """
+      g.V().filter(l1)
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_V_filterXtrueX
+    Given the modern graph
+    And using the parameter l1 defined as "c[true]"
+    And the traversal of
+      """
+      g.V().filter(l1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[marko] |
+      | v[vadas] |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+      | v[peter]  |
+
+  Scenario: g_V_filterXlang_eq_javaX
+    Given the modern graph
+    And using the parameter l1 defined as "c[it.get().property('lang').orElse('none').equals('java')]"
+    And the traversal of
+      """
+      g.V().filter(l1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[ripple] |
+      | v[lop]  |
+
+  Scenario: g_VX1X_out_filterXage_gt_30X
+    Given the modern graph
+    And using the parameter v1Id defined as "v[marko].id"
+    And using the parameter l1 defined as "c[it.get().property('age').orElse(0) > 30]"
+    And the traversal of
+      """
+      g.V(v1Id).out().filter(l1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[josh] |
+
+  Scenario: g_V_filterXname_startsWith_m_OR_name_startsWith_pX
+    Given the modern graph
+    And using the parameter l1 defined as "c[{name = it.get().value('name'); name.startsWith('m') || name.startsWith('p')}]"
+    And the traversal of
+      """
+      g.V().filter(l1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[marko] |
+      | v[peter]  |
+
+  Scenario: g_E_filterXfalseX
+    Given the modern graph
+    And using the parameter l1 defined as "c[false]"
+    And the traversal of
+      """
+      g.E().filter(l1)
+      """
+    When iterated to list
+    Then the result should be empty
+
+  Scenario: g_E_filterXtrueX
+    Given the modern graph
+    And using the parameter l1 defined as "c[true]"
+    And the traversal of
+      """
+      g.E().filter(l1)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | e[marko-created->lop] |
+      | e[marko-knows->josh] |
+      | e[marko-knows->vadas] |
+      | e[peter-created->lop] |
+      | e[josh-created->lop] |
+      | e[josh-created->ripple] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/77d59ddf/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
index 282d8a8..dba865b 100644
--- a/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
+++ b/gremlin-test/src/test/java/org/apache/tinkerpop/gremlin/process/FeatureCoverageTest.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.OptionalTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
@@ -75,6 +76,7 @@ public class FeatureCoverageTest {
                 // filter
                 CoinTest.class,
                 DropTest.class,
+                FilterTest.class,
                 IsTest.class,
                 OrTest.class,
                 // map


[27/50] tinkerpop git commit: TINKERPOP-1784 Added feature tests for order()

Posted by sp...@apache.org.
TINKERPOP-1784 Added feature tests for order()


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

Branch: refs/heads/master
Commit: 5045a56c208b5e069dedeb330ab6bef092419880
Parents: 754b7f5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 10 14:15:28 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:53 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/map/Order.feature | 132 +++++++++++++++++++++++++++
 1 file changed, 132 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5045a56c/gremlin-test/features/map/Order.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Order.feature b/gremlin-test/features/map/Order.feature
new file mode 100644
index 0000000..9005465
--- /dev/null
+++ b/gremlin-test/features/map/Order.feature
@@ -0,0 +1,132 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - order()
+
+  Scenario: g_V_name_order
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().values("name").order()
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | josh |
+      | lop  |
+      | marko |
+      | peter |
+      | ripple |
+      | vadas  |
+
+  Scenario: g_V_name_order_byXa1_b1X_byXb2_a2X
+    Given the modern graph
+    And using the parameter l1 defined as "c[a, b -> a.substring(1, 2).compareTo(b.substring(1, 2))]"
+    And using the parameter l2 defined as "c[a, b -> b.substring(2, 3).compareTo(a.substring(2, 3))]"
+    And the traversal of
+      """
+      g.V().values("name").order().by(l1).by(l2)
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | marko  |
+      | vadas  |
+      | peter  |
+      | ripple |
+      | josh   |
+      | lop    |
+
+  Scenario: g_V_order_byXname_incrX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().order().by("name", Order.incr).values("name")
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | josh |
+      | lop  |
+      | marko |
+      | peter |
+      | ripple |
+      | vadas  |
+
+  Scenario: g_V_order_byXnameX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().order().by("name").values("name")
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | josh |
+      | lop  |
+      | marko |
+      | peter |
+      | ripple |
+      | vadas  |
+
+  Scenario: g_V_outE_order_byXweight_decrX_weight
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().outE().order().by("weight", Order.decr).values("weight")
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | d[1.0] |
+      | d[1.0] |
+      | d[0.5] |
+      | d[0.4] |
+      | d[0.4] |
+      | d[0.2] |
+
+  Scenario: g_V_order_byXname_a1_b1X_byXname_b2_a2X_name
+    Given the modern graph
+    And using the parameter l1 defined as "c[a, b -> a.substring(1, 2).compareTo(b.substring(1, 2))]"
+    And using the parameter l2 defined as "c[a, b -> b.substring(2, 3).compareTo(a.substring(2, 3))]"
+    And the traversal of
+      """
+      g.V().order().by("name", l1).by("name", l2).values("name")
+      """
+    When iterated to list
+    Then the result should be ordered
+      | result |
+      | marko  |
+      | vadas  |
+      | peter  |
+      | ripple |
+      | josh   |
+      | lop    |
+
+  Scenario: g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_selectXa_bX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out("created").as("b").order().by(Order.shuffle).select("a", "b")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"a":"v[marko]","b":"v[lop]"}] |
+      | m[{"a":"v[peter]","b":"v[lop]"}] |
+      | m[{"a":"v[josh]","b":"v[ripple]"}] |
+      | m[{"a":"v[josh]","b":"v[lop]"}] |


[39/50] tinkerpop git commit: TINKERPOP-1784 Added support for BigDecimal and fixed broken tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added support for BigDecimal and fixed broken tests


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

Branch: refs/heads/master
Commit: 7231b5a61c851cd3065cb63844e94b9d8d1466ea
Parents: 014d552
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Nov 17 12:35:28 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 gremlin-python/src/main/jython/radish/feature_steps.py | 4 ++--
 gremlin-test/features/branch/Local.feature             | 2 +-
 gremlin-test/features/branch/Repeat.feature            | 2 +-
 gremlin-test/features/map/Mean.feature                 | 2 +-
 gremlin-test/features/map/Min.feature                  | 2 +-
 gremlin-test/features/map/Order.feature                | 2 +-
 gremlin-test/features/map/Properties.feature           | 2 +-
 gremlin-test/features/sideEffect/Group.feature         | 2 +-
 gremlin-test/features/sideEffect/Sack.feature          | 2 +-
 9 files changed, 10 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 9f00535..5cb4b9a 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -136,8 +136,8 @@ def _convert(val, ctx):
         return list(map((lambda x: _convert(x, ctx)), val[2:-1].split(",")))
     elif isinstance(val, str) and re.match("^s\[.*\]$", val):         # parse set
         return set(map((lambda x: _convert(x, ctx)), val[2:-1].split(",")))
-    elif isinstance(val, str) and re.match("^d\[.*\][ilfd]$", val):   # parse numeric
-        return float(val[2:-1]) if val[2:-1].__contains__(".") else long(val[2:-1])
+    elif isinstance(val, str) and re.match("^d\[.*\]\.[ilfdm]$", val):  # parse numeric
+        return float(val[2:-3]) if val[2:-3].__contains__(".") else long(val[2:-3])
     elif isinstance(val, str) and re.match("^v\[.*\]\.id$", val):     # parse vertex id
         return ctx.lookup_v["modern"][val[2:-4]].id
     elif isinstance(val, str) and re.match("^v\[.*\]\.sid$", val):    # parse vertex id as string

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/branch/Local.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Local.feature b/gremlin-test/features/branch/Local.feature
index d6e809e..9efe921 100644
--- a/gremlin-test/features/branch/Local.feature
+++ b/gremlin-test/features/branch/Local.feature
@@ -47,7 +47,7 @@ Feature: Step - local()
       | m[{"a":"marko","b":"d[3].i"}] |
       | m[{"a":"josh","b":"d[5].i"}]  |
       | m[{"a":"josh","b":"d[3].i"}]  |
-      | m[{"a":"peter","b":"d[3].i}] |
+      | m[{"a":"peter","b":"d[3].i"}] |
 
   Scenario: g_V_localXoutE_countX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/branch/Repeat.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Repeat.feature b/gremlin-test/features/branch/Repeat.feature
index 89eb002..009c380 100644
--- a/gremlin-test/features/branch/Repeat.feature
+++ b/gremlin-test/features/branch/Repeat.feature
@@ -212,7 +212,7 @@ Feature: Step - repeat()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":"d[3].l,"vadas":"d[3].l","josh":"d[4].l","lop":"d[10].l","marko":"d[4].l"}] |
+      | m[{"ripple":"d[3].l","vadas":"d[3].l","josh":"d[4].l","lop":"d[10].l","marko":"d[4].l"}] |
 
   Scenario: g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/map/Mean.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Mean.feature b/gremlin-test/features/map/Mean.feature
index b716bde..b109356 100644
--- a/gremlin-test/features/map/Mean.feature
+++ b/gremlin-test/features/map/Mean.feature
@@ -37,4 +37,4 @@ Feature: Step - mean()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":"d[1.0]".d,"lop":"d[0.3333333333333333].d"}] |
\ No newline at end of file
+      | m[{"ripple":"d[1.0].d","lop":"d[0.3333333333333333].d"}] |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/map/Min.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Min.feature b/gremlin-test/features/map/Min.feature
index 3cdb7e3..203a6f1 100644
--- a/gremlin-test/features/map/Min.feature
+++ b/gremlin-test/features/map/Min.feature
@@ -48,4 +48,4 @@ Feature: Step - min()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"ripple":"d[1.0].d","lop":"d[0.2]d"}] |
+      | m[{"ripple":"d[1.0].d","lop":"d[0.2].d"}] |

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/map/Order.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Order.feature b/gremlin-test/features/map/Order.feature
index 879bfd0..976906f 100644
--- a/gremlin-test/features/map/Order.feature
+++ b/gremlin-test/features/map/Order.feature
@@ -97,7 +97,7 @@ Feature: Step - order()
       | d[0.5].d |
       | d[0.4].d |
       | d[0.4].d |
-      | d[0.2].d] |
+      | d[0.2].d |
 
   Scenario: g_V_order_byXname_a1_b1X_byXname_b2_a2X_name
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/map/Properties.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Properties.feature b/gremlin-test/features/map/Properties.feature
index 88f8d70..58a5531 100644
--- a/gremlin-test/features/map/Properties.feature
+++ b/gremlin-test/features/map/Properties.feature
@@ -33,7 +33,7 @@ Feature: Step - properties()
       | josh  |
       | d[32].i |
       | peter |
-      | d[35.i] |
+      | d[35].i |
 
   Scenario: g_V_hasXageX_propertiesXage_nameX_value
     Given the modern graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/sideEffect/Group.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Group.feature b/gremlin-test/features/sideEffect/Group.feature
index 3b9bb11..72cc86b 100644
--- a/gremlin-test/features/sideEffect/Group.feature
+++ b/gremlin-test/features/sideEffect/Group.feature
@@ -101,7 +101,7 @@ Feature: Step - group()
     When iterated to list
     Then the result should be unordered
       | result |
-      | m[{"software":"d[0].i", "person":"d[3.5].d}] |
+      | m[{"software":"d[0].i", "person":"d[3.5].d"}] |
 
   Scenario: g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX
     Given the grateful graph

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7231b5a6/gremlin-test/features/sideEffect/Sack.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/sideEffect/Sack.feature b/gremlin-test/features/sideEffect/Sack.feature
index 487f31b..d83d7e1 100644
--- a/gremlin-test/features/sideEffect/Sack.feature
+++ b/gremlin-test/features/sideEffect/Sack.feature
@@ -42,7 +42,7 @@ Feature: Step - sack()
     When iterated to list
     Then the result should be unordered
       | result |
-      | d[3.5].d |
+      | d[3.5].m |
 
   Scenario: g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack
     Given the modern graph


[14/50] tinkerpop git commit: TINKERPOP-1784 Added and() feature tests

Posted by sp...@apache.org.
TINKERPOP-1784 Added and() feature tests


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

Branch: refs/heads/master
Commit: d977d6a59660039ff7e6b7251449512744550d53
Parents: 401a44f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Oct 24 10:14:09 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:52:52 2017 -0500

----------------------------------------------------------------------
 gremlin-test/features/filter/And.feature | 65 +++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d977d6a5/gremlin-test/features/filter/And.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/And.feature b/gremlin-test/features/filter/And.feature
new file mode 100644
index 0000000..c47ec6e
--- /dev/null
+++ b/gremlin-test/features/filter/And.feature
@@ -0,0 +1,65 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Feature: Step - and()
+
+  Scenario: g_V_andXhasXage_gt_27X__outE_count_gte_2X_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().and(__.has("age", P.gt(27)), __.outE().count().is(P.gte(2))).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | marko |
+      | josh |
+
+  Scenario: g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().and(__.outE(), __.has(T.label, "person").and().has("age", P.gte(32))).values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | josh |
+      | peter  |
+
+  Scenario: g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").out("knows").and().out("created").in("created").as("a").values("name")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[marko] |
+
+  Scenario: g_V_asXaX_andXselectXaX_selectXaXX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().as("a").and(__.select("a"), __.select("a"))
+      """
+    When iterated to list
+    Then the result should be unordered
+      | v[marko] |
+      | v[vadas] |
+      | v[lop] |
+      | v[josh] |
+      | v[ripple] |
+      | v[peter]  |
\ No newline at end of file


[37/50] tinkerpop git commit: TINKERPOP-1784 Added aliasing to .NET driver

Posted by sp...@apache.org.
TINKERPOP-1784 Added aliasing to .NET driver

Tests were failing as a result of the change to using the mix server configuration that had all the graphs. On the way to dealing with that, I noticed the driver didn't seem to have aliasing capability which prevented it from choosing the correct graph traversal source on the server. For some reason, asserting longs on ids seemed to be a problem as well after this change and I'm pretty sure it has something to do with the configuration of the TinkerGraph in this new mixed mode configuration and not something in serialization.


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

Branch: refs/heads/master
Commit: 314ab67b6bff2c33e7d1e0fb93cffd62d638707a
Parents: 3325899
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat Nov 11 06:17:19 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Nov 21 15:53:14 2017 -0500

----------------------------------------------------------------------
 .../Driver/Remote/DriverRemoteConnection.cs         | 16 ++++++++++++++--
 .../DriverRemoteConnection/GraphTraversalTests.cs   |  8 ++++----
 .../RemoteConnectionFactory.cs                      |  8 +++++++-
 gremlin-dotnet/test/pom.xml                         |  6 +++++-
 4 files changed, 30 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/314ab67b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
index 0a8b93f..80bd100 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
@@ -36,15 +36,27 @@ namespace Gremlin.Net.Driver.Remote
     public class DriverRemoteConnection : IRemoteConnection, IDisposable
     {
         private readonly IGremlinClient _client;
+        private readonly string _traversalSource;
 
         /// <summary>
         ///     Initializes a new <see cref="IRemoteConnection" />.
         /// </summary>
         /// <param name="client">The <see cref="IGremlinClient" /> that will be used for the connection.</param>
         /// <exception cref="ArgumentNullException">Thrown when client is null.</exception>
-        public DriverRemoteConnection(IGremlinClient client)
+        public DriverRemoteConnection(IGremlinClient client):this(client, "g")
+        {
+        }
+
+        /// <summary>
+        ///     Initializes a new <see cref="IRemoteConnection" />.
+        /// </summary>
+        /// <param name="client">The <see cref="IGremlinClient" /> that will be used for the connection.</param>
+        /// <param name="traversalSource">The name of the traversal source on the server to bind to.</param>
+        /// <exception cref="ArgumentNullException">Thrown when client is null.</exception>
+        public DriverRemoteConnection(IGremlinClient client, string traversalSource)
         {
             _client = client ?? throw new ArgumentNullException(nameof(client));
+            _traversalSource = traversalSource;
         }
 
         /// <summary>
@@ -66,7 +78,7 @@ namespace Gremlin.Net.Driver.Remote
                     .Processor(Tokens.ProcessorTraversal)
                     .OverrideRequestId(requestid)
                     .AddArgument(Tokens.ArgsGremlin, bytecode)
-                    .AddArgument(Tokens.ArgsAliases, new Dictionary<string, string> {{"g", "g"}})
+                    .AddArgument(Tokens.ArgsAliases, new Dictionary<string, string> {{"g", _traversalSource}})
                     .Create();
             return await _client.SubmitAsync<Traverser>(requestMsg).ConfigureAwait(false);
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/314ab67b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index 84a44a7..d9c47f1 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -55,8 +55,8 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var vertex = g.V(1).Next();
 
-            Assert.Equal(new Vertex((long) 1), vertex);
-            Assert.Equal((long) 1, vertex.Id);
+            Assert.Equal(new Vertex(1), vertex);
+            Assert.Equal(1, vertex.Id);
         }
 
         [Fact]
@@ -68,7 +68,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var traverser = g.V(1).NextTraverser();
 
-            Assert.Equal(new Traverser(new Vertex((long)1)), traverser);
+            Assert.Equal(new Traverser(new Vertex(1)), traverser);
         }
 
         [Fact]
@@ -138,7 +138,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
                 g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit(1).Path().Next();
 
             Assert.Equal(4, shortestPath.Count);
-            Assert.Equal(new Vertex((long) 6), shortestPath[3]);
+            Assert.Equal(new Vertex(6), shortestPath[3]);
         }
 
         [Fact]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/314ab67b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs
index ab67c26..47d4f06 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs
@@ -34,8 +34,14 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
         public IRemoteConnection CreateRemoteConnection()
         {
+            // gmodern is the standard test traversalsource that the main body of test uses
+            return CreateRemoteConnection("gmodern");
+        }
+
+        public IRemoteConnection CreateRemoteConnection(string traversalSource)
+        {
             return new Net.Driver.Remote.DriverRemoteConnection(
-                new GremlinClient(new GremlinServer(TestHost, TestPort)));
+                new GremlinClient(new GremlinServer(TestHost, TestPort)), traversalSource);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/314ab67b/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index db585f4..ad931aa 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -134,12 +134,16 @@ limitations under the License.
                                             <value>${skipTests}</value>
                                         </property>
                                         <property>
+                                            <name>python</name>
+                                            <value>false</value>
+                                        </property>
+                                        <property>
                                             <name>gremlinServerDir</name>
                                             <value>${gremlin.server.dir}</value>
                                         </property>
                                         <property>
                                             <name>settingsFile</name>
-                                            <value>${gremlin.server.dir}/conf/gremlin-server-modern.yaml</value>
+                                            <value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml</value>
                                         </property>
                                         <property>
                                             <name>executionName</name>