bitcoin-hs-0.0.1: Bitcoin/Test/Misc/QuickCheck.hs
-- | Common quickcheck stuff
{-# LANGUAGE CPP, BangPatterns #-}
module Bitcoin.Test.Misc.QuickCheck where
--------------------------------------------------------------------------------
import Test.QuickCheck
--------------------------------------------------------------------------------
-- | An integer in the interval @[0,2^1024]@
newtype BigInt = BigInt Integer deriving (Eq,Ord,Show)
instance Arbitrary BigInt where
arbitrary = do
n <- choose (0,(2^(1024::Int)))
return $ BigInt n
--------------------------------------------------------------------------------
newtype MediumInt = MediumInt Integer deriving (Eq,Ord,Show)
-- | An integer in the interval @[0,2^256-1]@
instance Arbitrary MediumInt where
arbitrary = do
n <- choose (0,(2^(256::Int)-1))
return $ MediumInt n
--------------------------------------------------------------------------------
-- | An integer in the interval @[0,32)@ (closed-open, so 32 is excluded)
newtype SmallInt32 = SmallInt32 Int deriving (Eq,Ord,Show)
instance Arbitrary SmallInt32 where
arbitrary = do
k <- choose (0,31)
return $ SmallInt32 k
--------------------------------------------------------------------------------
newtype SmallExpo = SmallExpo Int deriving (Eq,Show)
instance Arbitrary SmallExpo where
arbitrary = do
n <- choose (0,350)
return $ SmallExpo n
--------------------------------------------------------------------------------