Skip to content

Commit 5901dc6

Browse files
committed
Add CBOR generator that evolves the seed
This commit adds a function `generateCBORTerm'`, which will generate a CBOR term and return the evolved seed.
1 parent 8f90c72 commit 5901dc6

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

cuddle.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cabal-version: 3.4
22
name: cuddle
3-
version: 0.1.21.0
3+
version: 0.1.22.0
44
synopsis: CDDL Generator and test utilities
55

66
-- description:

src/Codec/CBOR/Cuddle/CBOR/Gen.hs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}
1212

1313
-- | Generate example CBOR given a CDDL specification
14-
module Codec.CBOR.Cuddle.CBOR.Gen (generateCBORTerm) where
14+
module Codec.CBOR.Cuddle.CBOR.Gen (generateCBORTerm, generateCBORTerm') where
1515

1616
import Capability.Reader
1717
import Capability.Sink (HasSink)
@@ -55,6 +55,7 @@ import System.Random.Stateful
5555
randomM,
5656
uniformByteStringM,
5757
)
58+
import Data.Bifunctor (second)
5859

5960
--------------------------------------------------------------------------------
6061
-- Generator infrastructure
@@ -433,3 +434,9 @@ generateCBORTerm cddl n stdGen =
433434
let genEnv = GenEnv {cddl, fakeSeed = CapGenM}
434435
genState = GenState {randomSeed = stdGen, depth = 1}
435436
in evalGen (genForName n) genEnv genState
437+
438+
generateCBORTerm' :: (RandomGen g) => CTreeRoot' Identity MonoRef -> Name -> g -> (Term, g)
439+
generateCBORTerm' cddl n stdGen =
440+
let genEnv = GenEnv {cddl, fakeSeed = CapGenM}
441+
genState = GenState {randomSeed = stdGen, depth = 1}
442+
in second randomSeed $ runGen (genForName n) genEnv genState

0 commit comments

Comments
 (0)