Repository: tinkerpop Updated Branches: refs/heads/tp31 0aab69ca3 -> 9c8c655dd
added a new PropertiesTest that really ensures vertex property ids are handled correctly by the underlying engine. CTR. Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9c8c655d Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9c8c655d Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9c8c655d Branch: refs/heads/tp31 Commit: 9c8c655dd7bd324d6f1341321717491e60c2e894 Parents: 0aab69c Author: Marko A. Rodriguez <[email protected]> Authored: Tue Jun 14 14:17:02 2016 -0600 Committer: Marko A. Rodriguez <[email protected]> Committed: Tue Jun 14 14:17:02 2016 -0600 ---------------------------------------------------------------------- .../step/map/GroovyPropertiesTest.groovy | 8 ++- .../traversal/step/map/PropertiesTest.java | 53 ++++++++++++++++++-- 2 files changed, 55 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9c8c655d/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy ---------------------------------------------------------------------- diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy index 8ed7859..ec57cd3 100644 --- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy +++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyPropertiesTest.groovy @@ -18,9 +18,10 @@ */ package org.apache.tinkerpop.gremlin.process.traversal.step.map -import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper import org.apache.tinkerpop.gremlin.process.traversal.Traversal +import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper import org.apache.tinkerpop.gremlin.structure.Vertex +import org.apache.tinkerpop.gremlin.structure.VertexProperty /** * @author Marko A. Rodriguez (http://markorodriguez.com) @@ -43,6 +44,11 @@ public abstract class GroovyPropertiesTest { public Traversal<Vertex, Object> get_g_V_hasXageX_properties_hasXid_nameIdX_value(final Object nameId) { TraversalScriptHelper.compute("g.V.has('age').properties().has(T.id, nameId).value()", g, "nameId", nameId) } + + @Override + public Traversal<Vertex, VertexProperty<String>> get_g_V_hasXageX_propertiesXnameX() { + TraversalScriptHelper.compute("g.V.has('age').properties('name')", g) + } } } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9c8c655d/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesTest.java ---------------------------------------------------------------------- diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesTest.java index 8f9c97b..b64059a 100644 --- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesTest.java +++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesTest.java @@ -21,18 +21,21 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map; import org.apache.tinkerpop.gremlin.LoadGraphWith; import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest; import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner; -import org.apache.tinkerpop.gremlin.structure.Property; -import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; -import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine; +import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.apache.tinkerpop.gremlin.structure.VertexProperty; import org.junit.Test; import org.junit.runner.RunWith; import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; +import java.util.Set; import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * @author Marko A. Rodriguez (http://markorodriguez.com) @@ -46,6 +49,8 @@ public abstract class PropertiesTest extends AbstractGremlinProcessTest { public abstract Traversal<Vertex, Object> get_g_V_hasXageX_properties_hasXid_nameIdX_value(final Object nameId); + public abstract Traversal<Vertex, VertexProperty<String>> get_g_V_hasXageX_propertiesXnameX(); + @Test @LoadGraphWith(MODERN) public void g_V_hasXageX_propertiesXname_ageX_value() { @@ -65,7 +70,7 @@ public abstract class PropertiesTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) public void g_V_hasXageX_properties_hasXid_nameIdX_value() { - final Traversal<Vertex,Object> traversal = get_g_V_hasXageX_properties_hasXid_nameIdX_value(convertToVertexPropertyId("marko", "name").next()); + final Traversal<Vertex, Object> traversal = get_g_V_hasXageX_properties_hasXid_nameIdX_value(convertToVertexPropertyId("marko", "name").next()); printTraversalForm(traversal); checkResults(Collections.singletonList("marko"), traversal); } @@ -73,11 +78,44 @@ public abstract class PropertiesTest extends AbstractGremlinProcessTest { @Test @LoadGraphWith(MODERN) public void g_V_hasXageX_properties_hasXid_nameIdAsStringX_value() { - final Traversal<Vertex,Object> traversal = get_g_V_hasXageX_properties_hasXid_nameIdX_value(convertToVertexPropertyId("marko", "name").next().toString()); + final Traversal<Vertex, Object> traversal = get_g_V_hasXageX_properties_hasXid_nameIdX_value(convertToVertexPropertyId("marko", "name").next().toString()); printTraversalForm(traversal); checkResults(Collections.singletonList("marko"), traversal); } + @Test + @LoadGraphWith(MODERN) + public void g_V_hasXageX_propertiesXnameX() { + final Traversal<Vertex, VertexProperty<String>> traversal = get_g_V_hasXageX_propertiesXnameX(); + printTraversalForm(traversal); + final Set<String> keys = new HashSet<>(); + final Set<String> values = new HashSet<>(); + final Set<Object> ids = new HashSet<>(); + int counter = 0; + while (traversal.hasNext()) { + counter++; + final VertexProperty<String> vertexProperty = traversal.next(); + keys.add(vertexProperty.key()); + values.add(vertexProperty.value()); + ids.add(vertexProperty.id()); + assertEquals("name", vertexProperty.key()); + assertEquals(convertToVertex(graph, vertexProperty.value()).values("name").next(), vertexProperty.value()); + assertEquals(convertToVertex(graph, vertexProperty.value()).properties("name").next().id(), vertexProperty.id()); + assertEquals(convertToVertex(graph, vertexProperty.value()), vertexProperty.element()); + assertEquals(convertToVertexId(graph, vertexProperty.value()), vertexProperty.element().id()); + } + assertEquals(4, counter); + assertEquals(1, keys.size()); + assertTrue(keys.contains("name")); + assertEquals(4, values.size()); + assertTrue(values.contains("marko")); + assertTrue(values.contains("vadas")); + assertTrue(values.contains("josh")); + assertTrue(values.contains("peter")); + assertEquals(4, ids.size()); + + } + public static class Traversals extends PropertiesTest { @Override public Traversal<Vertex, Object> get_g_V_hasXageX_propertiesXname_ageX_value() { @@ -93,6 +131,11 @@ public abstract class PropertiesTest extends AbstractGremlinProcessTest { public Traversal<Vertex, Object> get_g_V_hasXageX_properties_hasXid_nameIdX_value(final Object nameId) { return g.V().has("age").properties().has(T.id, nameId).value(); } + + @Override + public Traversal<Vertex, VertexProperty<String>> get_g_V_hasXageX_propertiesXnameX() { + return (Traversal<Vertex, VertexProperty<String>>) g.V().has("age").<String>properties("name"); + } } }
