{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UndecidableInstances #-}
module Ouroboros.Consensus.Peras.Error.Mock
( MockPerasError (..)
) where
import Control.Exception (Exception)
import Data.Typeable (Typeable)
import GHC.Generics (Generic)
import NoThunks.Class (NoThunks)
import Ouroboros.Consensus.Block.SupportsPeras
( IsPerasError (..)
, PerasVotingCommitteeError
, VoteWeight
)
import Ouroboros.Consensus.Peras.Voting.Adapter (PerasConversionError)
data MockPerasError blk
= PerasVotingCommitteeError
(PerasVotingCommitteeError blk)
| PerasVotingConversionError
PerasConversionError
| PerasQuorumNotReachedError
VoteWeight
| InputStakeDistrIsEmpty
deriving instance
Show (PerasVotingCommitteeError blk) =>
Show (MockPerasError blk)
deriving instance
Eq (PerasVotingCommitteeError blk) =>
Eq (MockPerasError blk)
deriving instance
NoThunks (PerasVotingCommitteeError blk) =>
NoThunks (MockPerasError blk)
deriving instance
Generic (MockPerasError blk)
deriving instance
( Typeable blk
, Show (PerasVotingCommitteeError blk)
) =>
Exception (MockPerasError blk)
instance IsPerasError (MockPerasError blk) blk where
injectVotingCommitteeError :: PerasVotingCommitteeError blk -> MockPerasError blk
injectVotingCommitteeError = PerasVotingCommitteeError blk -> MockPerasError blk
forall blk. PerasVotingCommitteeError blk -> MockPerasError blk
PerasVotingCommitteeError
injectConversionError :: PerasConversionError -> MockPerasError blk
injectConversionError = PerasConversionError -> MockPerasError blk
forall blk. PerasConversionError -> MockPerasError blk
PerasVotingConversionError
injectQuorumNotReachedError :: VoteWeight -> MockPerasError blk
injectQuorumNotReachedError = VoteWeight -> MockPerasError blk
forall blk. VoteWeight -> MockPerasError blk
PerasQuorumNotReachedError