toysolver-0.3.0: test/TestAReal2.hs
{-# LANGUAGE TemplateHaskell #-}
import Data.Maybe
import Data.Ratio
import Test.Tasty
import Test.Tasty.QuickCheck
import Test.Tasty.HUnit
import Test.Tasty.TH
import Data.Polynomial (UPolynomial, X (..))
import qualified Data.Polynomial as P
import Data.AlgebraicNumber.Real
import Control.Monad
import System.IO
{--------------------------------------------------------------------
Num
--------------------------------------------------------------------}
prop_add_comm =
forAll areals $ \a ->
forAll areals $ \b ->
a + b == b + a
prop_add_assoc =
forAll areals $ \a ->
forAll areals $ \b ->
forAll areals $ \c ->
a + (b + c) == (a + b) + c
prop_add_unitL =
forAll areals $ \a ->
0 + a == a
prop_add_unitR =
forAll areals $ \a ->
a + 0 == a
prop_mult_comm =
forAll areals $ \a ->
forAll areals $ \b ->
a * b == b * a
prop_mult_assoc =
forAll areals $ \a ->
forAll areals $ \b ->
forAll areals $ \c ->
a * (b * c) == (a * b) * c
prop_mult_unitL =
forAll areals $ \a ->
1 * a == a
prop_mult_unitR =
forAll areals $ \a ->
a * 1 == a
prop_mult_dist =
forAll areals $ \a ->
forAll areals $ \b ->
forAll areals $ \c ->
a * (b + c) == a * b + a * c
prop_mult_zero =
forAll areals $ \a ->
0 * a == 0
{--------------------------------------------------------------------
Generators
--------------------------------------------------------------------}
areals :: Gen AReal
areals = oneof $ map return $ samples
samples :: [AReal]
samples = [0, 1, -1, 2, -2] ++ concatMap realRoots ps
where
x = P.var X
ps = [x^2 - 2, x^2 - 3 {- , x^3 - 2, x^6 + 6*x^3 - 2*x^2 + 9 -}]
------------------------------------------------------------------------
-- Test harness
main :: IO ()
main = $(defaultMainGenerator)