in gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/GraphTest.java [978:1071]
public void shouldEvaluateConnectivityPatterns() {
Vertex a;
Vertex b;
final Vertex c;
final Vertex d;
if (graph.features().vertex().supportsUserSuppliedIds()) {
a = graph.addVertex(T.id, graphProvider.convertId("1", Vertex.class));
b = graph.addVertex(T.id, graphProvider.convertId("2", Vertex.class));
c = graph.addVertex(T.id, graphProvider.convertId("3", Vertex.class));
d = graph.addVertex(T.id, graphProvider.convertId("4", Vertex.class));
} else {
a = graph.addVertex();
b = graph.addVertex();
c = graph.addVertex();
d = graph.addVertex();
}
tryCommit(graph, getAssertVertexEdgeCounts(4, 0));
final Edge e = a.addEdge(graphProvider.convertLabel("knows"), b);
final Edge f = b.addEdge(graphProvider.convertLabel("knows"), c);
final Edge g = c.addEdge(graphProvider.convertLabel("knows"), d);
final Edge h = d.addEdge(graphProvider.convertLabel("knows"), a);
tryCommit(graph, getAssertVertexEdgeCounts(4, 4));
graph.vertices().forEachRemaining(v -> {
assertEquals(1l, IteratorUtils.count(v.edges(Direction.OUT)));
assertEquals(1l, IteratorUtils.count(v.edges(Direction.IN)));
});
graph.edges().forEachRemaining(x -> {
assertEquals(graphProvider.convertLabel("knows"), x.label());
});
if (graph.features().vertex().supportsUserSuppliedIds()) {
Vertex va = graph.vertices(graphProvider.convertId("1", Vertex.class)).next();
Vertex vb = graph.vertices(graphProvider.convertId("2", Vertex.class)).next();
Vertex vc = graph.vertices(graphProvider.convertId("3", Vertex.class)).next();
Vertex vd = graph.vertices(graphProvider.convertId("4", Vertex.class)).next();
assertEquals(a, va);
assertEquals(b, vb);
assertEquals(c, vc);
assertEquals(d, vd);
assertEquals(1l, IteratorUtils.count(va.edges(Direction.IN)));
assertEquals(1l, IteratorUtils.count(va.edges(Direction.OUT)));
assertEquals(1l, IteratorUtils.count(vb.edges(Direction.IN)));
assertEquals(1l, IteratorUtils.count(vb.edges(Direction.OUT)));
assertEquals(1l, IteratorUtils.count(vc.edges(Direction.IN)));
assertEquals(1l, IteratorUtils.count(vc.edges(Direction.OUT)));
assertEquals(1l, IteratorUtils.count(vd.edges(Direction.IN)));
assertEquals(1l, IteratorUtils.count(vd.edges(Direction.OUT)));
final Edge i = a.addEdge(graphProvider.convertLabel("hates"), b);
a = graph.vertices(a.id()).next();
b = graph.vertices(b.id()).next();
va = graph.vertices(graphProvider.convertId("1", Vertex.class)).next();
vb = graph.vertices(graphProvider.convertId("2", Vertex.class)).next();
vc = graph.vertices(graphProvider.convertId("3", Vertex.class)).next();
vd = graph.vertices(graphProvider.convertId("4", Vertex.class)).next();
assertEquals(1l, IteratorUtils.count(va.edges(Direction.IN)));
assertEquals(2l, IteratorUtils.count(va.edges(Direction.OUT)));
assertEquals(2l, IteratorUtils.count(vb.edges(Direction.IN)));
assertEquals(1l, IteratorUtils.count(vb.edges(Direction.OUT)));
assertEquals(1l, IteratorUtils.count(vc.edges(Direction.IN)));
assertEquals(1l, IteratorUtils.count(vc.edges(Direction.OUT)));
assertEquals(1l, IteratorUtils.count(vd.edges(Direction.IN)));
assertEquals(1l, IteratorUtils.count(vd.edges(Direction.OUT)));
for (Edge x : IteratorUtils.list(a.edges(Direction.OUT))) {
assertTrue(x.label().equals(graphProvider.convertLabel("knows")) || x.label().equals(graphProvider.convertLabel("hates")));
}
assertEquals(graphProvider.convertLabel("hates"), i.label());
assertEquals(graphProvider.convertId("2", Vertex.class).toString(), i.inVertex().id().toString());
assertEquals(graphProvider.convertId("1", Vertex.class).toString(), i.outVertex().id().toString());
}
final Set<Object> vertexIds = new HashSet<>();
vertexIds.add(a.id());
vertexIds.add(a.id());
vertexIds.add(b.id());
vertexIds.add(b.id());
vertexIds.add(c.id());
vertexIds.add(d.id());
vertexIds.add(d.id());
vertexIds.add(d.id());
assertEquals(4, vertexIds.size());
}