import Prelude hiding (succ) import Test.HUnit hiding (test) import Control.Monad (liftM) import Data.Complex import Hascal main :: IO Int main = liftM (\x -> errors x + failures x) (runTestTT tests) tests :: Test tests = TestList [ succ "_5" ((-5):+0) , succ "2+7" (9:+0) , succ "3-4" ((-1):+0) , succ "9*8" (72:+0) , succ "9/3" (3:+0) , succ "1+2-3-4+5" ((1+2-3-4+5):+0) , succ "8/4+_2-96^2" ((8/4-2-96**2):+0) ] test :: (Read t, RealFloat t, Show t) => String -> Maybe (Complex t) -> Test test string value = TestLabel string $ TestCase $ assertEqual string value (hascal string) succ :: (Read t, RealFloat t, Show t) => String -> Complex t -> Test succ string value = test string (Just value) flop :: String -> t -> Test flop string value = test string Nothing