快速检查非布尔测试

时间:2012-08-13 21:26:07

标签: haskell quickcheck

我正在使用QuickCheck来测试我的代码以进行一些数值计算。基本上我有一个确切的函数和几个近似值,效率更高。

我目前正在实现我想要测试的属性:

prop_blah input = (abs $ (exact input)-(approx input)) < threshold

但是,确切地知道每种近似算法的精确程度并将它们相互比较真的很不错。一种简单的方法是获得不等式左侧的均值和标准差的报告。这有可能吗?

1 个答案:

答案 0 :(得分:2)

如果您只需打印出来,则应检查单次测试后执行的QuickCheck回调。他们的定义位于Test.QuickCheck.P​​roperty

否则,您可以使用位于Test.QuickCheck.P​​roperty中的函数collect :: (Show a, Testable prop) => a -> prop -> Property

let a = (abs $ (exact input)-(approx input))
in collect a (a < threshold)

通过这种方式,您至少可以对该近似值进行字符串表示,并且还可以了解有多少单个测试给出相同的近似值。

您甚至可以摆脱近似质量,只需按以下方式列出因素:

prop = collect (abs $ (exact input)-(approx input)) True