quickcheck-regex 0.0.2 → 0.0.3
raw patch · 2 files changed
+9/−3 lines, 2 files
Files
quickcheck-regex.cabal view
@@ -1,5 +1,5 @@ Name: quickcheck-regex-Version: 0.0.2+Version: 0.0.3 Homepage: http://github.com/audreyt/quickcheck-regex/ Category: QuickCheck, test, regex Synopsis: Generate regex-constrained strings for QuickCheck
src/Test/QuickCheck/Regex.hs view
@@ -20,6 +20,10 @@ import Text.Regex.TDFA.ReadRegex (parseRegex) import qualified Data.Set as Set +minChar, maxChar :: Char+minChar = ' '+maxChar = '~'+ matching :: String -> Gen String matching regex = case parseRegex regex of Left x -> fail $ show x@@ -31,7 +35,9 @@ POr ps -> oneof (map go ps) PConcat ps -> concat `fmap` mapM go ps PQuest p -> oneof [return "", go p]- PDot{} -> (:[]) `fmap` arbitrary+ PDot{} -> do+ n <- choose (fromEnum minChar, fromEnum maxChar)+ return [toEnum n] PPlus p -> concat `fmap` listOf (go p) PStar _ p -> concat `fmap` listOf1 (go p) PBound low high p -> do@@ -43,7 +49,7 @@ PAnyNot{ getPatternSet = PatternSet (Just cset) _ _ _ } -> oneChar $ charExclude (Set.toList cset) _ -> fail $ "Invalid pattern: " ++ show pat oneChar = oneof . map (return . (:[]))- charExclude = (['\0'..'\255'] \\)+ charExclude = ([minChar .. maxChar] \\) expandEscape ch = case ch of 'n' -> "\n" 't' -> "\t"