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):
"-"
但这不是真正的失败,因为 -
不包含在我的字符集中,并且不应该首先生成包含它的字符串。
我试过阅读the docs of QuickCheck但是它们很抽象而且很难,我没有找到一个sloution。
我看过a solution on Whosebug,但看起来很简单的问题似乎有太多代码,我担心它是过度设计的。
我想你可以使用
elements :: [a] -> Gen a
结合
listOf :: Gen a -> Gen [a]
所以你的 String
生成器看起来像
vowels :: Gen String
vowels = listOf (elements "aeiou")
propertyForStringsFromMyCharPool :: String -> Bool
-- implementation
main = T.quickCheck propertyForStringsFromMyCharPool
现在 QuickCheck 生成各种字符串,但我只想测试 属性 我的字符池中的字符串。
我现在的输出是:
*** Failed! Falsifiable (after 3 tests and 2 shrinks):
"-"
但这不是真正的失败,因为 -
不包含在我的字符集中,并且不应该首先生成包含它的字符串。
我试过阅读the docs of QuickCheck但是它们很抽象而且很难,我没有找到一个sloution。
我看过a solution on Whosebug,但看起来很简单的问题似乎有太多代码,我担心它是过度设计的。
我想你可以使用
elements :: [a] -> Gen a
结合
listOf :: Gen a -> Gen [a]
所以你的 String
生成器看起来像
vowels :: Gen String
vowels = listOf (elements "aeiou")