packages feed

clash-prelude-hedgehog-1.8.0: src/Clash/Hedgehog/Annotations/SynthesisAttributes.hs

module Clash.Hedgehog.Annotations.SynthesisAttributes where

import Clash.Annotations.SynthesisAttributes (Attr(..))

import Hedgehog
import qualified Hedgehog.Gen as Gen

genAttr :: forall m. MonadGen m => Range Int -> m (Attr String)
genAttr range =
  Gen.choice
    [ BoolAttr <$> genAlphaNum <*> Gen.bool
    , IntegerAttr <$> genAlphaNum <*> genInteger
    , StringAttr <$> genAlphaNum <*> genAlphaNum
    , Attr <$> genAlphaNum
    ]
 where
  genAlphaNum = Gen.string range Gen.alphaNum
  genInteger  = toInteger <$> Gen.integral range