packages feed

bitcoin-compact-filters-0.1.0.2: 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