Sized generators in scalacheck

UserGuide проекта scalacheck упоминаются генераторы sized. Код объяснения

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 есть метод resize, который "Создает уменьшенную версию генератора", согласно 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 

Не могли бы вы объяснить мне, что я упустил и привести примеры, как вы используете их в тестовом коде?

15
задан retronym 8 September 2010 в 10:39
поделиться