From 5c4571d369cfc6212e94db2d733419a70980a2b0 Mon Sep 17 00:00:00 2001 From: Nicolas Voirol <voirol.nicolas@gmail.com> Date: Thu, 10 Nov 2016 18:05:33 +0100 Subject: [PATCH] Tip printing-parsing tests --- src/it/scala/inox/tip/TipPrintingSuite.scala | 48 +++++++++++++++++++ ...{TIPTestSuite.scala => TipTestSuite.scala} | 6 +-- 2 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 src/it/scala/inox/tip/TipPrintingSuite.scala rename src/it/scala/inox/tip/{TIPTestSuite.scala => TipTestSuite.scala} (78%) diff --git a/src/it/scala/inox/tip/TipPrintingSuite.scala b/src/it/scala/inox/tip/TipPrintingSuite.scala new file mode 100644 index 000000000..8eb71ef04 --- /dev/null +++ b/src/it/scala/inox/tip/TipPrintingSuite.scala @@ -0,0 +1,48 @@ +/* Copyright 2009-2016 EPFL, Lausanne */ + +package inox +package tip + +import org.scalatest._ + +class TipPrintingSuite extends FunSuite with ResourceUtils { + import inox.trees._ + + val ctx = TestContext.empty + + val files = resourceFiles("regression/tip/SAT", _.endsWith(".tip")).toList ++ + resourceFiles("regression/tip/UNSAT", _.endsWith(".tip")) + + private def checkScript(syms: Symbols, expr: Expr): Unit = { + for (fd <- syms.functions.values) { + assert(fd.fullBody.getType(syms) != Untyped) + } + + assert(expr.getType(syms) != Untyped) + } + + for (file <- files) { + test(s"Parsing file ${file.getName}") { + for ((syms, expr) <- new Parser(file).parseScript) { + checkScript(syms, expr) + } + } + + test(s"Re-printing file ${file.getName}") { + for ((syms, expr) <- new Parser(file).parseScript) { + val program = InoxProgram(ctx, syms) + + val file = java.io.File.createTempFile("test-output", ".tip") + val fw = new java.io.FileWriter(file, false) + val printer = new Printer(program, fw) + printer.printScript(expr) + printer.emit(smtlib.parser.Commands.CheckSat()) + printer.free() + + val Seq((newSyms, newExpr)) = new Parser(file).parseScript + file.delete() + checkScript(newSyms, newExpr) + } + } + } +} diff --git a/src/it/scala/inox/tip/TIPTestSuite.scala b/src/it/scala/inox/tip/TipTestSuite.scala similarity index 78% rename from src/it/scala/inox/tip/TIPTestSuite.scala rename to src/it/scala/inox/tip/TipTestSuite.scala index ae2aae5b8..21a603a82 100644 --- a/src/it/scala/inox/tip/TIPTestSuite.scala +++ b/src/it/scala/inox/tip/TipTestSuite.scala @@ -6,13 +6,13 @@ package tip import solvers._ import org.scalatest._ -class TIPTestSuite extends FunSuite with ResourceUtils { +class TipTestSuite extends FunSuite with ResourceUtils { val ctx = TestContext.empty for (file <- resourceFiles("regression/tip/SAT", _.endsWith(".tip"))) { test(s"SAT - ${file.getName}") { - for ((syms, expr) <- new tip.Parser(file).parseScript) { + for ((syms, expr) <- new Parser(file).parseScript) { val program = InoxProgram(ctx, syms) assert(SimpleSolverAPI(SolverFactory.default(program)).solveSAT(expr).isSAT) } @@ -21,7 +21,7 @@ class TIPTestSuite extends FunSuite with ResourceUtils { for (file <- resourceFiles("regression/tip/UNSAT", _.endsWith(".tip"))) { test(s"UNSAT - ${file.getName}") { - for ((syms, expr) <- new tip.Parser(file).parseScript) { + for ((syms, expr) <- new Parser(file).parseScript) { val program = InoxProgram(ctx, syms) assert(SimpleSolverAPI(SolverFactory.default(program)).solveSAT(expr).isUNSAT) } -- GitLab