lz4-bytes-0.1.1.1: test/Main.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Bytes (Bytes)
import Data.Word (Word8)
import Lz4.Block (compress, compressHighly, decompress)
import Test.Tasty (TestTree, defaultMain, testGroup)
import Test.Tasty.QuickCheck (Gen, choose, forAll, testProperty, vectorOf, (===))
import qualified Data.Bytes as Bytes
import qualified GHC.Exts as Exts
main :: IO ()
main = defaultMain tests
tests :: TestTree
tests =
testGroup
"lz4"
[ testProperty "roundtrip" $ forAll genBytes $ \bs ->
let cs = compress 1 bs
in Just bs
=== decompress (Bytes.length bs) cs
, testProperty "roundtrip-HC" $ forAll genBytes $ \bs ->
let cs = compressHighly 3 bs
in Just bs
=== decompress (Bytes.length bs) cs
]
genBytes :: Gen Bytes
genBytes = do
n <- choose (0, 200)
bs <- vectorOf n (choose (0, 2 :: Word8))
pure (Exts.fromList bs)