packages feed

lzo-0.1.1.1: test/Spec.hs

module Main (main) where

import           Codec.Compression.Lzo
import qualified Data.ByteString.Lazy  as BSL
import           Test.Tasty
import           Test.Tasty.HUnit

testRoundtripFrames :: FilePath -> TestTree
testRoundtripFrames fp = testCase ("Roundtrip " ++ fp) $ do
    contents <- BSL.readFile fp
    let actual = decompressFile (compressFile contents)
    actual @?= contents

testDecompress :: FilePath -> TestTree
testDecompress fp = testCase ("Decompress " ++ fp) $ do
    res <- decompressFile <$> BSL.readFile fp
    let lByte = last (BSL.toChunks res)
    assertBool "Does not throw exception" (lByte `seq` True)

main :: IO ()
main =

    defaultMain $
        testGroup "lzo" [ testFrames
                        , testDecompress "test/data/minilzo.c.lzo"
                        ]

    where
        testFrames = testGroup "Frame compression" $
            testRoundtripFrames <$>
                [ "cbits/minilzo.c"
                , "cbits/lzodefs.h"
                ]