我在正确使用 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)
}
}
但是,我得到包含0 的整数值。当我更改Prop.forAll
为Prop.forAllNoShrink
它时,由于某种我不清楚的原因,它会起作用。
基本上,我只想做以下事情:
Prop.forAll { (a: Array[Byte], b: Int) => ... }
但b
在给定范围内。最简单的方法是什么?