
com.tinkerpop.gremlin.process.graph.step.sideEffect.SubgraphTest Maven / Gradle / Ivy
package com.tinkerpop.gremlin.process.graph.step.sideEffect;
import com.tinkerpop.gremlin.AbstractGremlinSuite;
import com.tinkerpop.gremlin.AbstractGremlinTest;
import com.tinkerpop.gremlin.LoadGraphWith;
import com.tinkerpop.gremlin.process.Traversal;
import com.tinkerpop.gremlin.structure.FeatureRequirement;
import com.tinkerpop.gremlin.structure.Graph;
import com.tinkerpop.gremlin.structure.Vertex;
import org.apache.commons.configuration.Configuration;
import org.junit.Test;
import static com.tinkerpop.gremlin.LoadGraphWith.GraphData.CLASSIC;
import static com.tinkerpop.gremlin.structure.Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
/**
* @author Stephen Mallette (http://stephen.genoprime.com)
*/
public abstract class SubgraphTest extends AbstractGremlinTest {
public abstract Traversal get_g_v1_outE_subgraphXknowsX_name(final Object v1Id, final Graph subgraph);
public abstract Traversal get_g_V_inE_subgraphXcreatedX_name(final Graph subgraph);
@Test
@LoadGraphWith(CLASSIC)
@FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ADD_VERTICES)
public void get_g_v1_outE_subgraphXknowsX() throws Exception {
final Configuration config = graphProvider.newGraphConfiguration("subgraph");
graphProvider.clear(config);
final Graph subgraph = graphProvider.openTestGraph(config);
Traversal traversal = get_g_v1_outE_subgraphXknowsX_name(convertToVertexId("marko"), subgraph);
printTraversalForm(traversal);
traversal.iterate();
AbstractGremlinSuite.assertVertexEdgeCounts(3, 2).accept(subgraph);
subgraph.E().forEach(e -> {
assertEquals("knows", e.label());
assertEquals("marko", e.outV().value("name").next());
assertEquals(new Integer(29), e.outV().value("age").next());
assertEquals(Vertex.DEFAULT_LABEL, e.outV().label().next());
final String name = e.inV().value("name").next();
if (name.equals("vadas"))
assertEquals(0.5f, e.value("weight"), 0.0001f);
else if (name.equals("josh"))
assertEquals(1.0f, e.value("weight"), 0.0001f);
else
fail("There's a vertex present that should not be in the subgraph");
});
graphProvider.clear(subgraph, config);
}
@Test
@LoadGraphWith(CLASSIC)
@FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ADD_VERTICES)
public void get_g_V_inE_subgraphXcreatedX_name() throws Exception {
final Configuration config = graphProvider.newGraphConfiguration("subgraph");
graphProvider.clear(config);
final Graph subgraph = graphProvider.openTestGraph(config);
Traversal traversal = get_g_V_inE_subgraphXcreatedX_name(subgraph);
printTraversalForm(traversal);
traversal.iterate();
AbstractGremlinSuite.assertVertexEdgeCounts(5, 4).accept(subgraph);
graphProvider.clear(subgraph, config);
}
public static class JavaSubgraphTest extends SubgraphTest {
public Traversal get_g_v1_outE_subgraphXknowsX_name(final Object v1Id, final Graph subgraph) {
return g.v(v1Id).outE().subgraph(subgraph, e -> e.label().equals("knows")).value("name");
}
public Traversal get_g_V_inE_subgraphXcreatedX_name(final Graph subgraph) {
return g.V().inE().subgraph(subgraph, e -> e.label().equals("created")).value("name");
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy