Skip to content

Commit 2a1c03c

Browse files
WIP on fingertree instance
1 parent 9c7d40b commit 2a1c03c

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

ouroboros-consensus-diffusion/ouroboros-consensus-diffusion.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ library unstable-consensus-conformance-testlib
282282
containers,
283283
contra-tracer,
284284
directory,
285+
fingertree,
285286
fs-api ^>=0.4,
286287
fs-sim ^>=0.4,
287288
hashable,

ouroboros-consensus-diffusion/test/consensus-test/Test/Consensus/OrphanInstances.hs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
{-# LANGUAGE DeriveGeneric #-}
2+
{-# LANGUAGE DerivingStrategies #-}
3+
{-# LANGUAGE DerivingVia #-}
24
{-# LANGUAGE StandaloneDeriving #-}
35
{-# OPTIONS_GHC -Wno-orphans #-}
46

@@ -9,23 +11,29 @@ module Test.Consensus.OrphanInstances () where
911
import Cardano.Slotting.Time (SlotLength)
1012
import Control.Monad.Class.MonadTime.SI (Time)
1113
import Data.Aeson
12-
( FromJSON
13-
, ToJSON (toEncoding)
14-
, defaultOptions
15-
, genericToEncoding
14+
import Data.FingerTree (FingerTree (..))
15+
import Data.FingerTree.Strict
16+
( Measured
17+
, StrictFingerTree
18+
, forceToStrict
19+
, fromList
20+
, fromStrict
1621
)
17-
import Data.FingerTree.Strict (StrictFingerTree)
22+
import Data.Foldable (toList)
1823
import GHC.Generics
1924
import Ouroboros.Consensus.Block.Abstract (GenesisWindow (..))
2025
import Ouroboros.Consensus.Config (SecurityParam (..))
2126

2227
-- import Ouroboros.Network.AnchoredFragment (AnchoredFragment, AnchoredSeq)
28+
29+
import Data.ByteString (StrictByteString)
2330
import Ouroboros.Network.AnchoredSeq (AnchoredSeq (..))
2431
import Test.Consensus.BlockTree (BlockTree (..), BlockTreeBranch (..))
2532
import Test.Consensus.PointSchedule
2633
( BlockFetchTimeout (..)
2734
, CSJParams (..)
2835
, ChainSyncTimeout (..)
36+
, ForecastRange (..)
2937
, GenesisTest (..)
3038
, LoPBucketParams (..)
3139
, PointSchedule (..)
@@ -50,6 +58,10 @@ deriving instance Generic GenesisWindow
5058
instance ToJSON GenesisWindow
5159
instance FromJSON GenesisWindow
5260

61+
deriving instance Generic ForecastRange
62+
instance ToJSON ForecastRange
63+
instance FromJSON ForecastRange
64+
5365
deriving instance Generic Delta
5466
instance ToJSON Delta
5567
instance FromJSON Delta
@@ -88,8 +100,14 @@ deriving instance Generic (BlockTreeBranch blk)
88100
instance ToJSON blk => ToJSON (BlockTreeBranch blk)
89101
instance FromJSON blk => FromJSON (BlockTreeBranch blk)
90102

91-
instance (ToJSON v, ToJSON a, ToJSON b) => ToJSON (AnchoredSeq v a b)
92-
instance (FromJSON v, FromJSON a, FromJSON b) => FromJSON (AnchoredSeq v a b)
103+
instance (MeasuredWith v a b, ToJSON v, ToJSON a, ToJSON b) => ToJSON (AnchoredSeq v a b)
104+
instance (Anchorable v a b, FromJSON v, FromJSON a, FromJSON b) => FromJSON (AnchoredSeq v a b)
105+
106+
instance (Measured v a, FromJSON a) => FromJSON (StrictFingerTree v a) where
107+
parseJSON v = fromList <$> parseJSON v
108+
109+
instance ToJSON a => ToJSON (StrictFingerTree v a) where
110+
toJSON sft = toJSON $ toList sft
93111

94112
-- *** 'PointSchedule' field related instances
95113

0 commit comments

Comments
 (0)