packages feed

haskoin-wallet-0.3.0: tests/Network/Haskoin/Wallet/Arbitrary.hs

{-# OPTIONS_GHC -fno-warn-orphans #-}
module Network.Haskoin.Wallet.Arbitrary where

import Test.QuickCheck (Arbitrary, arbitrary, oneof)

import Network.Haskoin.Test
import Network.Haskoin.Wallet

instance Arbitrary AccountType where
    arbitrary = oneof
        [ return AccountRegular
        , do
            ArbitraryMSParam m n <- arbitrary
            return $ AccountMultisig m n
        ]

instance Arbitrary NodeAction where
    arbitrary = oneof [ NodeActionRescan <$> arbitrary
                      , return NodeActionStatus
                      ]

instance Arbitrary TxAction where
    arbitrary = oneof
        [ do
            as' <- arbitrary
            let as = map (\(ArbitraryAddress a, x) -> (a, x)) as'
            fee <- arbitrary
            rcptFee <- arbitrary
            minConf <- arbitrary
            sign <- arbitrary
            return $ CreateTx as fee rcptFee minConf sign
        , do
            ArbitraryTx tx <- arbitrary
            return (ImportTx tx)
        , SignTx <$> (arbitrary >>= \(ArbitraryTxHash h) -> return h)
        ]