我正在尝试为Haskell中的任意REPA数组编写测试。由于某种原因,以下片段:
import Test.QuickCheck
import Test.QuickCheck.Monadic
import Data.Array.Repa (Array, DIM2)
prop_id :: Array U DIM2 Double -> Property
prop_id array = monadicIO $ array `R.equalsP` array >>= assert
抛出此异常:
*** Failed! (after 1 test):
Exception:
Test.QuickCheck.resize: negative size
CallStack (from HasCallStack):
error, called at ./Test/QuickCheck/Gen.hs:82:22 in QuickCheck-2.9.2-Jyj4gc4JxkEIgGFLAsGhs9:Test.QuickCheck.Gen
Exception thrown while printing test case:
Test.QuickCheck.resize: negative size
CallStack (from HasCallStack):
error, called at ./Test/QuickCheck/Gen.hs:82:22 in QuickCheck-2.9.2-Jyj4gc4JxkEIgGFLAsGhs9:Test.QuickCheck.Gen
我不确定如何解释这些信息。感谢您的帮助。
这是REPA的Arbitrary
实例中的一个错误。arbitrary
在大小0上崩溃。您可以在此期间修复属性使用的发电机:
quickCheck $ forAll (scale (+1) arbitrary) prop_id