packages feed

lzlib-0.2.0.0: test/Spec.hs

module Main ( main ) where

import           Codec.Lzip
import           Control.Monad        (filterM)
import qualified Data.ByteString      as BS
import qualified Data.ByteString.Lazy as BSL
import           Data.Foldable        (traverse_)
import           System.Directory     (doesFileExist)
import           Test.Hspec

compressFile :: FilePath -> Spec
compressFile fp = parallel $
    it "roundtrip should be identity" $ do
        str <- BS.readFile fp
        decompress (BSL.toStrict (compress str)) `shouldBe` (BSL.fromStrict str)

roundtripFile :: FilePath -> Spec
roundtripFile fp = parallel $
    it "roundtrip should be identity" $ do
        str <- BS.readFile fp
        compress (BSL.toStrict (decompress str)) `shouldBe` (BSL.fromStrict str)

main :: IO ()
main = do
    ex' <- filterM doesFileExist ["gmp-6.1.2.tar.lz", "lzlib-1.10.tar.lz"]
    ex <- filterM doesFileExist ["gmp-6.1.2.tar", "lzlib-1.10.tar"]
    hspec $ do
        describe "decompress/compress" $
            traverse_ compressFile ex
        describe "compress/decompress" $
            traverse_ roundtripFile ex'