package kr.ac.snu.selab.soot.graph;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import kr.ac.snu.selab.soot.util.XMLWriter;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
public abstract class AbstractGraphTest {
protected StringGraph graph;
protected void setUp() {
Logger.getLogger("kr.ac.snu.selab").setLevel(Level.OFF);
graph = new StringGraph();
initializeGraph();
}
protected void sortPaths(ArrayList<Path<StringNode>> paths) {
Collections.sort(paths, new Comparator<Path<StringNode>>() {
@Override
public int compare(Path<StringNode> path1, Path<StringNode> path2) {
List<StringNode> list1 = path1.getNodeList();
List<StringNode> list2 = path2.getNodeList();
int length1 = path1.length();
int length2 = path1.length();
int min = Math.min(length1, length2);
for (int i = 0; i < min; i++) {
StringNode node1 = list1.get(i);
StringNode node2 = list2.get(i);
String element1 = (String) node1.getElement();
String element2 = (String) node2.getElement();
if (element1.compareTo(element2) < 0)
return -1;
if (element1.compareTo(element2) > 0)
return 1;
}
return 0;
}
});
}
protected static String pathString(Path<StringNode> path) {
StringBuffer buffer = new StringBuffer();
for (StringNode node : path.getNodeList()) {
buffer.append(node.getElement());
buffer.append(";");
}
return buffer.toString();
}
protected abstract void initializeGraph();
protected static class StringGraph extends DefaultHashMapGraph<StringNode> {
}
protected static class StringNode extends Node {
public StringNode(String text) {
super(text);
}
public int hashCode() {
return element.toString().hashCode();
}
@Override
public void writeXML(XMLWriter writer) {
}
@Override
public String toXML() {
return "";
}
}
}