UserGuide del proyecto scalacheck mencionado generadores de tamaño. El código de explicacióngeneradores de tamaño en 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))
}
no me explicaron nada. Después de algunas exploraciones, entendí que la longitud de la secuencia generada no depende del tamaño real del generador (hay un método de cambio de tamaño en el objeto Gen que "Crea una versión redimensionada de un generador" según javadoc (¿quizás eso significa algo diferente?)).
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
¿Podría explicarme qué había echado de menos y darme algunos ejemplos de cómo los usa en el código de prueba?
Este es un buen ejemplo, gracias. Muy ilustrativo. –
Esto me llevó a 'Gen.frequency ((10, 2), (5, 3), (1, 1)). FlatMap (Gen.listOfN (_, names))' que era exactamente lo que necesitaba. –