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/11 00:56:10 UTC
[06/50] tinkerpop git commit: TINKERPOP-1784 Added Choose tests to
.feature files
TINKERPOP-1784 Added Choose tests to .feature files
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/6d2d8355
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6d2d8355
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6d2d8355
Branch: refs/heads/TINKERPOP-1784
Commit: 6d2d835542a022baca0e6042a48e06811e73dfc2
Parents: 4a6772c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Oct 11 10:52:15 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Nov 10 19:55:19 2017 -0500
----------------------------------------------------------------------
.../src/main/jython/radish/feature_steps.py | 6 +-
gremlin-test/features/branch/Choose.feature | 118 +++++++++++++++++++
.../gremlin/process/FeatureCoverageTest.java | 2 +
3 files changed, 124 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6d2d8355/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 68eeeaf..a34bb8d 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -25,6 +25,7 @@ from gremlin_python.process.traversal import P, Scope, Column, Order, Direction,
from radish import given, when, then
from hamcrest import *
+regex_and = re.compile(r"([(.,\s])and\(")
regex_as = re.compile(r"([(.,\s])as\(")
regex_in = re.compile(r"([(.,\s])in\(")
regex_is = re.compile(r"([(.,\s])is\(")
@@ -66,7 +67,7 @@ def translate_traversal(step):
if hasattr(step.context, "traversal_params"):
b.update(step.context.traversal_params)
- print __translate(step.text)
+ print __translate(step.text + " - " + str(b))
step.context.traversal = eval(__translate(step.text), b)
@@ -118,7 +119,7 @@ def __convert(val, ctx):
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)
- elif isinstance(val, str) and re.match("^c\[.*\]$", val): # parse lambda
+ elif isinstance(val, str) and re.match("^c\[.*\]$", val): # parse lambda/closure
return lambda: (val[2:-1], "gremlin-groovy")
else:
return val
@@ -145,6 +146,7 @@ def __table_assertion(data, result, ctx, ordered):
def __translate(traversal):
replaced = traversal.replace("\n", "")
+ replaced = regex_and.sub(r"\1and_(", replaced)
replaced = regex_as.sub(r"\1as_(", replaced)
replaced = regex_is.sub(r"\1is_(", replaced)
return regex_in.sub(r"\1in_(", replaced)
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6d2d8355/gremlin-test/features/branch/Choose.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/branch/Choose.feature b/gremlin-test/features/branch/Choose.feature
new file mode 100644
index 0000000..de70485
--- /dev/null
+++ b/gremlin-test/features/branch/Choose.feature
@@ -0,0 +1,118 @@
+# 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 - choose()
+
+ Scenario: g_V_chooseXout_countX_optionX2L__nameX_optionX3L__valueMapX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().choose(__.out().count()).
+ option(2L, __.values("name")).
+ option(3L, __.valueMap())
+ """
+ When iterated to list
+ Then the result should be unordered
+ | m[{"name":["marko"], "age":[29]}] |
+ | josh |
+
+ Scenario: g_V_chooseXlabel_eqXpersonX__outXknowsX__inXcreatedXX_name
+ Given the modern graph
+ And using the parameter l1 is "c[it.label() == 'person']"
+ And the traversal of
+ """
+ g.V().choose(l1, __.out("knows"), __.in("created")).values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | josh |
+ | vadas |
+ | josh |
+ | josh |
+ | marko |
+ | peter |
+
+ Scenario: g_V_chooseXhasLabelXpersonX_and_outXcreatedX__outXknowsX__identityX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().choose(__.hasLabel("person").and().out("created"),
+ __.out("knows"),
+ __.identity()).
+ values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | lop |
+ | ripple |
+ | josh |
+ | vadas |
+ | vadas |
+
+ Scenario: g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().choose(__.label()).
+ option("blah", __.out("knows")).
+ option("bleep", __.out("created")).
+ option(Pick.none, __.identity()).
+ values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | marko |
+ | vadas |
+ | peter |
+ | josh |
+ | lop |
+ | ripple |
+
+ Scenario: g_V_chooseXoutXknowsX_count_isXgtX0XX__outXknowsXX_name
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().choose(__.out("knows").count().is(P.gt(0)),
+ __.out("knows")).
+ values("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | vadas |
+ | josh |
+ | vadas |
+ | josh |
+ | peter |
+ | lop |
+ | ripple |
+
+ Scenario: g_V_hasLabelXpersonX_asXp1X_chooseXoutEXknowsX__outXknowsXX_asXp2X_selectXp1_p2X_byXnameX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().hasLabel("person").as("p1").
+ choose(__.outE("knows"), __.out("knows")).as("p2").
+ select("p1", "p2").
+ by("name")
+ """
+ When iterated to list
+ Then the result should be unordered
+ | m[{"p1":"marko", "p2":"vadas"}] |
+ | m[{"p1":"marko", "p2":"josh"}] |
+ | m[{"p1":"vadas", "p2":"vadas"}] |
+ | m[{"p1":"josh", "p2":"josh"}] |
+ | m[{"p1":"peter", "p2":"peter"}] |
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6d2d8355/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 be01613..4ee540e 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
@@ -19,6 +19,7 @@
package org.apache.tinkerpop.gremlin.process;
import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexTest;
@@ -58,6 +59,7 @@ public class FeatureCoverageTest {
// TEMPORARY while test framework is under development - all tests should ultimately be included
final List<Class<?>> temp = Arrays.asList(
BranchTest.class,
+ ChooseTest.class,
CoinTest.class,
CountTest.class,
GroupCountTest.class,