package tests; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.Reader; import java.util.ArrayList; import java.util.HashMap; import org.junit.Test; import parser.ASTprogram; import parser.ASTprogramRule; import parser.ASTprogramRules; import parser.ASTsortExpression; import parser.ASTterm; import parser.ParseException; import parser.SimpleNode; import parser.SparcTranslator; import parser.SparcTranslatorTreeConstants; import translating.TermFetcher; public class TestVariableFetcher { HashMap<String, ASTsortExpression> sortNameToExpression; ASTprogramRules programRules; HashMap<String, ArrayList<String>> predicateArgumentSorts; @Test public void testUsa() { testFile("test/usa.sp"); } @Test public void testPrimitive() { testFile("test/fetcher1.sp"); } @Test public void testFetcher2() { testFile("test/fetcher2.sp"); } private void testFile(String filePath) { try { setUpFile(filePath); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } for(int i=0;i<programRules.jjtGetNumChildren();i++) { // if(i==1)break; System.out.println("RULE NUMBER "+(i+1)); ASTprogramRule rule=(ASTprogramRule)programRules.jjtGetChild(i); TermFetcher vf=new TermFetcher (predicateArgumentSorts,sortNameToExpression); HashMap<ASTterm, String> out= vf.fetchTermSorts(rule); System.out.println(out.toString()); } } private void setUpFile(String filePath) throws ParseException { Reader sr = null; try { sr = new FileReader(filePath); } catch (FileNotFoundException e) { e.printStackTrace(); } SparcTranslator p = new SparcTranslator(sr); ASTprogram program = (ASTprogram) p.program(); appendToVariableNamesIn(program, "_G"); this.sortNameToExpression = p.sortNameToExpression; this.predicateArgumentSorts = p.predicateArgumentSorts; programRules = (ASTprogramRules) program.jjtGetChild(2); } void appendToVariableNamesIn(SimpleNode n, String suffix) { if (n.getId()==SparcTranslatorTreeConstants.JJTVAR) { n.image = n.image + suffix; } for (int i = 0; i < n.jjtGetNumChildren(); i++) { appendToVariableNamesIn((SimpleNode) (n.jjtGetChild(i)), suffix); } } }