victim.deleteOnExit();
serializer().setProperty(SerializedReaderWriter.FILENAME, victim.getAbsolutePath());
serializer().write(builder().getGraph());
Graph before = builder().getGraph();
Graph after = serializer().read();
//ensure same number of nodes and edges
assertTrue(before.getNodes().size() == after.getNodes().size());
assertTrue(before.getEdges().size() == after.getEdges().size());
GraphVisitor visitor = new GraphVisitor() {
public int visit(Graphable component) {
DirectedNode node = (DirectedNode)component;
if (node.getInDegree() == 0 && node.getOutDegree() == 2)
return(Graph.PASS_AND_CONTINUE);
return(Graph.FAIL_QUERY);
}
};
assertTrue(after.queryNodes(visitor).size() == 1); //root
visitor = new GraphVisitor() {
public int visit(Graphable component) {
DirectedNode node = (DirectedNode)component;
if (node.getInDegree() == 1 && node.getOutDegree() == 2)
return(Graph.PASS_AND_CONTINUE);
return(Graph.FAIL_QUERY);
}
};
assertTrue(after.queryNodes(visitor).size() == Math.pow(2,k)-2); //internal
visitor = new GraphVisitor() {
public int visit(Graphable component) {
DirectedNode node = (DirectedNode)component;
if (node.getInDegree() == 1 && node.getOutDegree() == 0)
return(Graph.PASS_AND_CONTINUE);
return(Graph.FAIL_QUERY);
}
};
assertTrue(after.queryNodes(visitor).size() == Math.pow(2,k)); //leaves
}
catch(Exception e) {
e.printStackTrace();
assertTrue(false);
}