{-# LANGUAGE TemplateHaskell #-}
import Test.QuickCheck (Arbitrary(..), choose, forAll)
import Test.QuickCheck.All (quickCheckAll)
import Control.Monad (void)
import Data.Word
import qualified Data.ByteString.Base64 as Base64
import qualified Data.ByteString.Base32 as Base32
import qualified Data.ByteString.Base16 as Base16
import qualified Data.ByteString.Char8 as B8
instance Arbitrary B8.ByteString where
arbitrary = B8.pack <$> arbitrary
prop_base64_inverse :: B8.ByteString -> Bool
prop_base64_inverse bs =
either (const False) (bs==)
$ Base64.decode $ Base64.encode bs
prop_base16_inverse :: B8.ByteString -> Bool
prop_base16_inverse bs =
either (const False) (bs==)
$ Base16.decode $ Base16.encode bs
prop_base32_inverse :: B8.ByteString -> Bool
prop_base32_inverse bs =
either (const False) (bs==)
$ Base32.decode $ Base32.encode bs
return []
runTests = $quickCheckAll
main :: IO ()
main = void runTests