Fixed up pageRank() tests to be more GLV compliant CTR
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/69d46f73 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/69d46f73 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/69d46f73 Branch: refs/heads/TINKERPOP-1342 Commit: 69d46f7335fac24e2210987eefa16036ceea8d46 Parents: bdda913 Author: Stephen Mallette <[email protected]> Authored: Tue Aug 14 12:51:07 2018 -0400 Committer: Stephen Mallette <[email protected]> Committed: Tue Aug 14 12:51:07 2018 -0400 ---------------------------------------------------------------------- .../test/cucumber/feature-steps.js | 6 +- gremlin-test/features/map/PageRank.feature | 47 +++++++++++----- .../traversal/step/map/PageRankTest.java | 59 ++++++++++---------- 3 files changed, 63 insertions(+), 49 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/69d46f73/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js index 0cddc02..8a14112 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js @@ -67,9 +67,9 @@ const ignoredScenarios = { 'g_V_outXcreatedX_pageRank_byXbothEX_byXprojectRankX_timesX0X_valueMapXname_projectRankX': new IgnoreError(ignoreReason.computerNotSupported), 'g_V_pageRank_order_byXpageRank_decrX_byXnameX_name': new IgnoreError(ignoreReason.computerNotSupported), 'g_V_pageRank_order_byXpageRank_decrX_name_limitX2X': new IgnoreError(ignoreReason.computerNotSupported), - 'g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX': new IgnoreError(ignoreReason.computerNotSupported), - 'g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX': new IgnoreError(ignoreReason.computerNotSupported), - 'g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX': new IgnoreError(ignoreReason.computerNotSupported), + 'g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX': new IgnoreError(ignoreReason.computerNotSupported), + 'g_V_hasLabelXpersonX_pageRank_byXpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX': new IgnoreError(ignoreReason.computerNotSupported), + 'g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX': new IgnoreError(ignoreReason.computerNotSupported), 'g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX': new IgnoreError(ignoreReason.computerNotSupported), 'g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX': new IgnoreError(ignoreReason.computerNotSupported), 'g_V_peerPressure_hasXclusterX': new IgnoreError(ignoreReason.computerNotSupported), http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/69d46f73/gremlin-test/features/map/PageRank.feature ---------------------------------------------------------------------- diff --git a/gremlin-test/features/map/PageRank.feature b/gremlin-test/features/map/PageRank.feature index 24a19ec..bd3fc6b 100644 --- a/gremlin-test/features/map/PageRank.feature +++ b/gremlin-test/features/map/PageRank.feature @@ -76,30 +76,47 @@ Feature: Step - pageRank() | lop | | ripple | - Scenario: g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX + Scenario: g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX Given the modern graph - Given an unsupported test - Then nothing should happen because + And the traversal of """ - The result is not completely deterministic with respect to the decimals that pageRank() produces and the - GLV framework does not have a notion for asserting anything beyond an equals() sort of state. + g.withComputer().V().pageRank().by(__.outE("knows")).by("friendRank").project("name", "friendRank").by("name").by(__.values("friendRank").math("ceil(_ * 100)")) """ + When iterated to list + Then the result should be unordered + | result | + | m[{"name": "marko", "friendRank": 15.0}] | + | m[{"name": "vadas", "friendRank": 21.0}] | + | m[{"name": "lop", "friendRank": 15.0}] | + | m[{"name": "josh", "friendRank": 21.0}] | + | m[{"name": "ripple", "friendRank": 15.0}] | + | m[{"name": "peter", "friendRank": 15.0}] | - Scenario: g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX - Given an unsupported test - Then nothing should happen because + Scenario: g_V_hasLabelXpersonX_pageRank_byXpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX + Given the modern graph + And the traversal of """ - The result is not completely deterministic with respect to the decimals that pageRank() produces and the - GLV framework does not have a notion for asserting anything beyond an equals() sort of state. + g.withComputer().V().hasLabel("person").pageRank().by("pageRank").project("name", "pageRank").by("name").by(__.values("pageRank").math("ceil(_ * 100)")) """ + When iterated to list + Then the result should be unordered + | result | + | m[{"name": "marko", "pageRank": 46.0}] | + | m[{"name": "vadas", "pageRank": 59.0}] | + | m[{"name": "josh", "pageRank": 59.0}] | + | m[{"name": "peter", "pageRank": 46.0}] | - Scenario: g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX - Given an unsupported test - Then nothing should happen because + Scenario: g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX + Given the modern graph + And the traversal of """ - The result is not completely deterministic with respect to the decimals that pageRank() produces and the - GLV framework does not have a notion for asserting anything beyond an equals() sort of state. + g.withComputer().V().pageRank().by("pageRank").as("a").out("knows").values("pageRank").as("b").select("a", "b").by().by(__.math("ceil(_ * 100)")) """ + When iterated to list + Then the result should be unordered + | result | + | m[{"a": "v[marko]", "b": 15.0}] | + | m[{"a": "v[marko]", "b": 15.0}] | Scenario: g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX Given the modern graph http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/69d46f73/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java index 620d0e3..3eb06c4 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java @@ -56,11 +56,11 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, String> get_g_V_pageRank_order_byXpageRank_descX_name_limitX2X(); - public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX(); + public abstract Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX(); - public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX(); + public abstract Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX(); - public abstract Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX(); + public abstract Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX(); public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX(); @@ -109,21 +109,19 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) - public void g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX() { - final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX(); + public void g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX() { + final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX(); printTraversalForm(traversal); int counter = 0; while (traversal.hasNext()) { - final Map<String, List<Object>> map = traversal.next(); + final Map<String, Object> map = traversal.next(); assertEquals(2, map.size()); - assertEquals(1, map.get("name").size()); - assertEquals(1, map.get("friendRank").size()); - String name = (String) map.get("name").get(0); - Double friendRank = (Double) map.get("friendRank").get(0); + final String name = (String) map.get("name"); + final Double friendRank = (Double) map.get("friendRank"); if (name.equals("lop") || name.equals("ripple") || name.equals("peter") || name.equals("marko")) - assertEquals(0.15, friendRank, 0.01); + assertEquals(15.0, friendRank, 0.01); else - assertEquals(0.21375, friendRank, 0.01); + assertEquals(21.0, friendRank, 0.01); counter++; } @@ -143,21 +141,20 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) - public void g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX() { - final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX(); + public void g_V_hasLabelXpersonX_pageRank_byXpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX() { + final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX(); printTraversalForm(traversal); int counter = 0; - double lastPageRank = Double.MIN_VALUE; while (traversal.hasNext()) { - final Map<String, List<Object>> map = traversal.next(); + final Map<String, Object> map = traversal.next(); assertEquals(2, map.size()); - assertEquals(1, map.get("name").size()); - assertEquals(1, map.get("pageRank").size()); - String name = (String) map.get("name").get(0); - double pageRank = (Double) map.get("pageRank").get(0); - assertTrue(pageRank >= lastPageRank); - lastPageRank = pageRank; - assertFalse(name.equals("lop") || name.equals("ripple")); + final String name = (String) map.get("name"); + final Double pageRank = (Double) map.get("pageRank"); + if (name.equals("marko") || name.equals("peter")) + assertEquals(46.0, pageRank, 0.01); + else + assertEquals(59.0, pageRank, 0.01); + counter++; } assertEquals(4, counter); @@ -165,8 +162,8 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) - public void g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX() { - final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX(); + public void g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX() { + final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX(); printTraversalForm(traversal); int counter = 0; while (traversal.hasNext()) { @@ -246,8 +243,8 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest { } @Override - public Traversal<Vertex, Map<String, List<Object>>> get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_valueMapXname_friendRankX() { - return g.V().pageRank().by(__.outE("knows")).by("friendRank").valueMap("name", "friendRank"); + public Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXoutEXknowsXX_byXfriendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX() { + return g.V().pageRank().by(__.outE("knows")).by("friendRank").project("name", "friendRank").by("name").by(__.values("friendRank").math("ceil(_ * 100)")); } @Override @@ -261,13 +258,13 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest { } @Override - public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_order_byXpageRankX_valueMapXname_pageRankX() { - return g.V().hasLabel("person").pageRank().by("pageRank").order().by("pageRank").valueMap("name", "pageRank"); + public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_pageRank_byXpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX() { + return g.V().hasLabel("person").pageRank().by("pageRank").project("name", "pageRank").by("name").by(__.values("pageRank").math("ceil(_ * 100)")); } @Override - public Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX() { - return g.V().pageRank().by("pageRank").as("a").out("knows").values("pageRank").as("b").select("a", "b"); + public Traversal<Vertex, Map<String, Object>> get_g_V_pageRank_byXpageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX() { + return g.V().pageRank().by("pageRank").as("a").out("knows").values("pageRank").as("b").select("a", "b").by().by(__.math("ceil(_ * 100)")); } @Override
