{-| Module : Text.QuickCheck.StringRandom Description : A generator of text which matches regexp Copyright : Copyright (C) 2016- hiratara License : GPL-3 Maintainer : hiratara@cpan.org Stability : experimental A text generator that generates a string that matches a regular expression. @ {-# LANGUAGE OverloadedStrings #-} import qualified Test.QuickCheck as QC import Test.QuickCheck.StringRandom (matchRegexp) prop_generateDigit :: QC.Property prop_generateDigit = QC.forAll (matchRegexp "\\d") $ \digit -> ... -- or newtype Upper = Upper Text.Text deriving (Eq, Show) instance QC.Arbitrary Upper where arbitrary = Upper <$> matchRegexp "[A-Z]" prop_generateUpper :: Upper -> Bool prop_generateUpper (Upper upper) = ... @ The shrink function has not been defined yet. -} module Test.QuickCheck.StringRandom ( matchRegexp ) where import qualified Data.Text as Text import qualified Test.QuickCheck.Gen as QC import qualified Test.QuickCheck.Random as QC import qualified Text.StringRandom as StringRandom -- | The 'matchRegexp pat' defines a generator that produces a text that -- | matches a regular expression 'pat' matchRegexp :: Text.Text -> QC.Gen Text.Text matchRegexp txt = QC.MkGen $ \(QC.QCGen g) _ -> StringRandom.stringRandom g txt