module Main where import Test.HUnit import Encoding.Base64 (enc64, dec64) import System.Exit (exitFailure, exitSuccess) -- Test cases for enc64 function testEnc64 :: Test testEnc64 = TestCase $ do assertEqual "for (enc64 \"hello\")," "aGVsbG8=" (enc64 "hello") assertEqual "for (enc64 \"Haskell\")," "SGFza2VsbA==" (enc64 "Haskell") assertEqual "for (enc64 \"\x00\x01\x02\")," "AAEC" (enc64 "\x00\x01\x02") assertEqual "for (enc64 \"😂\")," "8J+Ygg==" (enc64 "😂") -- Test cases for dec64 function testDec64 :: Test testDec64 = TestCase $ do assertEqual "for (dec64 \"aGVsbG8=\")," "hello" (dec64 "aGVsbG8=") assertEqual "for (dec64 \"SGFza2VsbA==\")," "Haskell" (dec64 "SGFza2VsbA==") assertEqual "for (dec64 \"AAEC\")," "\x00\x01\x02" (dec64 "AAEC") assertEqual "for (dec64 \"8J+Ygg==\")," "😂" (dec64 "😂") tests :: Test tests = TestList [TestLabel "Test enc64" testEnc64, TestLabel "Test dec64" testDec64] -- main :: IO Counts -- main = runTestTT tests >>= \counts -> print counts >> runTestTTAndExit tests -- runAndPrint :: Test -> IO Counts -- runAndPrint t = do -- counts <- runTestTT t -- let label = case t of -- TestLabel l _ -> l -- _ -> "Unnamed test." -- putStrLn $ label ++ ": " ++ if errors counts + failures counts == 0 then "[OK]" else "[FAIL]" -- return counts main :: IO () main = do counts <- runTestTT tests print counts if errors counts + failures counts == 0 then exitSuccess else exitFailure