UserGuide提到大小的发电机scalacheck项目。解释码scalacheck项目中提到的大小发电机
def matrix[T](g:Gen[T]):Gen[Seq[Seq[T]]] = Gen.sized {size =>
val side = scala.Math.sqrt(size).asInstanceOf[Int] //little change to prevent compile-time exception
Gen.vectorOf(side, Gen.vectorOf(side, g))
}
对我没有任何解释。经过一番探索后,我明白生成序列的长度并不取决于生成器的实际大小(根据javadoc(或许这意味着不同的东西?)),Gen对象中有“创建生成器的调整大小版本”的resize方法。
val g = Gen.choose(1,5)
val g2 = Gen.resize(15, g)
println(matrix(g).sample) // (1)
println(matrix(g2).sample) // (2)
//1,2 produce Seq with same length
你能解释我发生了什么我错过了,给我一些例子,你是如何在测试代码中使用它们?
这是一个很好的例子,谢谢。很说明。 – 2011-02-14 23:01:55
这让我变成了Gen.frequency((10,2),(5,3),(1,1))。flatMap(Gen.listOfN(_,names))'这正是我所需要的! – 2014-09-11 12:16:49