propertyForStringsFromMyCharPool :: String -> Bool
-- implementation
main = T.quickCheck propertyForStringsFromMyCharPool
现在QuickCheck生成各种字符串,但我想测试我的属性只用于我的字符串中的字符串。
我的输出现在是:
*** Failed! Falsifiable (after 3 tests and 2 shrinks):
"-"
但这不是真正的失败,因为-
未包含在我的字符集中,并且首先不应生成包含它的字符串。
我试过阅读阅读the docs of QuickCheck,但它们非常抽象而且很难,我没有找到任何诽谤。
我已经看过a solution on StackOverflow,但看起来像是一个容易出问题的代码看起来很多,我担心这会过度设计。
答案 0 :(得分:2)
我认为你可以使用
elements :: [a] -> Gen a
与
结合使用listOf :: Gen a -> Gen [a]
因此您的String
生成器可能看起来像
vowels :: Gen String
vowels = listOf (elements "aeiou")