scalacheckプロジェクトのUserGuideは、サイズのジェネレーターについて言及しました。説明コード
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
私が見逃したことを説明し、コードのテストでそれらをどのように使用するかについていくつかの例を教えてください。