package de.psi.alloy4smt.smt;
import org.junit.Test;
import static org.junit.Assert.*;
public class SMTFormulaTest {
@Test
public void simple() {
SMTFormula form = new SMTFormula();
assertEquals(
"(set-logic QF_NRA)\n" +
"(set-info :smt-lib-version 2.0)\n", form.toString());
}
@Test
public void constraints() {
SMTFormula form = new SMTFormula();
SExpr<String> c = SExpr.call("=", SExpr.<String>num(5), SExpr.add(SExpr.<String>num(2), SExpr.<String>num(3)));
form.addConstraint(c);
assertEquals(
"(set-logic QF_NRA)\n" +
"(set-info :smt-lib-version 2.0)\n" +
"(assert (= 5 (+ 2 3)))\n", form.toString());
}
@Test
public void variables() {
SMTFormula form = new SMTFormula();
form.addBoolVariable("super");
form.addIntegerVariable("duper");
SExpr<String> c = SExpr.call("=", SExpr.leaf("super"), SExpr.call("=", SExpr.leaf("duper"), SExpr.<String>num(1)));
form.addConstraint(c);
assertEquals("(declare-fun super () Bool)\n" +
"(declare-fun duper () Int)\n", form.getVariableDecls());
assertEquals("(assert (= super (= duper 1)))\n", form.getConstraints());
assertEquals("(set-logic QF_NRA)\n" +
"(set-info :smt-lib-version 2.0)\n" +
"(declare-fun super () Bool)\n" +
"(declare-fun duper () Int)\n" +
"(assert (= super (= duper 1)))\n", form.toString());
}
}