如何在 ScalaCheck 中表达"implies",比如说,"if an integer n * n = 0 then n = 0"?



我想使用Scala的基于属性的测试工具ScalaCheck来表达属性

if an integer n * n = 0 then n = 0 

如何在ScalaCheck中编写此属性?例如,我知道

val myprop = forAll {(n: Int) => n + 1 - 1 = n}

但我不知道如何表达";A表示B";在ScalaCheck中(不将其简化为Not-A或B,这可能看起来很笨拙(。

使用==>(隐含运算符(

val prop = forAll { n: Int =>
(n * n == 0) ==> n == 0
}

(请参阅他们的《用户指南》(问题是:在这个特定的例子中,条件很难满足,所以ScalaCheck会在几次尝试后放弃(但至少它确实告诉你,否则你会得到假阳性,因为你的必要条件从未被检查过(。在这种情况下,您可以提供一个自定义生成器,以便它生成满足您的条件的值。

最新更新