"Gave up" - 快速检查
"Gave up" - QuickCheck
我想在测试麦克劳林级数是否等于 1/x
、x>1
和 x<2
的函数中使用快速检查。但是,对于较小的 n 值,quickcheck returns 错误测试。此外,如果我设置 n>100
限制,例如,quickcheck returns:
"Gave up! Passed only 0 tests.".
这是我的代码:
prop_inv :: Float -> Int -> Property
prop_inv x n = (x>1 && x<2) && n>100 ==> inv x n == 1/x
(inv x n
是计算麦克劳林级数的函数。)
通常的方法是制作一个小的新类型,它只生成所需范围内的值。例如:
newtype BetweenOneAndTwo = BOAT Float deriving Show
instance Arbitrary BetweenOneAndTwo where
arbitrary = BOAT <$> Test.QuickCheck.choose (1, 2)
prop_inv (BOAT x) (NonNegative n) = inv x (n+100) == 1/x
我想在测试麦克劳林级数是否等于 1/x
、x>1
和 x<2
的函数中使用快速检查。但是,对于较小的 n 值,quickcheck returns 错误测试。此外,如果我设置 n>100
限制,例如,quickcheck returns:
"Gave up! Passed only 0 tests.".
这是我的代码:
prop_inv :: Float -> Int -> Property
prop_inv x n = (x>1 && x<2) && n>100 ==> inv x n == 1/x
(inv x n
是计算麦克劳林级数的函数。)
通常的方法是制作一个小的新类型,它只生成所需范围内的值。例如:
newtype BetweenOneAndTwo = BOAT Float deriving Show
instance Arbitrary BetweenOneAndTwo where
arbitrary = BOAT <$> Test.QuickCheck.choose (1, 2)
prop_inv (BOAT x) (NonNegative n) = inv x (n+100) == 1/x