toysolver-0.0.2: src/TestAReal2.hs
{-# LANGUAGE TemplateHaskell #-}
import Data.Maybe
import Data.Ratio
import Test.HUnit hiding (Test)
import Test.QuickCheck
import Test.Framework (Test, defaultMain, testGroup)
import Test.Framework.TH
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2
import Data.Polynomial
import Data.AlgebraicNumber
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 = var ()
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)