Skip to content

Commit b07eb66

Browse files
committed
Re-enabled some tests in Conway
1 parent 676102b commit b07eb66

File tree

4 files changed

+38
-33
lines changed
  • eras/conway/impl
  • libs
    • cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary
    • cardano-ledger-core/cddl/Cardano/Ledger/Core

4 files changed

+38
-33
lines changed

eras/conway/impl/test/Test/Cardano/Ledger/Conway/Binary/CddlSpec.hs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Cardano.Ledger.Conway.Governance (GovAction, ProposalProcedure, VotingPro
1515
import Cardano.Ledger.Conway.HuddleSpec (conwayCDDL)
1616
import Cardano.Ledger.Core
1717
import Cardano.Ledger.Plutus.Data (Data, Datum)
18+
import Test.Cardano.Ledger.Alonzo.Arbitrary (genNonEmptyRedeemers)
1819
import Test.Cardano.Ledger.Binary.Cddl (
1920
beforeAllCddlFile,
2021
cddlDecoderEquivalenceSpec,
@@ -26,6 +27,7 @@ import Test.Cardano.Ledger.Binary.Cuddle (
2627
huddleRoundTripAnnCborSpec,
2728
huddleRoundTripArbitraryValidate,
2829
huddleRoundTripCborSpec,
30+
huddleRoundTripGenValidate,
2931
specWithHuddle,
3032
)
3133
import Test.Cardano.Ledger.Common
@@ -81,7 +83,7 @@ spec = do
8183
-- TxBody
8284
huddleRoundTripAnnCborSpec @(TxBody TopTx ConwayEra) v "transaction_body"
8385
-- TODO enable this once map/list expansion has been optimized in cuddle
84-
xdescribe "hangs" $ huddleRoundTripArbitraryValidate @(TxBody TopTx ConwayEra) v "transaction_body"
86+
xdescribe "fix scripts" $ huddleRoundTripArbitraryValidate @(TxBody TopTx ConwayEra) v "transaction_body"
8587
huddleRoundTripCborSpec @(TxBody TopTx ConwayEra) v "transaction_body"
8688
-- AuxData
8789
huddleRoundTripAnnCborSpec @(TxAuxData ConwayEra) v "auxiliary_data"
@@ -100,7 +102,7 @@ spec = do
100102
-- TxOut
101103
huddleRoundTripCborSpec @(TxOut ConwayEra) v "transaction_output"
102104
-- TODO fails because of `address`
103-
xdescribe "fix address" $ huddleRoundTripArbitraryValidate @(TxOut ConwayEra) v "transaction_output"
105+
xdescribe "fix scripts" $ huddleRoundTripArbitraryValidate @(TxOut ConwayEra) v "transaction_output"
104106
-- Script
105107
huddleRoundTripAnnCborSpec @(Script ConwayEra) v "script"
106108
-- TODO fails because of `plutus_v1_script`
@@ -118,16 +120,13 @@ spec = do
118120
huddleRoundTripCborSpec @(TxWits ConwayEra) v "transaction_witness_set"
119121
-- PParamsUpdate
120122
huddleRoundTripCborSpec @(PParamsUpdate ConwayEra) v "protocol_param_update"
121-
-- TODO enable this once map/list expansion has been optimized in cuddle
122-
xdescribe "hangs" $
123-
huddleRoundTripArbitraryValidate @(PParamsUpdate ConwayEra) v "protocol_param_update"
123+
huddleRoundTripArbitraryValidate @(PParamsUpdate ConwayEra) v "protocol_param_update"
124124
-- CostModels
125125
huddleRoundTripCborSpec @CostModels v "cost_models"
126126
huddleRoundTripArbitraryValidate @CostModels v "cost_models"
127127
-- Redeemers
128128
huddleRoundTripAnnCborSpec @(Redeemers ConwayEra) v "redeemers"
129-
-- TODO arbitrary can generate empty redeemers, which is not allowed in the CDDL
130-
xdescribe "fix redeemers" $ huddleRoundTripArbitraryValidate @(Redeemers ConwayEra) v "redeemers"
129+
huddleRoundTripGenValidate @(Redeemers ConwayEra) genNonEmptyRedeemers v "redeemers"
131130
huddleRoundTripCborSpec @(Redeemers ConwayEra) v "redeemers"
132131
-- Tx
133132
huddleRoundTripAnnCborSpec @(Tx TopTx ConwayEra) v "transaction"
@@ -139,17 +138,13 @@ spec = do
139138
huddleRoundTripArbitraryValidate @(VotingProcedure ConwayEra) v "voting_procedure"
140139
-- ProposalProcedure
141140
huddleRoundTripCborSpec @(ProposalProcedure ConwayEra) v "proposal_procedure"
142-
-- TODO This fails because of the hard-coded `reward_account` in the CDDL
143-
xdescribe "fix reward_account" $
144-
huddleRoundTripArbitraryValidate @(ProposalProcedure ConwayEra) v "proposal_procedure"
141+
huddleRoundTripArbitraryValidate @(ProposalProcedure ConwayEra) v "proposal_procedure"
145142
-- GovAction
146143
huddleRoundTripCborSpec @(GovAction ConwayEra) v "gov_action"
147-
-- TODO enable this once map/list expansion has been optimized in cuddle
148-
xdescribe "hangs" $ huddleRoundTripArbitraryValidate @(GovAction ConwayEra) v "gov_action"
144+
huddleRoundTripArbitraryValidate @(GovAction ConwayEra) v "gov_action"
149145
-- TxCert
150146
huddleRoundTripCborSpec @(TxCert ConwayEra) v "certificate"
151-
-- TODO this fails because of the hard-coded `unit_interval` in the CDDL
152-
xdescribe "fix unit_interval" $ huddleRoundTripArbitraryValidate @(TxCert ConwayEra) v "certificate"
147+
huddleRoundTripArbitraryValidate @(TxCert ConwayEra) v "certificate"
153148
describe "DecCBOR instances equivalence via CDDL" $ do
154149
huddleDecoderEquivalenceSpec @(TxBody TopTx ConwayEra) v "transaction_body"
155150
huddleDecoderEquivalenceSpec @(TxAuxData ConwayEra) v "auxiliary_data"

eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Arbitrary.hs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ module Test.Cardano.Ledger.Conway.Arbitrary (
3737
) where
3838

3939
import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError)
40-
import Cardano.Ledger.BaseTypes (StrictMaybe (..))
40+
import Cardano.Ledger.BaseTypes (ProtVer (..), StrictMaybe (..))
4141
import Cardano.Ledger.Conway (ConwayEra, Tx (..))
4242
import Cardano.Ledger.Conway.Core
4343
import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..))
@@ -505,8 +505,11 @@ instance
505505
genParameterChange :: Arbitrary (PParamsUpdate era) => Gen (GovAction era)
506506
genParameterChange = ParameterChange <$> arbitrary <*> arbitrary <*> arbitrary
507507

508-
genHardForkInitiation :: Gen (GovAction era)
509-
genHardForkInitiation = HardForkInitiation <$> arbitrary <*> arbitrary
508+
genHardForkInitiation :: forall era. Era era => Gen (GovAction era)
509+
genHardForkInitiation =
510+
HardForkInitiation
511+
<$> arbitrary
512+
<*> (ProtVer <$> elements (eraProtVersions @era) <*> arbitrary)
510513

511514
genTreasuryWithdrawals :: Gen (GovAction era)
512515
genTreasuryWithdrawals = TreasuryWithdrawals <$> arbitrary <*> arbitrary

libs/cardano-ledger-binary/testlib/Test/Cardano/Ledger/Binary/Cuddle.hs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module Test.Cardano.Ledger.Binary.Cuddle (
1414
huddleRoundTripCborSpec,
1515
huddleRoundTripAnnCborSpec,
1616
writeSpec,
17+
huddleRoundTripGenValidate,
1718
huddleRoundTripArbitraryValidate,
1819
) where
1920

@@ -71,7 +72,7 @@ import Test.Hspec (
7172
shouldBe,
7273
)
7374
import Test.Hspec.Core.Spec (Example (..), paramsQuickCheckArgs)
74-
import Test.QuickCheck (Arbitrary (..), Args (replay), Testable (..))
75+
import Test.QuickCheck (Arbitrary (..), Args (replay), Gen, Testable (..), forAll)
7576
import Test.QuickCheck.Random (QCGen, mkQCGen)
7677
import Text.Pretty.Simple (pShow)
7778

@@ -237,21 +238,13 @@ cddlFailure encoding err =
237238
, "Generated diag: " <> CBOR.prettyHexEnc encoding
238239
]
239240

240-
huddleRoundTripArbitraryValidate ::
241-
forall a.
242-
( DecCBOR a
243-
, EncCBOR a
244-
, Arbitrary a
245-
, Show a
246-
) =>
247-
Version ->
248-
T.Text ->
249-
SpecWith CuddleData
250-
huddleRoundTripArbitraryValidate version ruleName =
241+
huddleRoundTripGenValidate ::
242+
forall a. (DecCBOR a, Show a, EncCBOR a) => Gen a -> Version -> T.Text -> SpecWith CuddleData
243+
huddleRoundTripGenValidate gen version ruleName =
251244
let lbl = label $ Proxy @a
252245
in describe "Encode an arbitrary value and check against CDDL"
253246
. it (T.unpack ruleName <> ": " <> T.unpack lbl)
254-
$ \CuddleData {cddl} -> property $ \(val :: a) -> do
247+
$ \CuddleData {cddl} -> property . forAll gen $ \(val :: a) -> do
255248
let
256249
bs = serialize' version val
257250
res = validateCBOR bs (Name ruleName) (mapIndex cddl)
@@ -280,6 +273,18 @@ huddleRoundTripArbitraryValidate version ruleName =
280273
]
281274
_ -> pretty $ pShow err
282275

276+
huddleRoundTripArbitraryValidate ::
277+
forall a.
278+
( DecCBOR a
279+
, EncCBOR a
280+
, Arbitrary a
281+
, Show a
282+
) =>
283+
Version ->
284+
T.Text ->
285+
SpecWith CuddleData
286+
huddleRoundTripArbitraryValidate = huddleRoundTripGenValidate $ arbitrary @a
287+
283288
--------------------------------------------------------------------------------
284289
-- Writing specs to a file
285290
--------------------------------------------------------------------------------

libs/cardano-ledger-core/cddl/Cardano/Ledger/Core/HuddleSpec.hs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import Data.ByteString.Short (fromShort)
2929
import Data.List.NonEmpty (NonEmpty)
3030
import qualified Data.List.NonEmpty as NE
3131
import Data.Proxy (Proxy (..))
32-
import Data.Ratio (denominator, numerator)
3332
import qualified Data.Text as T
3433
import qualified Data.Text.Lazy as LT
3534
import Data.Word (Word64)
@@ -83,8 +82,11 @@ instance Era era => HuddleRule "unit_interval" era where
8382
$ pname =.= tag 30 (arr [a VUInt, a VUInt])
8483
where
8584
generator g = do
86-
val <- toRational @Double <$> uniformRM (0.0, 1.0) g
87-
S . TTagged 30 <$> genArrayTerm [TInteger $ numerator val, TInteger $ denominator val] g
85+
-- TODO should we test with even larger values than Word64?
86+
n <- uniformRM (0, maxBound @Word64) g
87+
d <- uniformRM (n, maxBound @Word64) g
88+
S . TTagged 30
89+
<$> genArrayTerm [TInteger $ fromIntegral n, TInteger $ fromIntegral d] g
8890

8991
instance Era era => HuddleRule "nonnegative_interval" era where
9092
huddleRuleNamed pname p =

0 commit comments

Comments
 (0)