diff --git a/based.cabal b/based.cabal index 1119065..a1a6847 100644 --- a/based.cabal +++ b/based.cabal @@ -71,3 +71,13 @@ executable based -- base64-bytestring, -- hs-source-dirs: default-language: Haskell2010 + +test-suite based-test + type: exitcode-stdio-1.0 + hs-source-dirs: test + main-is: Main.hs + build-depends: + base, + based, + HUnit + default-language: Haskell2010 diff --git a/test/Main.hs b/test/Main.hs new file mode 100644 index 0000000..dd2f75e --- /dev/null +++ b/test/Main.hs @@ -0,0 +1,45 @@ +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