36 lines
1.1 KiB
Haskell

module Main (main) where
import Interop.Shared (calculateSummary, combinedProduct, formatHaskellMessage, gap, total)
import System.Exit (exitFailure)
main :: IO ()
main = do
assertEqual "summary total" 12 (totalValue 7 5)
assertEqual "summary product" 35 (productValue 7 5)
assertEqual "summary gap" 2 (gapValue 7 5)
assertEqual
"message rendering"
"Haskell handled Ada: total=12, product=35, gap=2"
(formatHaskellMessage "Ada" (calculateSummary 7 5))
totalValue :: Int -> Int -> Int
totalValue left right = total (calculateSummary left right)
productValue :: Int -> Int -> Int
productValue left right = combinedProduct (calculateSummary left right)
gapValue :: Int -> Int -> Int
gapValue left right = gap (calculateSummary left right)
assertEqual :: (Eq a, Show a) => String -> a -> a -> IO ()
assertEqual label expected actual
| expected == actual = pure ()
| otherwise = do
putStrLn $
label
++ " expected "
++ show expected
++ " but got "
++ show actual
exitFailure