{-# LANGUAGE OverloadedStrings #-} -- | A module providing functions useful for testing a backend for SimpleSMT. module SMTLIB.Backends.Tests ( testBackend, Src.Source (..), Src.sources, ) where import SMTLIB.Backends (Backend, command, initSolver) import qualified SMTLIB.Backends.Tests.Sources as Src import Test.Tasty import Test.Tasty.HUnit -- | Test a backend by using it to run a list of examples. testBackend :: -- | The name of the test group. String -> -- | A list of examples on which to run the backend. [Src.Source] -> -- | A function that should create a backend, run a given -- computation and release the backend's resources. ((Backend -> Assertion) -> Assertion) -> TestTree testBackend name sources with = testGroup name $ do lazyMode <- [False, True] return $ testGroup ( if lazyMode then "lazy" else "eager" ) $ do source <- sources return $ testCase (Src.name source) $ with $ \backend -> do solver <- initSolver backend lazyMode Src.run source solver -- ensure the sources consisting only of queued commands also run _ <- command solver "(get-info :name)" return ()