/** * Author: Georg Hofferek <georg.hofferek@iaik.tugraz.at> */ package at.iaik.suraq.test; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashSet; import java.util.Set; import org.junit.Assert; import org.junit.Test; import at.iaik.suraq.exceptions.ParseError; import at.iaik.suraq.parser.LogicParser; import at.iaik.suraq.parser.SExpParser; import at.iaik.suraq.sexp.SExpression; import at.iaik.suraq.smtlib.SMTLibObject; import at.iaik.suraq.smtlib.formula.PropositionalFunctionMacroInstance; /** * @author Georg Hofferek <georg.hofferek@iaik.tugraz.at> * */ public class LogicParserTest { /** * Test method for {@link at.iaik.suraq.parser.LogicParser#parse()}. */ @Test public void testParseNoReadonlyPipelineExample() { LogicParser logicParser = null; try { SExpParser sexpParser = new SExpParser(new File( "./rsc/test/no_readonly_pipeline_example_suraq.smt2")); sexpParser.parse(); Assert.assertTrue(sexpParser.wasParsingSuccessfull()); SExpression result = sexpParser.getRootExpr(); Assert.assertNotNull(result); logicParser = new LogicParser(result); logicParser.parse(); Assert.assertTrue(logicParser.wasParsingSuccessfull()); } catch (FileNotFoundException exc1) { exc1.printStackTrace(); Assert.fail(exc1.getMessage()); } catch (IOException exc1) { exc1.printStackTrace(); Assert.fail(exc1.getMessage()); } catch (ParseError exc) { exc.printStackTrace(); Assert.fail(exc.getMessage()); } // Some more detailed checks Assert.assertEquals(1, logicParser.getControlVariables().size()); Assert.assertEquals("x", logicParser.getControlVariables().get(0) .getVarName()); Assert.assertEquals(1, logicParser.getFunctions().size()); Assert.assertEquals("ALU", logicParser.getFunctions().get(0).getName() .toString()); Assert.assertEquals(0, logicParser.getBoolVariables().size()); Assert.assertEquals(3, logicParser.getMacros().size()); Assert.assertEquals(5, logicParser.getArrayVariables().size()); Assert.assertEquals(5, logicParser.getDomainVariables().size()); Assert.assertEquals(5, logicParser.getNoDependenceVariables().size()); Assert.assertNotNull(logicParser.getMainFormula()); Assert.assertTrue(logicParser.getMainFormula() instanceof PropositionalFunctionMacroInstance); Assert.assertTrue(logicParser.getMainFormula().equals( logicParser.getMainFormula())); } /** * Test method for {@link at.iaik.suraq.parser.LogicParser#parse()}. Just * parses DLX. No further checks except for successful completion. */ @Test public void simpleTestParseDLXExample() { LogicParser logicParser = null; try { SExpParser sexpParser = new SExpParser(new File( "./rsc/dlx/dlx.smt2")); sexpParser.parse(); Assert.assertTrue(sexpParser.wasParsingSuccessfull()); SExpression result = sexpParser.getRootExpr(); Assert.assertNotNull(result); logicParser = new LogicParser(result); logicParser.parse(); Assert.assertTrue(logicParser.wasParsingSuccessfull()); } catch (FileNotFoundException exc1) { exc1.printStackTrace(); Assert.fail(exc1.getMessage()); } catch (IOException exc1) { exc1.printStackTrace(); Assert.fail(exc1.getMessage()); } catch (ParseError exc) { exc.printStackTrace(); Assert.fail(exc.getMessage()); } // Some more detailed checks Assert.assertEquals(7, logicParser.getControlVariables().size()); Assert.assertNotNull(logicParser.getMainFormula()); Assert.assertTrue(logicParser.getMainFormula().equals( logicParser.getMainFormula())); Set<String> ufs = new HashSet<String>(); logicParser.getMainFormula().getUninterpretedFunctionNames(ufs, new HashSet<SMTLibObject>()); Assert.assertTrue(ufs.contains("alu-op-of")); Assert.assertFalse(ufs.contains("Tintifax")); } }