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))
}
ничего не объяснил для меня. После некоторого исследования я понял, что длина сгенерированной последовательности не зависит от фактического размера генератора (есть метод изменения размера в объекте Gen, который «создает измененную версию генератора» в соответствии с javadoc (может быть, это означает что-то другое?)).
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
Не могли бы вы объяснить мне, что если бы я пропустил и дать мне несколько примеров, как вы используете их в тестировании кода?
Это такой приятный пример, спасибо. Очень показательно. –
Это привело меня к «Gen.frequency ((10, 2), (5, 3), (1, 1)). FlatMap (Gen.listOfN (_, names))', который был именно тем, что мне нужно! –