36 lines
1.1 KiB
Haskell
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
|