Skip to content

Commit 8538532

Browse files
committed
Rebase
1 parent 8a972a8 commit 8538532

File tree

6 files changed

+49
-52
lines changed

6 files changed

+49
-52
lines changed

cabal.project

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ source-repository-package
2121
source-repository-package
2222
type: git
2323
location: https://github.com/input-output-hk/cuddle.git
24-
tag: 65c64867e4d4cdace105cbd1a5097701db2c5bac
25-
--sha256: sha256-TS1qbTwLrJ+OQq/f+FqnmindvANnQf8mZbAqFDk5Kuo=
24+
tag: c2003efc96a803db5ba4835ad0c9df6d40c5e1d5
25+
--sha256: sha256-RA94WedcLI00yJAgD2HhNzPFDyRcbXNOQ7S+/9ZhH50=
2626

2727
source-repository-package
2828
type: git
@@ -107,5 +107,5 @@ source-repository-package
107107
type: git
108108
location: https://github.com/Soupstraw/cardano-cls.git
109109
subdir: merkle-tree-incremental mempack-scls scls-cbor scls-cardano scls-format scls-core
110-
--sha256: sha256-POBr11BhEN6SFfc70ZD5saGBanyH/F2Is1TK7+xbk4s=
111-
tag: c8414c077b8efd1a8818b147cc33b42504779e4e
110+
--sha256: sha256-mK6D4+ZSI2SdclEzhbuWKKCvDseJS1A83rx4OZJlNgI=
111+
tag: 37e6e707d6d46a691cbcebe925d0aaf51f0efd8c

libs/cardano-ledger-binary/cardano-ledger-binary.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ library testlib
109109
-Wunused-packages
110110

111111
build-depends:
112-
antigen >=0.3.1.0 && < 0.4,
113112
ImpSpec,
114113
QuickCheck,
114+
antigen >=0.3.1.0 && <0.4,
115115
base,
116116
base16-bytestring,
117117
bytestring,

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

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,15 @@ import Test.Hspec (
8585
it,
8686
shouldBe,
8787
)
88-
import Test.Hspec.Core.Spec (Example (..), paramsQuickCheckArgs)
89-
import Test.QuickCheck (Arbitrary (..), Args (replay), Gen, Testable (..), forAll)
90-
import Test.QuickCheck.Gen (Gen (..))
91-
import Test.QuickCheck.Random (QCGen, mkQCGen)
92-
import Text.Pretty.Simple (pShow)
88+
import Test.QuickCheck (
89+
Arbitrary (..),
90+
Gen,
91+
Testable (..),
92+
counterexample,
93+
discard,
94+
forAll,
95+
)
96+
import Test.QuickCheck.Property (Property)
9397

9498
huddleDecoderEquivalenceSpec ::
9599
forall a.
@@ -263,21 +267,14 @@ showValidationTrace (Evidenced _ t) =
263267
T.unpack . Ansi.renderStrict . layoutPretty defaultLayoutOptions $
264268
prettyValidationTrace defaultTraceOptions t
265269

266-
huddleRoundTripArbitraryValidate ::
270+
huddleRoundTripGenValidate ::
267271
forall a.
268-
( DecCBOR a
269-
, EncCBOR a
270-
, Arbitrary a
271-
, Show a
272-
) =>
273-
Version ->
274-
T.Text ->
275-
SpecWith (CTreeRoot MonoReferenced)
276-
huddleRoundTripArbitraryValidate version ruleName =
272+
(DecCBOR a, Show a, EncCBOR a) => Gen a -> Version -> T.Text -> SpecWith (CTreeRoot MonoReferenced)
273+
huddleRoundTripGenValidate gen version ruleName =
277274
let lbl = label $ Proxy @a
278275
in describe "Encode an arbitrary value and check against CDDL"
279276
. it (T.unpack ruleName <> ": " <> T.unpack lbl)
280-
$ \cddl -> property $
277+
$ \cddl -> property . forAll gen $
281278
\(val :: a) -> do
282279
let
283280
bs = serialize' version val
@@ -297,7 +294,7 @@ huddleRoundTripArbitraryValidate ::
297294
) =>
298295
Version ->
299296
T.Text ->
300-
SpecWith CuddleData
297+
SpecWith (CTreeRoot MonoReferenced)
301298
huddleRoundTripArbitraryValidate = huddleRoundTripGenValidate $ arbitrary @a
302299

303300
--------------------------------------------------------------------------------

libs/cardano-ledger-core/cardano-ledger-core.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ library cddl
183183
-Wunused-packages
184184

185185
build-depends:
186+
QuickCheck,
186187
base,
187188
bytestring,
188189
cardano-ledger-binary,

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

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,14 @@ import Codec.CBOR.Cuddle.CDDL (Name (..))
2323
import Codec.CBOR.Cuddle.CDDL.CBORGenerator (WrappedTerm (..))
2424
import Codec.CBOR.Cuddle.Huddle
2525
import Codec.CBOR.Term (Term (..))
26-
import Control.Monad (join)
2726
import Data.Bits (Bits (..))
27+
import Data.ByteString (ByteString)
2828
import qualified Data.ByteString as BS
2929
import Data.MemPack (VarLen (..), packByteString)
3030
import Data.Proxy (Proxy (..))
3131
import qualified Data.Text as T
3232
import Data.Word (Word16, Word32, Word64)
33-
import System.Random.Stateful (
34-
Uniform (..),
35-
UniformRange (..),
36-
uniformByteStringM,
37-
)
33+
import Test.QuickCheck (Arbitrary (..), Gen, choose, oneof, vector)
3834
import Text.Heredoc
3935
import Prelude hiding ((/))
4036

@@ -75,22 +71,20 @@ instance Era era => HuddleRule "unit_interval" era where
7571
. withGenerator generator
7672
$ pname =.= tag 30 (arr [a VUInt, a VUInt])
7773
where
78-
generator g = do
74+
generator = do
7975
let genUnitInterval64 l u = do
80-
d <- uniformRM (max 1 l, u) g
81-
n <- uniformRM (l, d) g
76+
d <- choose (max 1 l, u)
77+
n <- choose (l, d)
8278
pure (n, d)
8379
max64 = toInteger (maxBound @Word64)
8480
(n, d) <-
85-
join $
86-
pickOne
87-
[ genUnitInterval64 0 max64
88-
, genUnitInterval64 0 1000
89-
, genUnitInterval64 (max64 - 1000) max64
90-
]
91-
g
81+
oneof
82+
[ genUnitInterval64 0 max64
83+
, genUnitInterval64 0 1000
84+
, genUnitInterval64 (max64 - 1000) max64
85+
]
9286
S . TTagged 30
93-
<$> genArrayTerm [TInteger $ toInteger n, TInteger $ toInteger d] g
87+
<$> genArrayTerm [TInteger $ toInteger n, TInteger $ toInteger d]
9488

9589
instance Era era => HuddleRule "nonnegative_interval" era where
9690
huddleRuleNamed pname p =
@@ -175,6 +169,11 @@ instance Era era => HuddleRule "coin" era where
175169
instance Era era => HuddleRule "positive_coin" era where
176170
huddleRuleNamed pname p = pname =.= (1 :: Integer) ... huddleRule @"max_word64" p
177171

172+
genHash28 :: Gen ByteString
173+
genHash28 =
174+
-- TODO better implementation
175+
BS.pack <$> vector 28
176+
178177
instance Era era => HuddleRule "address" era where
179178
huddleRuleNamed pname _ =
180179
comment
@@ -212,18 +211,17 @@ instance Era era => HuddleRule "address" era where
212211
. withGenerator generator
213212
$ pname =.= VBytes
214213
where
215-
generator g = do
216-
stakeRef <- uniformRM (0, 0b11) g
214+
generator = do
215+
stakeRef <- choose (0, 0b11)
217216
let
218217
stakeRefMask = stakeRef `shiftL` 5 -- 0b0xx00000
219218
mkMask mask isMask = if isMask then mask else 0
220-
isPaymentScriptMask <- mkMask 0b00010000 <$> uniformM g
221-
isMainnetMask <- mkMask 0b00000001 <$> uniformM g
219+
isPaymentScriptMask <- mkMask 0b00010000 <$> arbitrary
220+
isMainnetMask <- mkMask 0b00000001 <$> arbitrary
222221
let
223222
header = stakeRefMask .|. isPaymentScriptMask .|. isMainnetMask
224-
genHash28 = uniformByteStringM 28 g
225-
genVar32 = VarLen <$> uniformM @Word32 g
226-
genVar16 = VarLen <$> uniformM @Word16 g
223+
genVar32 = VarLen <$> arbitrary @Word32
224+
genVar16 = VarLen <$> arbitrary @Word16
227225
stakeCred <- case stakeRef of
228226
0b00 -> genHash28 -- staking payment hash
229227
0b01 -> genHash28 -- staking script hash
@@ -242,14 +240,14 @@ instance Era era => HuddleRule "address" era where
242240
instance Era era => HuddleRule "reward_account" era where
243241
huddleRuleNamed pname _ = withGenerator generator $ pname =.= VBytes
244242
where
245-
generator g = do
246-
isMainnet <- uniformM g
247-
isScript <- uniformM g
243+
generator = do
244+
isMainnet <- arbitrary
245+
isScript <- arbitrary
248246
let
249247
mainnetMask | isMainnet = 0b00000001 | otherwise = 0x00
250248
scriptMask | isScript = 0b00010000 | otherwise = 0x00
251249
header = 0b11100000 .|. mainnetMask .|. scriptMask
252-
payload <- uniformByteStringM 28 g
250+
payload <- genHash28
253251
let term = TBytes $ BS.cons header payload
254252
pure $ S term
255253

libs/cardano-ledger-core/cddl/Cardano/Ledger/Huddle.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import qualified Data.Text as T
4242
import qualified Data.Text.Lazy as LT
4343
import GHC.TypeLits (KnownSymbol, Symbol, symbolVal)
4444
import System.Random.Stateful (StatefulGen, UniformRange (..))
45+
import Test.QuickCheck (Gen, elements)
4546

4647
class (KnownSymbol name, Era era) => HuddleRule (name :: Symbol) era where
4748
huddleRuleNamed :: Proxy name -> Proxy era -> Rule
@@ -77,8 +78,8 @@ infixr 0 =.=
7778

7879
infixr 0 =.~
7980

80-
genArrayTerm :: StatefulGen g m => [Term] -> g -> m Term
81-
genArrayTerm es = pickOne [TList es, TListI es]
81+
genArrayTerm :: [Term] -> Gen Term
82+
genArrayTerm es = elements [TList es, TListI es]
8283

8384
pickOne :: StatefulGen g m => NonEmpty a -> g -> m a
8485
pickOne es g = do

0 commit comments

Comments
 (0)