{-# LANGUAGE FlexibleContexts #-}
module Math.Programming.Tests where
import Control.Monad.IO.Class
import Test.Tasty
import Text.Printf
import Math.Programming
import Math.Programming.Tests.Api
import Math.Programming.Tests.IP
import Math.Programming.Tests.LP
makeAllTests
:: (PrintfArg (Numeric m), RealFrac (Numeric m), MonadIO m, IPMonad m)
=> String -- ^ The name of the API being tested. This will
-- be used to generate test group names.
-> (m () -> IO ()) -- ^ The runner for the API being tested.
-> TestTree -- ^ The resulting test suite.
makeAllTests apiName runner
= testGroup (printf "Math.Programming tests (%s)" apiName)
[ makeApiTests runner
, makeLPTests runner
, makeIPTests runner
]