packages feed

basen-bytestring-0.1.0.0: test/Properties.hs

{-# 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