Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正确使用scalacheck生成器_Scala_Scalacheck - Fatal编程技术网

正确使用scalacheck生成器

正确使用scalacheck生成器,scala,scalacheck,Scala,Scalacheck,我在正确使用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")

我在正确使用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)
  }
}
Prop.forAll { (a: Array[Byte], b: Int) => ... }
但是,我得到的整数值包含0。当我将
Prop.forAll
更改为
Prop.forAllNoShrink
时,它会因某种我不清楚的原因而起作用

基本上,我只想做以下几点:

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)
  }
}
Prop.forAll { (a: Array[Byte], b: Int) => ... }

但在给定的范围内使用
b
。最简单的方法是什么?

您是说
intGen
生成
0
?听起来很奇怪。如果你只是做一些简单的事情,比如
Gen.listOfN(10000,intGen).sample
你会得到一个包含
0
的列表吗?啊,看来生成器毕竟工作正常,只有在出现故障时,scalacheck才会尝试“缩小”故障,以获得“最小”失败测试用例,在该阶段,它不再使用发电机: