Quickcheck:生成一个由给定池中的字符组成的字符串

Quickcheck: generate a string made of chars from a given pool

propertyForStringsFromMyCharPool :: String -> Bool
-- implementation

main = T.quickCheck propertyForStringsFromMyCharPool

现在 QuickCheck 生成各种字符串,但我只想测试 属性 我的字符池中的字符串。

我现在的输出是:

*** Failed! Falsifiable (after 3 tests and 2 shrinks):    
"-"

但这不是真正的失败,因为 - 不包含在我的字符集中,并且不应该首先生成包含它的字符串。


我想你可以使用

elements :: [a] -> Gen a

结合

listOf :: Gen a -> Gen [a]

所以你的 String 生成器看起来像

vowels :: Gen String
vowels = listOf (elements "aeiou")