@@ -10,6 +10,7 @@ module Test.Pos.Core.Gen
1010 , genGenesisConsensusData
1111 , genGenesisHash
1212 , genGenesisProof
13+ , genHeaderHash
1314 , genMainBlockHeader
1415 , genMainBody
1516 , genMainConsensusData
@@ -167,10 +168,11 @@ import qualified Hedgehog.Range as Range
167168import Pos.Binary.Class (Bi , Raw (.. ), asBinary )
168169import Pos.Core.Block (BlockBodyAttributes , BlockHeader (.. ), BlockHeaderAttributes ,
169170 BlockSignature (.. ), GenesisBlockHeader , GenesisBody (.. ),
170- GenesisConsensusData (.. ), GenesisProof (.. ), MainBlockHeader ,
171- MainBody (.. ), MainConsensusData (.. ), MainExtraBodyData (.. ),
171+ GenesisConsensusData (.. ), GenesisExtraHeaderData (.. ),
172+ GenesisProof (.. ), HeaderHash , MainBlockHeader , MainBody (.. ),
173+ MainConsensusData (.. ), MainExtraBodyData (.. ),
172174 MainExtraHeaderData (.. ), MainProof (.. ), MainToSign (.. ),
173- mkGenesisHeader , mkMainHeader )
175+ mkGenericHeader , mkMainHeaderExplicit )
174176import Pos.Core.Common (AddrAttributes (.. ), AddrSpendingData (.. ),
175177 AddrStakeDistribution (.. ), AddrType (.. ), Address (.. ),
176178 BlockCount (.. ), ChainDifficulty (.. ), Coeff (.. ), Coin (.. ),
@@ -229,7 +231,7 @@ genBlockBodyAttributes = pure $ mkAttributes ()
229231
230232genBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen BlockHeader
231233genBlockHeader pm pc =
232- Gen. choice [ BlockHeaderGenesis <$> genGenesisBlockHeader pm pc
234+ Gen. choice [ BlockHeaderGenesis <$> genGenesisBlockHeader pm
233235 , BlockHeaderMain <$> genMainBlockHeader pm pc
234236 ]
235237
@@ -247,16 +249,16 @@ genBlockSignature pm pc =
247249 <$> genProxySignature (genMainToSign pm pc) genHeavyDlgIndex
248250 ]
249251
250- genGenesisBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen GenesisBlockHeader
251- genGenesisBlockHeader pm pc =
252- mkGenesisHeader pm
253- <$> Gen. choice gens
254- <*> genEpochIndex
255- <*> genGenesisBody
256- where
257- gens = [ Left <$> genGenesisHash
258- , Right <$> genBlockHeader pm pc
259- ]
252+ genGenesisBlockHeader :: ProtocolMagic -> Gen GenesisBlockHeader
253+ genGenesisBlockHeader pm = do
254+ epoch <- genEpochIndex
255+ body <- genGenesisBody
256+ prevHash <- coerce <$> genTextHash
257+ difficulty <- genChainDifficulty
258+ let consensus = const ( GenesisConsensusData {_gcdEpoch = epoch
259+ ,_gcdDifficulty = difficulty})
260+ gehd = GenesisExtraHeaderData $ mkAttributes ()
261+ pure (mkGenericHeader pm prevHash body consensus gehd)
260262
261263genGenesisBody :: Gen GenesisBody
262264genGenesisBody = GenesisBody <$> genSlotLeaders
@@ -269,8 +271,11 @@ genGenesisConsensusData =
269271
270272genGenesisHash :: Gen GenesisHash
271273genGenesisHash = do
272- sampleText <- Gen. text Range. constantBounded Gen. alphaNum
273- pure $ GenesisHash (coerce (hash sampleText :: Hash Text ))
274+ th <- genTextHash
275+ pure (GenesisHash (coerce th))
276+
277+ genHeaderHash :: Gen HeaderHash
278+ genHeaderHash = coerce <$> genTextHash
274279
275280genGenesisProof :: Gen GenesisProof
276281genGenesisProof = GenesisProof <$> genAbstractHash genSlotLeaders
@@ -285,11 +290,12 @@ genMainBody pm =
285290
286291genMainBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen MainBlockHeader
287292genMainBlockHeader pm pc =
288- mkMainHeader pm
289- <$> (Left <$> genGenesisHash)
293+ mkMainHeaderExplicit pm
294+ <$> genHeaderHash
295+ <*> genChainDifficulty
290296 <*> genSlotId pc
291297 <*> genSecretKey
292- <*> genProxySKBlockInfo pm
298+ <*> pure Nothing
293299 <*> genMainBody pm
294300 <*> genMainExtraHeaderData
295301
@@ -446,7 +452,7 @@ genStakesList :: Gen StakesList
446452genStakesList = Gen. list range gen
447453 where
448454 gen = (,) <$> genStakeholderId <*> genCoin
449- range = Range. constant 0 10
455+ range = Range. linear 0 10
450456
451457genStakesMap :: Gen StakesMap
452458genStakesMap = genCustomHashMap genStakeholderId genCoin
@@ -704,7 +710,7 @@ genOpening = snd <$> genCommitmentOpening
704710
705711genOpeningsMap :: Gen OpeningsMap
706712genOpeningsMap = do
707- hMapSize <- Gen. int (Range. constant 0 20 )
713+ hMapSize <- Gen. int (Range. linear 0 10 )
708714 stakeholderId <- Gen. list (Range. singleton hMapSize) genStakeholderId
709715 opening <- Gen. list (Range. singleton hMapSize) genOpening
710716 pure $ HM. fromList $ zip stakeholderId opening
@@ -714,7 +720,7 @@ genSharesDistribution = genCustomHashMap genStakeholderId genWord16
714720
715721genSharesMap :: Gen SharesMap
716722genSharesMap = do
717- hMapSize <- Gen. int (Range. constant 0 20 )
723+ hMapSize <- Gen. int (Range. linear 0 10 )
718724 stakeholderId <- Gen. list (Range. singleton hMapSize) genStakeholderId
719725 innerSharesMap <- Gen. list (Range. singleton hMapSize) genInnerSharesMap
720726 pure $ HM. fromList $ zip stakeholderId innerSharesMap
@@ -975,7 +981,7 @@ genUpId pm = genAbstractHash (genUpdateProposal pm)
975981
976982genUpsData :: Gen (HM. HashMap SystemTag UpdateData )
977983genUpsData = do
978- hMapSize <- Gen. int (Range. constant 0 20 )
984+ hMapSize <- Gen. int (Range. linear 0 20 )
979985 sysTagList <- Gen. list (Range. singleton hMapSize) genSystemTag
980986 upDataList <- Gen. list (Range. singleton hMapSize) genUpdateData
981987 pure $ HM. fromList $ zip sysTagList upDataList
@@ -998,7 +1004,7 @@ genAttributes genA = mkAttributes <$> genA
9981004----------------------------------------------------------------------------
9991005
10001006genMerkleTree :: Bi a => Gen a -> Gen (MerkleTree a )
1001- genMerkleTree genA = mkMerkleTree <$> Gen. list (Range. constant 0 10 ) genA
1007+ genMerkleTree genA = mkMerkleTree <$> Gen. list (Range. linear 0 10 ) genA
10021008
10031009genMerkleRoot :: Bi a => Gen a -> Gen (MerkleRoot a )
10041010genMerkleRoot genA = mtRoot <$> genMerkleTree genA
@@ -1012,7 +1018,7 @@ customHashMapGen
10121018 => Gen k -> Gen v -> Gen (HM. HashMap k v )
10131019customHashMapGen keyGen valGen =
10141020 HM. fromList
1015- <$> (Gen. list (Range. constant 1 10 ) $ (,) <$> keyGen <*> valGen)
1021+ <$> (Gen. list (Range. linear 1 10 ) $ (,) <$> keyGen <*> valGen)
10161022
10171023genBase16Bs :: Gen ByteString
10181024genBase16Bs = B16. encode <$> genBytes 32
@@ -1035,7 +1041,7 @@ genCustomHashMap
10351041genCustomHashMap genK genV = HM. fromList <$> Gen. list range gen
10361042 where
10371043 gen = (,) <$> genK <*> genV
1038- range = Range. constant 0 10
1044+ range = Range. linear 0 10
10391045
10401046genMillisecond :: Gen Millisecond
10411047genMillisecond = fromMicroseconds <$> Gen. integral (Range. constant 0 1000000 )
0 commit comments