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

Commit a85c456

Browse files
committed
[CDEC-500] Add golden tests for Address
Since we are modifying this for CO-354, and it's quite important to preserve backwards compatibility of Addresses, I've added 5 golden tests to ensure the various configurations of Addresses will have proper test coverage.
1 parent 8d9e2b8 commit a85c456

File tree

7 files changed

+97
-1
lines changed

7 files changed

+97
-1
lines changed

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

+49
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ module Test.Pos.Core.ExampleHelpers
33

44
exampleAddrSpendingData_PubKey
55
, exampleAddress
6+
, exampleAddress1
7+
, exampleAddress2
8+
, exampleAddress3
9+
, exampleAddress4
610
, exampleBlockVersion
711
, exampleBlockVersionData
812
, exampleBlockVersionModifier
@@ -83,6 +87,7 @@ import Data.Fixed (Fixed (..))
8387
import qualified Data.HashMap.Strict as HM
8488
import Data.List (zipWith4, (!!))
8589
import Data.List.NonEmpty (fromList)
90+
import qualified Data.Map as M
8691
import Data.Maybe (fromJust)
8792
import qualified Data.Text as T
8893
import Data.Time.Units (Millisecond)
@@ -564,6 +569,50 @@ exampleAddress = makeAddress exampleAddrSpendingData_PubKey attrs
564569
attrs = AddrAttributes hap BootstrapEraDistr
565570
hap = Just (HDAddressPayload (getBytes 32 32))
566571

572+
exampleAddress1 :: Address
573+
exampleAddress1 = makeAddress easd attrs
574+
where
575+
easd = PubKeyASD pk
576+
[pk] = examplePublicKeys 24 1
577+
attrs = AddrAttributes hap BootstrapEraDistr
578+
hap = Nothing
579+
580+
exampleAddress2 :: Address
581+
exampleAddress2 = makeAddress easd attrs
582+
where
583+
easd = RedeemASD exampleRedeemPublicKey
584+
attrs = AddrAttributes hap asd
585+
hap = Just (HDAddressPayload (getBytes 15 32))
586+
asd = SingleKeyDistr exampleStakeholderId
587+
588+
exampleAddress3 :: Address
589+
exampleAddress3 = makeAddress easd attrs
590+
where
591+
easd = ScriptASD exampleScript
592+
attrs = AddrAttributes hap exampleMultiKeyDistr
593+
hap = Just (HDAddressPayload (getBytes 17 32))
594+
595+
exampleAddress4 :: Address
596+
exampleAddress4 = makeAddress easd attrs
597+
where
598+
easd = UnknownASD 7 "test value"
599+
attrs = AddrAttributes Nothing (SingleKeyDistr sId)
600+
[sId] = exampleStakeholderIds 7 1
601+
602+
exampleMultiKeyDistr :: AddrStakeDistribution
603+
exampleMultiKeyDistr = case mkMultiKeyDistr (M.fromList pairs) of
604+
Left err -> error $
605+
"exampleMultiKeyDistr: improperly constructed stake map: " <> show err
606+
Right asd -> asd
607+
where
608+
pairs = zip stakeIds (map CoinPortion (remainderCP : coinPortions))
609+
stakeIds = map abstractHash (examplePublicKeys 7 4)
610+
coinPortions = [ (10 :: Word64) ^ (12 :: Word64)
611+
, ( 7 :: Word64) ^ (11 :: Word64)
612+
, ( 6 :: Word64) ^ (14 :: Word64)
613+
]
614+
remainderCP = coinPortionDenominator - sum coinPortions
615+
567616
exampleGenesisConfiguration_GCSrc :: GenesisConfiguration
568617
exampleGenesisConfiguration_GCSrc =
569618
GCSrc "dRaMwdYsH3QA3dChe" (abstractHash (Raw "Test"))

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

+43-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,49 @@ import Test.Pos.Util.Tripping (discoverRoundTrip,
2222
import Universum
2323

2424
--------------------------------------------------------------------------------
25-
-- GensisConfiguration
25+
-- Address
26+
--------------------------------------------------------------------------------
27+
28+
golden_Address0 :: Property
29+
golden_Address0 =
30+
goldenTestJSON
31+
exampleAddress
32+
"test/golden/json/Address0"
33+
34+
golden_Address1 :: Property
35+
golden_Address1 =
36+
goldenTestJSON
37+
exampleAddress1
38+
"test/golden/json/Address1"
39+
40+
golden_Address2 :: Property
41+
golden_Address2 =
42+
goldenTestJSON
43+
exampleAddress2
44+
"test/golden/json/Address2"
45+
46+
golden_Address3 :: Property
47+
golden_Address3 =
48+
goldenTestJSON
49+
exampleAddress3
50+
"test/golden/json/Address3"
51+
52+
golden_Address4 :: Property
53+
golden_Address4 =
54+
goldenTestJSON
55+
exampleAddress4
56+
"test/golden/json/Address4"
57+
58+
roundTripAddressShow :: Property
59+
roundTripAddressShow =
60+
eachOf 100 genAddress roundTripsAesonShow
61+
62+
roundTripAddressBuildable :: Property
63+
roundTripAddressBuildable =
64+
eachOf 100 genAddress roundTripsAesonBuildable
65+
66+
--------------------------------------------------------------------------------
67+
-- GenesisConfiguration
2668
--------------------------------------------------------------------------------
2769

2870
golden_GenesisConfiguration_GCSpec :: Property

core/test/golden/json/Address0

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"2RhQhCGqYPDpFgTsnBTbnvPvCwpqAkjwLqQkWpkqXbLRmNxd4xNd262nGsr8JiynyKRUeMLSJ9Ntho9i76uvBTrVXdJJG5yiNLb8frmUe5qX7E"

core/test/golden/json/Address1

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"Ae2tdPwUPEZDoUnyXuAgqzhkjNXNJeiZ5nqwprg9sArZmRNjySfJ5uz4FjB"

core/test/golden/json/Address2

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"dRNpRgY7sgwXaGbEZQ7KtFprY5PE3sxejht9kFEKLmSowgUegSinCjx3yuKGHQbRHL2EUP89BuAurEScfrgWxahCjD1M9QKYoTj5KrbR5TDnqBE3oSNx7UcXhrGKM9aau48SASu8i88Sq8hPb3z5K662spTXX"

core/test/golden/json/Address3

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"a2x5MVsL5Pr1SESUZbGb7d64coe2VpRJhEFsYCUHfaimAE3wvmNHd44H7ue1wFx1RqrS9vnAmTVri19FttwaRLWG5L2rLMe1tCSzZ4zJjeUwej8kEX4VmYbL7t7o1rmucebNvz8qGod2s6LKCkAxN6dWVv9jZ3gCkWrNsXq3JeSjaBLPT7RNwSExRmPAwJ6geZmadnKSArbiPjYXkaJa5GQyDUYbni8jCyXmMHB7Qsj1Pgc7qCKA7AebV13kADRv3wSbMgWEAbBrxEmBRnHgXw5Nh6EJ5n7ejVYJAJY3kJ8Q2xisLJxW54Y48BK8a4AW7M3fU"

core/test/golden/json/Address4

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"5FCjkr138i9wjRVwawmYMd4Vc9KxU7TuQhMyjMGpnykg9yb2qMpUCerDFzXvfAJMFgJTHyD7Sn4ybLXm2M6zeWAaWe7ctjq5QjVL427vGRx"

0 commit comments

Comments
 (0)