快速检查:生成由给定池中的字符组成的字符串

时间:2016-02-28 22:37:15

标签: haskell testing quickcheck

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,但看起来像是一个容易出问题的代码看起来很多,我担心这会过度设计。

1 个答案:

答案 0 :(得分:2)

我认为你可以使用

elements :: [a] -> Gen a

结合使用
listOf :: Gen a -> Gen [a]

因此您的String生成器可能看起来像

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