module Main where
import Codec.Compression.ShannonFano
import Data.ByteString.Lazy (ByteString)
import qualified Data.ByteString.Lazy as BSL (pack)
import Text.Printf (printf)
import Test.QuickCheck (Arbitrary(..), quickCheck)
instance Arbitrary ByteString where
arbitrary = BSL.pack <$> arbitrary
prop_id :: ByteString -> Bool
prop_id s = let dt = genCodeTable s
in (`decompress` dt) (compress s) == Just s
tests :: [(String, IO ())]
tests = [ ("prop_id", quickCheck prop_id)
]
main :: IO ()
main = mapM_ (\(s,a) -> printf "%-25s: " s >> a) tests