{-# OPTIONS_GHC -Wall #-}
-- | Generators shared by the property tests.
module Gens (
genInt,
genString,
genPath,
) where
import Hedgehog (Gen)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
genInt :: Gen Int
genInt =
Gen.int (Range.linear (-100) 100)
genString :: Gen String
genString =
Gen.string (Range.linear 0 30) Gen.unicode
-- | A file path, such as @src/a/report.fodt@.
genPath :: Gen FilePath
genPath =
let part = Gen.string (Range.linear 1 6) Gen.alphaNum
in (\ds f e -> concatMap (<> "/") ds <> f <> "." <> e)
<$> Gen.list (Range.linear 0 3) part
<*> part
<*> Gen.element ["fodt", "md", "pdf", "png", "txt"]