Package org.sosy_lab.java_smt.test
Class SolverBasedTest0
java.lang.Object
org.sosy_lab.java_smt.test.SolverBasedTest0
- Direct Known Subclasses:
SolverBasedTest0.ParameterizedSolverBasedTest0
Abstract base class with helpful utilities for writing tests that use an SMT solver. It
instantiates and closes the SMT solver before and after each test, and provides fields with
direct access to the most relevant instances.
To run the tests using all available solvers, add the following code to your class:
@Parameters(name="{0}")
public static List<Object[]> getAllSolvers() {
return allSolversAsParameters();
}
@Parameter(0)
public Solvers solver;
@Override
protected Solvers solverToUse() {
return solver;
}
assertThatFormula(BooleanFormula) can be used to easily write assertions about formulas
using Truth.
Test that rely on a theory that not all solvers support should call one of the require
methods at the beginning.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected @Nullable ArrayFormulaManagerprotected BooleanFormulaManagerprotected @Nullable BitvectorFormulaManagerprotected Configurationprotected SolverContextprotected @Nullable EnumerationFormulaManagerprotected SolverContextFactoryprotected UFManagerprotected @Nullable FloatingPointFormulaManagerprotected IntegerFormulaManagerprotected final LogManagerprotected FormulaManagerprotected @Nullable QuantifiedFormulaManagerprotected @Nullable RationalFormulaManagerprotected ShutdownManagerprotected @Nullable StringFormulaManager -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected final ProverEnvironmentSubjectassertThatEnvironment(BasicProverEnvironment<?> prover) Use this for checking assertions about ProverEnvironments with Truth:assertThatEnvironment(stack).is...().protected final BooleanFormulaSubjectassertThatFormula(BooleanFormula formula) Use this for checking assertions about BooleanFormulas with Truth:assertThatFormula(formula).is...().final voidprotected ConfigurationBuilderprotected voidevaluateInModel(BooleanFormula constraint, Formula formula, Collection<Object> possibleExpectedValues, Collection<Formula> possibleExpectedFormulas) final voidprotected org.sosy_lab.java_smt.solvers.opensmt.LogicsThis method is only called, if OpenSMT is called.protected voidprotected voidSkip test if the solver does not support arrays.protected final voidSkip test if the solver does not support bitvectors.protected final voidprotected final voidSkip test if the solver does not support enumeration theory.protected final voidprotected final voidSkip test if the solver does not support integers.protected final voidprotected voidprotected final voidSkip test if the solver does not support optimization.protected voidprotected final voidSkip test if the solver does not support quantifiers.protected final voidSkip test if the solver does not support rationals.protected final voidSkip test if the solver does not support strings.protected voidprotected voidprotected voidprotected voidprotected voidprotected ShutdownNotifierprotected SolverContextFactory.SolversReturn the solver to use in this test.
-
Field Details
-
config
-
logger
-
factory
-
context
-
mgr
-
bmgr
-
fmgr
-
imgr
-
rmgr
-
bvmgr
-
qmgr
-
amgr
-
fpmgr
-
smgr
-
emgr
-
shutdownManager
-
-
Constructor Details
-
SolverBasedTest0
public SolverBasedTest0()
-
-
Method Details
-
shutdownNotifierToUse
-
solverToUse
Return the solver to use in this test. The default is SMTInterpol because it's the only solver guaranteed on all platforms. Overwrite to specify a different solver. -
logicToUse
protected org.sosy_lab.java_smt.solvers.opensmt.Logics logicToUse()This method is only called, if OpenSMT is called. OpenSMT needs to know the logic upfront. -
createTestConfigBuilder
-
initSolver
- Throws:
InvalidConfigurationException
-
closeSolver
public final void closeSolver() -
requireIntegers
protected final void requireIntegers()Skip test if the solver does not support integers. -
requireRationals
protected final void requireRationals()Skip test if the solver does not support rationals. -
requireBitvectors
protected final void requireBitvectors()Skip test if the solver does not support bitvectors. -
requireBitvectorToInt
protected final void requireBitvectorToInt() -
requireQuantifiers
protected final void requireQuantifiers()Skip test if the solver does not support quantifiers. -
requireArrays
protected void requireArrays()Skip test if the solver does not support arrays. -
requireFloats
protected final void requireFloats() -
requireStrings
protected final void requireStrings()Skip test if the solver does not support strings. -
requireEnumeration
protected final void requireEnumeration()Skip test if the solver does not support enumeration theory. -
requireOptimization
protected final void requireOptimization()Skip test if the solver does not support optimization. -
requireInterpolation
protected final void requireInterpolation() -
requireParser
protected void requireParser() -
requireArrayModel
protected void requireArrayModel() -
requireModel
protected void requireModel() -
requireVisitor
protected void requireVisitor() -
requireUnsatCore
protected void requireUnsatCore() -
requireUnsatCoreOverAssumptions
protected void requireUnsatCoreOverAssumptions() -
requireSubstitution
protected void requireSubstitution() -
requireUserPropagators
protected void requireUserPropagators() -
assertThatFormula
Use this for checking assertions about BooleanFormulas with Truth:assertThatFormula(formula).is...(). -
assertThatEnvironment
Use this for checking assertions about ProverEnvironments with Truth:assertThatEnvironment(stack).is...().For new code, we suggest using
ProverEnvironmentSubject.assertThat(BasicProverEnvironment)with a static import. -
evaluateInModel
protected void evaluateInModel(BooleanFormula constraint, Formula formula, Collection<Object> possibleExpectedValues, Collection<Formula> possibleExpectedFormulas) throws SolverException, InterruptedException - Throws:
SolverExceptionInterruptedException
-