Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit cd10c82

Browse files
committed
[CDEC-552] Add golden and round-trip tests for types in Pos.Core.Block
1 parent d3e9d56 commit cd10c82

25 files changed

+728
-65
lines changed

core/test/Test/Pos/Core/Bi.hs

Lines changed: 308 additions & 39 deletions
Large diffs are not rendered by default.

core/test/Test/Pos/Core/Gen.hs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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
167168
import Pos.Binary.Class (Bi, Raw (..), asBinary)
168169
import 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)
174176
import Pos.Core.Common (AddrAttributes (..), AddrSpendingData (..),
175177
AddrStakeDistribution (..), AddrType (..), Address (..),
176178
BlockCount (..), ChainDifficulty (..), Coeff (..), Coin (..),
@@ -229,7 +231,7 @@ genBlockBodyAttributes = pure $ mkAttributes ()
229231

230232
genBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen BlockHeader
231233
genBlockHeader 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

261263
genGenesisBody :: Gen GenesisBody
262264
genGenesisBody = GenesisBody <$> genSlotLeaders
@@ -269,8 +271,11 @@ genGenesisConsensusData =
269271

270272
genGenesisHash :: Gen GenesisHash
271273
genGenesisHash = 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

275280
genGenesisProof :: Gen GenesisProof
276281
genGenesisProof = GenesisProof <$> genAbstractHash genSlotLeaders
@@ -285,11 +290,12 @@ genMainBody pm =
285290

286291
genMainBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen MainBlockHeader
287292
genMainBlockHeader 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
446452
genStakesList = Gen.list range gen
447453
where
448454
gen = (,) <$> genStakeholderId <*> genCoin
449-
range = Range.constant 0 10
455+
range = Range.linear 0 10
450456

451457
genStakesMap :: Gen StakesMap
452458
genStakesMap = genCustomHashMap genStakeholderId genCoin
@@ -704,7 +710,7 @@ genOpening = snd <$> genCommitmentOpening
704710

705711
genOpeningsMap :: Gen OpeningsMap
706712
genOpeningsMap = 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

715721
genSharesMap :: Gen SharesMap
716722
genSharesMap = 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

976982
genUpsData :: Gen (HM.HashMap SystemTag UpdateData)
977983
genUpsData = 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

10001006
genMerkleTree :: 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

10031009
genMerkleRoot :: Bi a => Gen a -> Gen (MerkleRoot a)
10041010
genMerkleRoot genA = mtRoot <$> genMerkleTree genA
@@ -1012,7 +1018,7 @@ customHashMapGen
10121018
=> Gen k -> Gen v -> Gen (HM.HashMap k v)
10131019
customHashMapGen keyGen valGen =
10141020
HM.fromList
1015-
<$> (Gen.list (Range.constant 1 10) $ (,) <$> keyGen <*> valGen)
1021+
<$> (Gen.list (Range.linear 1 10) $ (,) <$> keyGen <*> valGen)
10161022

10171023
genBase16Bs :: Gen ByteString
10181024
genBase16Bs = B16.encode <$> genBytes 32
@@ -1035,7 +1041,7 @@ genCustomHashMap
10351041
genCustomHashMap 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

10401046
genMillisecond :: Gen Millisecond
10411047
genMillisecond = fromMicroseconds <$> Gen.integral (Range.constant 0 1000000)

core/test/cardano-sl-core-test.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ library
2525
build-depends: QuickCheck
2626
, base
2727
, bytestring
28+
, base16-bytestring
2829
, cardano-sl-binary
2930
, cardano-sl-core
3031
, cardano-sl-crypto
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"Network":"ggv:32313"}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"PubKey":"cae922c720ea93e5ead49b4652fb24caf4948e31eee378a4c4513f11"}

core/test/golden/BlockBodyAttributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a0
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a0

core/test/golden/BlockHeaderMain

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
000: 85005820125bbf1daefc2897d8db4899
2+
010: 9d09b4eae439f0dfed83bc43246ca039
3+
020: fa4b121384830158205e46ceb20538af
4+
030: eeb45cb8f7030512af34b4ff363a8c7e
5+
040: 94d441a257500ffab75820e32c9549bc
6+
050: 3acbe0e848b2d7ad26331b7d84975803
7+
060: 64cb2bc6c8bda9aa0975b88302582036
8+
070: e799e376b8a5bc0127b933dcef926c56
9+
080: d30f00b1d717c498b6f23d4f2c4e5558
10+
090: 209fbbb2f0eff7472fe19e462fd88c49
11+
0a0: 5ac90f9ad58c4dd6cb204515710b0fe1
12+
0b0: 325820b5f2d3cb5a94d3e7dc9d812ebf
13+
0c0: 56003e4f9fb02296034f5d5bcd073811
14+
0d0: ebe6b35820a9d2e0af73f175d0eab5d9
15+
0e0: 6c8b480edfa8226f4c2a9037d637f6aa
16+
0f0: 3cd9f3b57584820b182f5840644c586b
17+
100: 756573565a394a6648676a726374734c
18+
110: 4674324e766f76586e6368734f765830
19+
120: 3559364c6f686c544e74356d6b504668
20+
130: 556f587531455a534a5449798119270f
21+
140: 82005840c15b8d60075f29a8d15a2525
22+
150: 96f622a4b590402be5eb8b66f3acbc55
23+
160: c9d4bb6db32987df80f22954de7a5bb8
24+
170: c4974299bec72b68b24719b1d6db0d62
25+
180: d3628b0984830101018266476f6c6465
26+
190: 6e1863a058204ba92aa320c60acc9ad7
27+
1a0: b9a64f2eda55c4d2ec28e604faf18670
28+
1b0: 8b4f0c4e8edf

core/test/golden/BlockHeader_Genesis

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
00: 820085005820f7077d40c94a36e7df95
2+
10: b6f99a86f08bcf06ea3b24e68dd30393
3+
20: 33fa53141775582074840ea4e9e28b2f
4+
30: 906a1530270131bc5ab07106024d6f9c
5+
40: 8f4773e478c343a2820b810081a0

core/test/golden/BlockSignature

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
00: 8200584067d583469c7bb28c232d5cea
2+
10: 2d04f4d21c5d36ab25925c7e339c69f2
3+
20: 29b5c86ccaa76fa4f7641f36d0489c3e
4+
30: 691db8393b86ce1b13e19d5c12816a68
5+
40: 7daf0b0c

core/test/golden/BlockSignature_Heavy

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
000: 820282840558406269376936644c586b
2+
010: 756573565a394a6648676a726374734c
3+
020: 4674324e766f76586e6368734f765830
4+
030: 3559364c6f686c544e74356d6b504668
5+
040: 556f587531455a58404a30754b446269
6+
050: 376936644c586b756573565a394a6648
7+
060: 676a726374734c4674324e766f76586e
8+
070: 6368734f7658303559364c6f686c544e
9+
080: 74356d6b504668556f58400f1ada96b5
10+
090: cc534e2b1b98f8d19f4a429aa08141b0
11+
0a0: 0a1acd30dffaae9ef7e8ffd55692fe2f
12+
0b0: 13ecf3c791eddcb942d5554a7cb382f5
13+
0c0: ba09229846204dbdb8f20c5840729c20
14+
0d0: cb28fa68337332305a7fad5313c569d9
15+
0e0: bee5bff67c4366af7ca6ec285643b430
16+
0f0: 8f3cf8e7512d1b8ebde561add1466b10
17+
100: 30e3f1983989b3be8a10233c0a

core/test/golden/BlockSignature_Light

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
000: 82018284820718585840626937693664
2+
010: 4c586b756573565a394a6648676a7263
3+
020: 74734c4674324e766f76586e6368734f
4+
030: 7658303559364c6f686c544e74356d6b
5+
040: 504668556f587531455a58404a30754b
6+
050: 446269376936644c586b756573565a39
7+
060: 4a6648676a726374734c4674324e766f
8+
070: 76586e6368734f7658303559364c6f68
9+
080: 6c544e74356d6b504668556f5840e759
10+
090: 78870f7701b4af761b259f544a8ca6f9
11+
0a0: 36e26c931a2e0867a91037f02d00713d
12+
0b0: 2f63a4c8b69767eef9a37dce487c53c4
13+
0c0: 9bf3b5d0b2e847b66f8175ecc00e5840
14+
0d0: 729c20cb28fa68337332305a7fad5313
15+
0e0: c569d9bee5bff67c4366af7ca6ec2856
16+
0f0: 43b4308f3cf8e7512d1b8ebde561add1
17+
100: 466b1030e3f1983989b3be8a10233c0a

core/test/golden/GenesisBlockHeader

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
00: 85005820f7077d40c94a36e7df95b6f9
2+
10: 9a86f08bcf06ea3b24e68dd3039333fa
3+
20: 53141775582074840ea4e9e28b2f906a
4+
30: 1530270131bc5ab07106024d6f9c8f47
5+
40: 73e478c343a2820b810081a0

core/test/golden/GenesisBody

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
00: 9f581c5125b558daa14b5338e904cc2a
2+
10: 75a8b7b3a4738de9cb28a6819576db58
3+
20: 1cd25597dd7d416ff91e12c8ca78c6bc
4+
30: 9a1327cc56119969a7d18ea921581c66
5+
40: 79321696358dac9d16cf8befe4adf181
6+
50: 8096fd2a329c200fc2ebcfff

core/test/golden/GenesisConsensusData

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
820e8119270f

core/test/golden/GenesisProof

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
00: 582074840ea4e9e28b2f906a15302701
2+
10: 31bc5ab07106024d6f9c8f4773e478c3
3+
20: 43a2

core/test/golden/HeaderHash

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
00: 5820125bbf1daefc2897d8db48999d09
2+
10: b4eae439f0dfed83bc43246ca039fa4b
3+
20: 1213

core/test/golden/MainBlockHeader

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
000: 85075820125bbf1daefc2897d8db4899
2+
010: 9d09b4eae439f0dfed83bc43246ca039
3+
020: fa4b121384830158205e46ceb20538af
4+
030: eeb45cb8f7030512af34b4ff363a8c7e
5+
040: 94d441a257500ffab75820e32c9549bc
6+
050: 3acbe0e848b2d7ad26331b7d84975803
7+
060: 64cb2bc6c8bda9aa0975b88302582036
8+
070: e799e376b8a5bc0127b933dcef926c56
9+
080: d30f00b1d717c498b6f23d4f2c4e5558
10+
090: 209fbbb2f0eff7472fe19e462fd88c49
11+
0a0: 5ac90f9ad58c4dd6cb204515710b0fe1
12+
0b0: 325820b5f2d3cb5a94d3e7dc9d812ebf
13+
0c0: 56003e4f9fb02296034f5d5bcd073811
14+
0d0: ebe6b35820a9d2e0af73f175d0eab5d9
15+
0e0: 6c8b480edfa8226f4c2a9037d637f6aa
16+
0f0: 3cd9f3b57584820b182f5840644c586b
17+
100: 756573565a394a6648676a726374734c
18+
110: 4674324e766f76586e6368734f765830
19+
120: 3559364c6f686c544e74356d6b504668
20+
130: 556f587531455a534a5449798119270f
21+
140: 82005840a2c886ca7178bd19241b8a55
22+
150: ee1f0bad1be50607393d361113291192
23+
160: 76717f4b3a9dca216fc2ef38ad4dc1a8
24+
170: c3b07887d759a0a489e569fbb13150cb
25+
180: 66fc060184830101018266476f6c6465
26+
190: 6e1863a058204ba92aa320c60acc9ad7
27+
1a0: b9a64f2eda55c4d2ec28e604faf18670
28+
1b0: 8b4f0c4e8edf

0 commit comments

Comments
 (0)