@Test
public void testRemoveNode() {
DhnsGraphController controller = new DhnsGraphController();
Dhns dhns = new Dhns(controller, null);
HierarchicalDirectedGraphImpl graph = new HierarchicalDirectedGraphImpl(dhns, dhns.getGraphStructure().getMainView());
TreeStructure treeStructure = dhns.getGraphStructure().getMainView().getStructure();
GraphFactoryImpl factory = dhns.factory();
Node first = null;
Node middle = null;
Node end = null;
for (int i = 0; i < 10; i++) {
Node node = factory.newNode();
node.getNodeData().setLabel("Node " + i);
graph.addNode(node);
System.out.println("Node " + i + " added. Id = " + node.getId());
if (i == 0) {
first = node;
} else if (i == 4) {
middle = node;
} else if (i == 9) {
end = node;
}
}
graph.removeNode(first);
//Test1
System.out.print("Test1 nodes: ");
for (int i = 0; i < treeStructure.getTreeSize(); i++) {
AbstractNode n = treeStructure.getNodeAt(i);
System.out.print(n.getId() + " ");
assertEquals("AbstractNode pre", i, n.getPre());
assertEquals("AbstractNode avl node", i, n.avlNode.getIndex());
if (n.avlNode.next() != null) {
assertEquals("AbstractNode next", treeStructure.getNodeAt(i + 1).avlNode, n.avlNode.next());
}
if (n.avlNode.previous() != null) {
assertEquals("AbstractNode previous", treeStructure.getNodeAt(i - 1).avlNode, n.avlNode.previous());
}
}
System.out.println();
//End Test1
graph.removeNode(middle);
//Test2
System.out.print("Test2 nodes: ");
for (int i = 0; i < treeStructure.getTreeSize(); i++) {
AbstractNode n = treeStructure.getNodeAt(i);
System.out.print(n.getId() + " ");
assertEquals("AbstractNode pre", i, n.getPre());
assertEquals("AbstractNode avl node", i, n.avlNode.getIndex());
if (n.avlNode.next() != null) {
assertEquals("AbstractNode next", treeStructure.getNodeAt(i + 1).avlNode, n.avlNode.next());
}
if (n.avlNode.previous() != null) {
assertEquals("AbstractNode previous", treeStructure.getNodeAt(i - 1).avlNode, n.avlNode.previous());
}
}
System.out.println();
//End Test2
graph.removeNode(end);
//Test3
System.out.print("Test3 nodes: ");
for (int i = 0; i < treeStructure.getTreeSize(); i++) {
AbstractNode n = treeStructure.getNodeAt(i);
System.out.print(n.getId() + " ");
assertEquals("AbstractNode pre", i, n.getPre());
assertEquals("AbstractNode avl node", i, n.avlNode.getIndex());
if (n.avlNode.next() != null) {
assertEquals("AbstractNode next", treeStructure.getNodeAt(i + 1).avlNode, n.avlNode.next());
}
if (n.avlNode.previous() != null) {
assertEquals("AbstractNode previous", treeStructure.getNodeAt(i - 1).avlNode, n.avlNode.previous());
}
}
System.out.println();
//End Test3
assertFalse(graph.contains(first));
assertFalse(graph.contains(middle));
assertFalse(graph.contains(end));
AbstractNode AbstractNode = (AbstractNode) first;
assertNull(AbstractNode.avlNode);
assertNull(AbstractNode.parent);