我在正确使用scalacheck生成器方面遇到了一些困难。我想在某个范围内测试一个带有整数参数的任意数组 - 代码主要是:
import org.scalacheck._
object BlockSpecs extends Properties("Block") {
val arrayGen = Gen.containerOf[Array, Byte](0.toByte)
val intGen = Gen.choose(1, 255)
property("addPadding") = Prop.forAll(arrayGen, intGen) { (a, b) =>
val padded = addPadding(a, b)
(a.length != padded.length) &&
(padded.length % b == 0)
}
}
但是,我得到 include 0的整数值。当我将Prop.forAll
更改为Prop.forAllNoShrink
时,由于某些原因我无法理解这一点。
基本上,我只想做以下事情:
Prop.forAll { (a: Array[Byte], b: Int) => ... }
但在给定范围内b
。最简单的方法是什么?