TINKERPOP-1784 Changed assertion logic and table formats in feature files
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/70e6b5e2 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/70e6b5e2 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/70e6b5e2 Branch: refs/heads/TINKERPOP-1784 Commit: 70e6b5e202783194701068157b930d3e59be5db1 Parents: 09cbac6 Author: Stephen Mallette <sp...@genoprime.com> Authored: Thu Sep 28 14:54:40 2017 -0400 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Thu Nov 2 13:37:22 2017 -0400 ---------------------------------------------------------------------- .../src/main/jython/radish/feature_steps.py | 61 +++++------------ gremlin-test/features/filter/Coin.feature | 12 ++-- gremlin-test/features/filter/Has.feature | 10 +-- gremlin-test/features/map/Count.feature | 10 +-- gremlin-test/features/map/Select.feature | 4 +- gremlin-test/features/map/Vertex.feature | 70 ++++++++++---------- .../features/sideEffect/GroupCount.feature | 41 ++++++------ 7 files changed, 89 insertions(+), 119 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/70e6b5e2/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 2154536..7a4a30a 100644 --- a/gremlin-python/src/main/jython/radish/feature_steps.py +++ b/gremlin-python/src/main/jython/radish/feature_steps.py @@ -81,22 +81,24 @@ def __convert(val, ctx): for key, value in val.items(): n[__convert(key, ctx)] = __convert(value, ctx) return n - elif isinstance(val, (str, unicode)) and re.match("^l\[.*\]$", val): # parse list + elif isinstance(val, unicode): + return __convert(val.encode('utf-8'), ctx) + elif isinstance(val, str) and re.match("^l\[.*\]$", val): # parse list return list(map((lambda x: __convert(x, ctx)), val[2:-1].split(","))) - elif isinstance(val, (str, unicode)) and re.match("^d\[.*\]$", val): # parse numeric + elif isinstance(val, str) and re.match("^d\[.*\]$", val): # parse numeric return long(val[2:-1]) - elif isinstance(val, (str, unicode)) and re.match("^v\[.*\]\.id$", val): # parse vertex id + 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, unicode)) and re.match("^v\[.*\]$", val): # parse vertex + elif isinstance(val, str) and re.match("^v\[.*\]$", val): # parse vertex return ctx.lookup_v["modern"][val[2:-1]] - elif isinstance(val, (str, unicode)) and re.match("^e\[.*\]\.id$", val): # parse edge id + elif isinstance(val, str) and re.match("^e\[.*\]\.id$", val): # parse edge id return ctx.lookup_e["modern"][val[2:-4]].id - elif isinstance(val, (str, unicode)) and re.match("^e\[.*\]$", val): # parse edge + elif isinstance(val, str) and re.match("^e\[.*\]$", val): # parse edge return ctx.lookup_e["modern"][val[2:-1]] - elif isinstance(val, unicode): - return val.encode('utf-8') + elif isinstance(val, str) and re.match("^m\[.*\]$", val): # parse json as a map + return __convert(json.loads(val[2:-1]), ctx) else: - return str(val) + return val def __ordered_assertion(step): @@ -109,19 +111,7 @@ def __ordered_assertion(step): # the data to assert. the contents of the second column will be dependent on the type specified # in the first column for ix, line in enumerate(data): - if line[0] == "numeric": - assert_that(long(step.context.result[ix]), equal_to(long(line[1]))) - elif line[0] == "string": - assert_that(str(step.context.result[ix]), equal_to(str(line[1]))) - elif line[0] == "vertex": - assert_that(step.context.result[ix].label, equal_to(line[1])) - elif line[0] == "edge": - assert_that(step.context.result[ix].label, equal_to(line[1])) - elif line[0] == "map": - assert_that(__convert(step.context.result[ix], step.context), json.loads(line[1])) - else: - raise ValueError("unknown type of " + line[0]) - + assert_that(step.context.result[ix], equal_to(__convert(line[0], step.context))) def __unordered_assertion(step): data = step.table @@ -134,30 +124,9 @@ def __unordered_assertion(step): # 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 line in data: - if line[0] == "numeric": - val = long(line[1]) - assert_that(val, is_in(list(map(long, results_to_test)))) - results_to_test.remove(val) - elif line[0] == "string": - val = str(line[1]) - assert_that(val, is_in(list(map(str, results_to_test)))) - results_to_test.remove(val) - elif line[0] == "vertex": - val = str(line[1]) - v = step.context.lookup_v["modern"][val] - assert_that(v, is_in(results_to_test)) - results_to_test.remove(v) - elif line[0] == "edge": - val = str(line[1]) - e = step.context.lookup_e["modern"][val] - assert_that(e, is_in(results_to_test)) - results_to_test.remove(e) - elif line[0] == "map": - val = __convert(json.loads(line[1]), step.context) - assert_that(val, is_in(results_to_test)) - results_to_test.remove(val) - else: - raise ValueError("unknown type of " + line[0]) + val = __convert(line[0], step.context) + assert_that(val, is_in(results_to_test)) + results_to_test.remove(val) assert_that(len(results_to_test), is_(0)) http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/70e6b5e2/gremlin-test/features/filter/Coin.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/filter/Coin.feature b/gremlin-test/features/filter/Coin.feature index 802ebdc..d1acc46 100644 --- a/gremlin-test/features/filter/Coin.feature +++ b/gremlin-test/features/filter/Coin.feature @@ -25,12 +25,12 @@ Feature: Step - coin() """ When iterated to list Then the result should be unordered - | vertex | marko | - | vertex | vadas | - | vertex | lop | - | vertex | josh | - | vertex | ripple | - | vertex | peter | + | v[marko] | + | v[vadas] | + | v[lop] | + | v[josh] | + | v[ripple] | + | v[peter] | Scenario: g_V_coinX0X http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/70e6b5e2/gremlin-test/features/filter/Has.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/filter/Has.feature b/gremlin-test/features/filter/Has.feature index 4a2e085..8ff3a2b 100644 --- a/gremlin-test/features/filter/Has.feature +++ b/gremlin-test/features/filter/Has.feature @@ -25,8 +25,8 @@ Feature: Step - has() """ When iterated to list Then the result should be unordered - | vertex | josh | - | vertex | peter | + | v[josh] | + | v[peter] | Scenario: Use hasId() with P Given the modern graph @@ -37,7 +37,7 @@ Feature: Step - has() """ When iterated to list Then the result should be unordered - | vertex | josh | - | vertex | josh | - | vertex | peter | + | v[josh] | + | v[josh] | + | v[peter] | http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/70e6b5e2/gremlin-test/features/map/Count.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/Count.feature b/gremlin-test/features/map/Count.feature index 1233ed3..b7f5c66 100644 --- a/gremlin-test/features/map/Count.feature +++ b/gremlin-test/features/map/Count.feature @@ -25,7 +25,7 @@ Feature: Step - count() """ When iterated to list Then the result should be ordered - | numeric | 6 | + | d[6] | Scenario: g_V_out_count Given the modern graph @@ -35,7 +35,7 @@ Feature: Step - count() """ When iterated to list Then the result should be ordered - | numeric | 6 | + | d[6] | Scenario: g_V_both_both_count Given the modern graph @@ -45,7 +45,7 @@ Feature: Step - count() """ When iterated to list Then the result should be ordered - | numeric | 30 | + | d[30] | Scenario: g_V_fold_countXlocalX Given the modern graph @@ -55,7 +55,7 @@ Feature: Step - count() """ When iterated to list Then the result should be ordered - | numeric | 6 | + | d[6] | Scenario: g_V_hasXnoX_count Given the modern graph @@ -65,4 +65,4 @@ Feature: Step - count() """ When iterated to list Then the result should be ordered - | numeric | 0 | \ No newline at end of file + | d[0] | \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/70e6b5e2/gremlin-test/features/map/Select.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature index b2d208c..9166954 100644 --- a/gremlin-test/features/map/Select.feature +++ b/gremlin-test/features/map/Select.feature @@ -26,5 +26,5 @@ Feature: Step - select() """ When iterated to list Then the result should be unordered - | map | {"a": "v[marko]", "b": "v[vadas]"} | - | map | {"a": "v[marko]", "b": "v[josh]"} | \ No newline at end of file + | m[{"a": "v[marko]", "b": "v[vadas]"}] | + | m[{"a": "v[marko]", "b": "v[josh]"}] | \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/70e6b5e2/gremlin-test/features/map/Vertex.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/Vertex.feature b/gremlin-test/features/map/Vertex.feature index 5bed2a6..9aa506c 100644 --- a/gremlin-test/features/map/Vertex.feature +++ b/gremlin-test/features/map/Vertex.feature @@ -26,9 +26,9 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | string | marko | - | string | vadas | - | string | lop | + | marko | + | vadas | + | lop | Scenario: g_VXlistXv1_v2_v3XX_name Given the modern graph @@ -39,9 +39,9 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | string | marko | - | string | vadas | - | string | lop | + | marko | + | vadas | + | lop | Scenario: g_V Given the modern graph @@ -51,12 +51,12 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | vertex | marko | - | vertex | vadas | - | vertex | lop | - | vertex | josh | - | vertex | ripple | - | vertex | peter | + | v[marko] | + | v[vadas] | + | v[lop] | + | v[josh] | + | v[ripple] | + | v[peter] | Scenario: g_VX1X_out Given the modern graph @@ -67,9 +67,9 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | vertex | vadas | - | vertex | lop | - | vertex | josh | + | v[vadas] | + | v[lop] | + | v[josh] | Scenario: g_VX2X_in Given the modern graph @@ -80,7 +80,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | vertex | marko | + | v[marko] | Scenario: g_VX4X_both Given the modern graph @@ -91,9 +91,9 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | vertex | marko | - | vertex | lop | - | vertex | ripple | + | v[marko] | + | v[lop] | + | v[ripple] | Scenario: g_E Given the modern graph @@ -103,12 +103,12 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | edge | marko-created->lop | - | edge | marko-knows->josh | - | edge | marko-knows->vadas | - | edge | peter-created->lop | - | edge | josh-created->lop | - | edge | josh-created->ripple | + | e[marko-created->lop] | + | e[marko-knows->josh] | + | e[marko-knows->vadas] | + | e[peter-created->lop] | + | e[josh-created->lop] | + | e[josh-created->ripple] | Scenario: g_EX11X Given the modern graph @@ -119,7 +119,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | edge | josh-created->lop | + | e[josh-created->lop] | Scenario: g_VX1X_outE Given the modern graph @@ -130,9 +130,9 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | edge | marko-created->lop | - | edge | marko-knows->josh | - | edge | marko-knows->vadas | + | e[marko-created->lop] | + | e[marko-knows->josh] | + | e[marko-knows->vadas] | Scenario: g_VX2X_outE Given the modern graph @@ -143,7 +143,7 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | edge | marko-knows->vadas | + | e[marko-knows->vadas] | Scenario: g_VX4X_bothEXcreatedX Given the modern graph @@ -154,8 +154,8 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | edge | josh-created->lop | - | edge | josh-created->ripple | + | e[josh-created->lop] | + | e[josh-created->ripple] | Scenario: g_VX4X_bothE Given the modern graph @@ -166,6 +166,6 @@ Feature: Step - V(), E(), out(), in(), both(), inE(), outE(), bothE() """ When iterated to list Then the result should be unordered - | edge | josh-created->lop | - | edge | josh-created->ripple | - | edge | marko-knows->josh | + | e[josh-created->lop] | + | e[josh-created->ripple] | + | e[marko-knows->josh] | http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/70e6b5e2/gremlin-test/features/sideEffect/GroupCount.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/sideEffect/GroupCount.feature b/gremlin-test/features/sideEffect/GroupCount.feature index 7b4a0a6..bfb7363 100644 --- a/gremlin-test/features/sideEffect/GroupCount.feature +++ b/gremlin-test/features/sideEffect/GroupCount.feature @@ -25,24 +25,25 @@ Feature: Step - groupCount() """ When iterated to list Then the result should be ordered - | map | {"ripple": 1, "lop": 3} | + | m[{"ripple": 1, "lop": 3}] | - Scenario: Edge count distribution - Given the modern graph - And the traversal of - """ - g.V().groupCount().by(bothE().count()) - """ - When iterated to list - Then the result should be ordered - | map | {"d[1]": 3, "d[3]": 3} | - - Scenario: Group count vertices, cap to retrieve the map and unfold it to group count again - Given the modern graph - And the traversal of - """ - g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a") - """ - When iterated to list - Then the result should be ordered - | map | {"v[marko]": 6, "v[vadas]": 2, "v[lop]": 6, "v[josh]": 6, "v[ripple]": 2, "v[peter]": 2} | \ No newline at end of file +# NOT SUPPORTED UNTIL GRAPHSON 3.X WHICH HAS SUPPORT FOR NON-STRING KEYS +# Scenario: Edge count distribution +# Given the modern graph +# And the traversal of +# """ +# g.V().groupCount().by(bothE().count()) +# """ +# When iterated to list +# Then the result should be ordered +# | m[{"d[1]": 3, "d[3]": 3}] | +# +# Scenario: Group count vertices, cap to retrieve the map and unfold it to group count again +# Given the modern graph +# And the traversal of +# """ +# g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a") +# """ +# When iterated to list +# Then the result should be ordered +# | m[{"v[marko]": 6, "v[vadas]": 2, "v[lop]": 6, "v[josh]": 6, "v[ripple]": 2, "v[peter]": 2}] | \ No newline at end of file