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