{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Test.Cardano.Ledger.BlockHeader where
import Cardano.Ledger.BaseTypes (Nonce, ProtVer, SlotNo)
import Cardano.Ledger.Block (Block (..), EraBlockHeader (..))
import Cardano.Ledger.Core (
Era,
EraIndependentBlockBody,
HASH,
Hash,
KeyHash,
KeyRole (BlockIssuer),
)
import Control.DeepSeq (NFData)
import Data.Word (Word32)
import GHC.Generics (Generic)
import Lens.Micro
data
=
{ TestBlockHeader -> KeyHash BlockIssuer
tbhIssuer :: KeyHash BlockIssuer
, TestBlockHeader -> Word32
tbhBSize :: Word32
, TestBlockHeader -> Int
tbhHSize :: Int
, TestBlockHeader -> Hash HASH EraIndependentBlockBody
tbhBHash :: Hash HASH EraIndependentBlockBody
, TestBlockHeader -> SlotNo
tbhSlot :: SlotNo
, TestBlockHeader -> Maybe Nonce
tbhPrevNonce :: Maybe Nonce
, TestBlockHeader -> ProtVer
tbhProtVer :: ProtVer
}
deriving ((forall x. TestBlockHeader -> Rep TestBlockHeader x)
-> (forall x. Rep TestBlockHeader x -> TestBlockHeader)
-> Generic TestBlockHeader
forall x. Rep TestBlockHeader x -> TestBlockHeader
forall x. TestBlockHeader -> Rep TestBlockHeader x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TestBlockHeader -> Rep TestBlockHeader x
from :: forall x. TestBlockHeader -> Rep TestBlockHeader x
$cto :: forall x. Rep TestBlockHeader x -> TestBlockHeader
to :: forall x. Rep TestBlockHeader x -> TestBlockHeader
Generic)
instance NFData TestBlockHeader
instance Era era => EraBlockHeader TestBlockHeader era where
blockIssuerBlockHeaderG :: SimpleGetter (Block TestBlockHeader era) (KeyHash BlockIssuer)
blockIssuerBlockHeaderG = (Block TestBlockHeader era -> KeyHash BlockIssuer)
-> SimpleGetter (Block TestBlockHeader era) (KeyHash BlockIssuer)
forall s a. (s -> a) -> SimpleGetter s a
to ((Block TestBlockHeader era -> KeyHash BlockIssuer)
-> SimpleGetter (Block TestBlockHeader era) (KeyHash BlockIssuer))
-> (Block TestBlockHeader era -> KeyHash BlockIssuer)
-> SimpleGetter (Block TestBlockHeader era) (KeyHash BlockIssuer)
forall a b. (a -> b) -> a -> b
$ TestBlockHeader -> KeyHash BlockIssuer
tbhIssuer (TestBlockHeader -> KeyHash BlockIssuer)
-> (Block TestBlockHeader era -> TestBlockHeader)
-> Block TestBlockHeader era
-> KeyHash BlockIssuer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block TestBlockHeader era -> TestBlockHeader
forall h era. Block h era -> h
blockHeader
blockHeaderSizeBlockHeaderG :: SimpleGetter (Block TestBlockHeader era) Int
blockHeaderSizeBlockHeaderG = (Block TestBlockHeader era -> Int)
-> SimpleGetter (Block TestBlockHeader era) Int
forall s a. (s -> a) -> SimpleGetter s a
to ((Block TestBlockHeader era -> Int)
-> SimpleGetter (Block TestBlockHeader era) Int)
-> (Block TestBlockHeader era -> Int)
-> SimpleGetter (Block TestBlockHeader era) Int
forall a b. (a -> b) -> a -> b
$ TestBlockHeader -> Int
tbhHSize (TestBlockHeader -> Int)
-> (Block TestBlockHeader era -> TestBlockHeader)
-> Block TestBlockHeader era
-> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block TestBlockHeader era -> TestBlockHeader
forall h era. Block h era -> h
blockHeader
blockBodySizeBlockHeaderL :: Lens' (Block TestBlockHeader era) Word32
blockBodySizeBlockHeaderL =
(Block TestBlockHeader era -> Word32)
-> (Block TestBlockHeader era
-> Word32 -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) Word32
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (TestBlockHeader -> Word32
tbhBSize (TestBlockHeader -> Word32)
-> (Block TestBlockHeader era -> TestBlockHeader)
-> Block TestBlockHeader era
-> Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block TestBlockHeader era -> TestBlockHeader
forall h era. Block h era -> h
blockHeader) ((Block TestBlockHeader era -> Word32 -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) Word32)
-> (Block TestBlockHeader era
-> Word32 -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) Word32
forall a b. (a -> b) -> a -> b
$
\b :: Block TestBlockHeader era
b@Block {TestBlockHeader
blockHeader :: forall h era. Block h era -> h
blockHeader :: TestBlockHeader
blockHeader} Word32
tbhBSize -> Block TestBlockHeader era
b {blockHeader = blockHeader {tbhBSize}}
blockBodyHashBlockHeaderL :: Lens'
(Block TestBlockHeader era) (Hash HASH EraIndependentBlockBody)
blockBodyHashBlockHeaderL =
(Block TestBlockHeader era -> Hash HASH EraIndependentBlockBody)
-> (Block TestBlockHeader era
-> Hash HASH EraIndependentBlockBody -> Block TestBlockHeader era)
-> Lens'
(Block TestBlockHeader era) (Hash HASH EraIndependentBlockBody)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (TestBlockHeader -> Hash HASH EraIndependentBlockBody
tbhBHash (TestBlockHeader -> Hash HASH EraIndependentBlockBody)
-> (Block TestBlockHeader era -> TestBlockHeader)
-> Block TestBlockHeader era
-> Hash HASH EraIndependentBlockBody
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block TestBlockHeader era -> TestBlockHeader
forall h era. Block h era -> h
blockHeader) ((Block TestBlockHeader era
-> Hash HASH EraIndependentBlockBody -> Block TestBlockHeader era)
-> Lens'
(Block TestBlockHeader era) (Hash HASH EraIndependentBlockBody))
-> (Block TestBlockHeader era
-> Hash HASH EraIndependentBlockBody -> Block TestBlockHeader era)
-> Lens'
(Block TestBlockHeader era) (Hash HASH EraIndependentBlockBody)
forall a b. (a -> b) -> a -> b
$
\b :: Block TestBlockHeader era
b@Block {TestBlockHeader
blockHeader :: forall h era. Block h era -> h
blockHeader :: TestBlockHeader
blockHeader} Hash HASH EraIndependentBlockBody
tbhBHash -> Block TestBlockHeader era
b {blockHeader = blockHeader {tbhBHash}}
slotNoBlockHeaderL :: Lens' (Block TestBlockHeader era) SlotNo
slotNoBlockHeaderL =
(Block TestBlockHeader era -> SlotNo)
-> (Block TestBlockHeader era
-> SlotNo -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) SlotNo
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (TestBlockHeader -> SlotNo
tbhSlot (TestBlockHeader -> SlotNo)
-> (Block TestBlockHeader era -> TestBlockHeader)
-> Block TestBlockHeader era
-> SlotNo
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block TestBlockHeader era -> TestBlockHeader
forall h era. Block h era -> h
blockHeader) ((Block TestBlockHeader era -> SlotNo -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) SlotNo)
-> (Block TestBlockHeader era
-> SlotNo -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) SlotNo
forall a b. (a -> b) -> a -> b
$
\b :: Block TestBlockHeader era
b@Block {TestBlockHeader
blockHeader :: forall h era. Block h era -> h
blockHeader :: TestBlockHeader
blockHeader} SlotNo
tbhSlot -> Block TestBlockHeader era
b {blockHeader = blockHeader {tbhSlot}}
protVerBlockHeaderL :: Lens' (Block TestBlockHeader era) ProtVer
protVerBlockHeaderL =
(Block TestBlockHeader era -> ProtVer)
-> (Block TestBlockHeader era
-> ProtVer -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) ProtVer
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (TestBlockHeader -> ProtVer
tbhProtVer (TestBlockHeader -> ProtVer)
-> (Block TestBlockHeader era -> TestBlockHeader)
-> Block TestBlockHeader era
-> ProtVer
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Block TestBlockHeader era -> TestBlockHeader
forall h era. Block h era -> h
blockHeader) ((Block TestBlockHeader era
-> ProtVer -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) ProtVer)
-> (Block TestBlockHeader era
-> ProtVer -> Block TestBlockHeader era)
-> Lens' (Block TestBlockHeader era) ProtVer
forall a b. (a -> b) -> a -> b
$
\b :: Block TestBlockHeader era
b@Block {TestBlockHeader
blockHeader :: forall h era. Block h era -> h
blockHeader :: TestBlockHeader
blockHeader} ProtVer
tbhProtVer -> Block TestBlockHeader era
b {blockHeader = blockHeader {tbhProtVer}}
mkTestBlockHeaderNoNonce :: EraBlockHeader h era => Block h era -> TestBlockHeader
Block h era
block =
TestBlockHeader
{ tbhIssuer :: KeyHash BlockIssuer
tbhIssuer = Block h era
block Block h era
-> Getting
(KeyHash BlockIssuer) (Block h era) (KeyHash BlockIssuer)
-> KeyHash BlockIssuer
forall s a. s -> Getting a s a -> a
^. Getting (KeyHash BlockIssuer) (Block h era) (KeyHash BlockIssuer)
SimpleGetter (Block h era) (KeyHash BlockIssuer)
forall h era.
EraBlockHeader h era =>
SimpleGetter (Block h era) (KeyHash BlockIssuer)
blockIssuerBlockHeaderG
, tbhHSize :: Int
tbhHSize = Block h era
block Block h era -> Getting Int (Block h era) Int -> Int
forall s a. s -> Getting a s a -> a
^. Getting Int (Block h era) Int
SimpleGetter (Block h era) Int
forall h era.
EraBlockHeader h era =>
SimpleGetter (Block h era) Int
blockHeaderSizeBlockHeaderG
, tbhBSize :: Word32
tbhBSize = Block h era
block Block h era -> Getting Word32 (Block h era) Word32 -> Word32
forall s a. s -> Getting a s a -> a
^. Getting Word32 (Block h era) Word32
forall h era. EraBlockHeader h era => Lens' (Block h era) Word32
Lens' (Block h era) Word32
blockBodySizeBlockHeaderL
, tbhBHash :: Hash HASH EraIndependentBlockBody
tbhBHash = Block h era
block Block h era
-> Getting
(Hash HASH EraIndependentBlockBody)
(Block h era)
(Hash HASH EraIndependentBlockBody)
-> Hash HASH EraIndependentBlockBody
forall s a. s -> Getting a s a -> a
^. Getting
(Hash HASH EraIndependentBlockBody)
(Block h era)
(Hash HASH EraIndependentBlockBody)
forall h era.
EraBlockHeader h era =>
Lens' (Block h era) (Hash HASH EraIndependentBlockBody)
Lens' (Block h era) (Hash HASH EraIndependentBlockBody)
blockBodyHashBlockHeaderL
, tbhSlot :: SlotNo
tbhSlot = Block h era
block Block h era -> Getting SlotNo (Block h era) SlotNo -> SlotNo
forall s a. s -> Getting a s a -> a
^. Getting SlotNo (Block h era) SlotNo
forall h era. EraBlockHeader h era => Lens' (Block h era) SlotNo
Lens' (Block h era) SlotNo
slotNoBlockHeaderL
, tbhPrevNonce :: Maybe Nonce
tbhPrevNonce = Maybe Nonce
forall a. Maybe a
Nothing
, tbhProtVer :: ProtVer
tbhProtVer = Block h era
block Block h era -> Getting ProtVer (Block h era) ProtVer -> ProtVer
forall s a. s -> Getting a s a -> a
^. Getting ProtVer (Block h era) ProtVer
forall h era. EraBlockHeader h era => Lens' (Block h era) ProtVer
Lens' (Block h era) ProtVer
protVerBlockHeaderL
}