packages feed

base58address-0.2: tests/suite.hs

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