sifflet-2.3.0: tests/Testing/Unit/UtilTests.hs
-- For testing the Util module
module Testing.Unit.UtilTests (tests, runU) where
import Test.HUnit
import Language.Sifflet.Util
import Testing.TestUtil
testPar :: Test
testPar =
assertAll
[assertEqual "par (a b c)" "(a b c)" (par "a" ["b", "c"]),
assertEqual "par (a)" "(a)" (par "a" [])]
f1 :: Int -> Int
f1 x = x + 3
f2 :: Int -> IO Int
f2 x = return $ x + 3
list2 :: [[Int]]
list2 = [[1, 5, 7], [9, 6], [1..5]]
list2plus3 :: [[Int]]
list2plus3 = [[4, 8, 10], [12, 9], [4..8]]
tlist :: [(String, Int)]
tlist = [("a", 21), ("b", 77), ("c", 90)]
testMap2 :: Test
testMap2 = TestCase $ assertEqual "map2" list2plus3 (map2 f1 list2)
testMapM2 :: Test
testMapM2 = TestCase $ assertEqualIO "mapM2" list2plus3 (mapM2 f2 list2)
assertEqualIO :: (Eq b, Show b) => String -> b -> IO b -> IO ()
assertEqualIO label expected expr = do
{
result <- expr
; assertEqual label expected result
}
testAdjustAList :: Test
testAdjustAList =
assertAll
[assertEqual "adjustAList a"
[("a",24),("b",77),("c",90)]
(adjustAList "a" f1 tlist)
, assertEqual "adjustAList b"
[("a",21),("b",80),("c",90)]
(adjustAList "b" f1 tlist)
, assertEqual "adjustAList c"
[("a",21),("b",77),("c",93)]
(adjustAList "c" f1 tlist)
, assertEqual "adjustAList d"
[("a",21),("b",77),("c",90)]
(adjustAList "d" f1 tlist)
]
testAdjustAListM :: Test
testAdjustAListM =
assertAll
[assertEqualIO "adjustAListM a"
[("a",24),("b",77),("c",90)]
(adjustAListM "a" f2 tlist)
, assertEqualIO "adjustAListM b"
[("a",21),("b",80),("c",90)]
(adjustAListM "b" f2 tlist)
, assertEqualIO "adjustAListM c"
[("a",21),("b",77),("c",93)]
(adjustAListM "c" f2 tlist)
, assertEqualIO "adjustAListM d"
[("a",21),("b",77),("c",90)]
(adjustAListM "d" f2 tlist)
]
tests :: Test
tests = TestList
[TestLabel "par" testPar
, TestLabel "map2" testMap2
, TestLabel "mapM2" testMapM2
, TestLabel "adjustAList" testAdjustAList
, TestLabel "adjustAListM" testAdjustAListM
]
runU :: IO ()
runU = utestloop tests