module Main (main) where import Data.Binary (encode, decode) import Test.Framework (defaultMain, testGroup, Test) import Test.Framework.Providers.QuickCheck2 import Data.Base58Address prop_read_show_bitcoin :: BitcoinAddress -> Bool prop_read_show_bitcoin adr = (read $! str) == adr where str = show $! adr {-# NOINLINE str #-} prop_read_show_ripple :: RippleAddress -> Bool prop_read_show_ripple adr = (read $! str) == adr where str = show $! adr {-# NOINLINE str #-} prop_encode_decode_ripple :: RippleAddress0 -> Bool prop_encode_decode_ripple (RippleAddress0 adr) = (decode $! bytes) == adr where bytes = encode $! adr {-# NOINLINE bytes #-} tests :: [Test] tests = [ testGroup "read/show loop" [ testProperty "BitcoinAddress" prop_read_show_bitcoin, testProperty "RippleAddress" prop_read_show_ripple ], testGroup "encode/decode loop" [ testProperty "RippleAddress" prop_encode_decode_ripple ] ] main :: IO () main = defaultMain tests