module Tests.BFEncoding (tests) where import Distribution.TestSuite.QuickCheck import Passman.Core.Internal.BFEncoding import Passman.Core.Internal.Util import qualified Data.ByteString as BS import Data.Word tests :: IO [Test] tests = return [ testProperty "prop_toB64" prop_toB64 , testProperty "prop_fromB64" prop_fromB64 , testProperty "prop_decodeEncode" prop_decodeEncode ] b64Charset, bfCharset :: [Word8] b64Charset = BS.unpack $ bsPack "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" bfCharset = BS.unpack $ bsPack "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" prop_toB64 :: Bool prop_toB64 = map toB64 bfCharset == b64Charset prop_fromB64 :: Bool prop_fromB64 = map fromB64 b64Charset == bfCharset prop_decodeEncode :: String -> Bool prop_decodeEncode x = x' == decode (encode x') where x' = bsPack x