packages feed

bitcoin-compact-filters-0.1.0.0: test/Test/Examples/Bip.hs

{-# OPTIONS_GHC -Wno-type-defaults #-}

module Test.Examples.Bip
    ( examples
    ) where

import           Data.Aeson                    (eitherDecodeFileStrict)
import           Data.Text                     (Text)
import           Haskoin.Block                 (BlockHeight)

import           Bitcoin.CompactFilter         (filterHeaderFromHex)
import           Paths_bitcoin_compact_filters (getDataFileName)
import           Test.Util                     (Example (..), decodeFromHex,
                                                parseHex)


examples :: IO [Example]
examples
    = getDataFileName "examples/testnet-19.json"
    >>= eitherDecodeFileStrict
    >>= either error return . (>>= traverse interpretRawVector)


interpretRawVector
    :: (BlockHeight, Text, Text, [Text], Text, Text, Text, Text)
    -> Either String Example
interpretRawVector (n, h, b, ss, ph, f, fh, _)
    = Example n <$> decodeFromHex h
                <*> decodeFromHex b
                <*> traverse parseHex ss
                <*> decodeFromHex f
                <*> filterHeaderFromHex ph
                <*> filterHeaderFromHex fh