UserGuide z projektu skalacheck wspomnianych wielkości generatorów. Kod wyjaśnianiawielkości generatory w 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))
}
nic mi nie wyjaśnił. Po kilku eksploracjach zrozumiałem, że długość wygenerowanej sekwencji nie zależy od rzeczywistego rozmiaru generatora (w obiekcie Gen istnieje metoda zmiany rozmiaru, która "tworzy zmienioną wersję generatora" zgodnie z javadoc (może to oznacza coś innego?)).
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
Czy mógłbyś wyjaśnić mi, co przeoczyłem i podać kilka przykładów, jak używasz ich w testowaniu kodu?
To jest bardzo dobry przykład, dzięki. Bardzo ilustracyjny. –
To doprowadziło mnie do "Gen.frequency ((10, 2), (5, 3), (1, 1)). FlatMap (Gen.listOfN (_, nazwy))", który był dokładnie tym, czego potrzebowałem! –