packages feed

interpol-0.2.2: Test/Unit.hs

module Main where

import System.Exit ( exitFailure )
import Test.HUnit
import Text.Interpol

main :: IO ()
main = do
  runCounts <- runTestTT $ test [ toStringTests ]
  if failures runCounts + errors runCounts == 0
    then
      putStrLn "All unit tests pass :)"
    else do
      putStrLn "Failures or errors occured :'("
      exitFailure

toStringTests :: Test
toStringTests =
    test [ "string" ~: TestCase $ do
             assertEqual "" "I have apples" ("I " ^-^ "have " ^-^ "apples")
         , "char" ~: TestCase $ do
             assertEqual "" "Triple 'X'" ("Triple " ^-^ 'X')
         , "number" ~: TestCase $ do
             assertEqual "" "Am 21 years old" ("Am " ^-^ (21 :: Int) ^-^
                                               " years old")
         , "first" ~: TestCase $ do
             assertEqual "" "21 is my age" ((21 :: Int) ^-^ " is my age")
         , "utf" ~: TestCase $ do
             assertEqual "" "Umlaut: 'ü'" ("Umlaut: " ^-^ 'ü')
         ]