如何快速检查Enum和Bounded类型的所有可能情况?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何快速检查Enum和Bounded类型的所有可能情况?相关的知识,希望对你有一定的参考价值。
我有一个quickCheck属性,它涉及为只有两个元素的和类型生成元素。
显然,对于这种情况,默认的测试用例数量100太多,因此我使用withMaxSuccess
将案例数量减少到3.这样运行得很快,但由于两个原因并不理想。首先,运行的三个测试用例超过了所需的两个测试用例。其次,这三个案例并不全面,因为四分之一的机会都是三个相同的因素,而另一个则排除在外。
我已经尝试过QuickCheck的forAll
修饰符,看起来它可能正在寻找我想要的,但运行的测试用例数仍然是100。
如果我有一个具有有限数量元素的类型作为QuickCheck测试的生成器,有没有办法设置QuickCheck通过每个元素运行一次来全面测试该属性?
要确定该类型是否具有有限数量的元素,也许它可以由Enum
和Bounded
类型类别限定。
答案
不使用quickcheck怎么样?
> myNeatProperty x = (x == GT) || (x <= EQ)
> all myNeatProperty [minBound .. maxBound]
True
> lessNeatProperty x = x <= EQ
> all lessNeatProperty [minBound .. maxBound]
False
> -- Oh no! Can we have some counterexamples, please?
> filter (not . lessNeatProperty) [minBound .. maxBound]
[GT]
对于你的空间有限而不是Enum
和Bounded
的情况,考虑使用universeF
代替[minBound .. maxBound]
。
以上是关于如何快速检查Enum和Bounded类型的所有可能情况?的主要内容,如果未能解决你的问题,请参考以下文章