package com.tinkerpop.blueprints.impls.orient;
import com.orientechnologies.orient.core.db.record.OIdentifiable;
import com.orientechnologies.orient.core.record.impl.ODocument;
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Edge;
import org.junit.Assert;
import org.junit.Test;
import java.util.Iterator;
public class OrientDeleteEdgeTest {
@Test
public void testDeleteEdgeWhileIterate() {
OrientGraph graph = new OrientGraph("memory:test_graph", "admin", "admin");
try {
graph.createEdgeType("Plays");
OrientVertex player = graph.addVertex(null);
OrientVertex team = graph.addVertex(null);
player.addEdge("plays", team);
graph.commit();
Iterator<Edge> team_edges = player.getEdges(Direction.OUT, "plays").iterator();
while (team_edges.hasNext()) {
final Edge edge = team_edges.next();
graph.removeEdge(edge);
}
ODocument docPlayer = player.getRecord();
Iterable<OIdentifiable> out = docPlayer.field("out_Plays");
Assert.assertFalse(out.iterator().hasNext());
ODocument docTeam = team.getRecord();
Iterable<OIdentifiable> in = docTeam.field("in_Plays");
Assert.assertFalse(in.iterator().hasNext());
graph.getRawGraph().getLocalCache().clear();
docPlayer = graph.getRawGraph().load(docPlayer.getIdentity());
out = docPlayer.field("out_Plays");
Assert.assertFalse(out.iterator().hasNext());
docTeam = graph.getRawGraph().load(docTeam.getIdentity());
in = docTeam.field("in_Plays");
Assert.assertFalse(in.iterator().hasNext());
} finally {
graph.drop();
}
}
}