UserGuide của dự án scalacheck được đề cập đến máy phát điện có kích thước. Mã giải thíchMáy phát điện có kích thước trong 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))
}
không giải thích gì cho tôi. Sau một số thăm dò, tôi hiểu rằng độ dài của chuỗi được tạo ra không phụ thuộc vào kích thước thực của máy phát (có phương pháp thay đổi kích thước trong đối tượng Gen "Tạo phiên bản được thay đổi kích thước của máy phát" theo javadoc (có thể điều đó có nghĩa khác?)).
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
Bạn có thể giải thích cho tôi những gì tôi đã bỏ lỡ và cho tôi một số ví dụ về cách bạn sử dụng chúng trong mã thử nghiệm?
Đây là ví dụ hay, cảm ơn. Rất minh họa. –
Điều này dẫn tôi đến 'Gen.frequency ((10, 2), (5, 3), (1, 1)). FlatMap (Gen.listOfN (_, tên))' đó là chính xác những gì tôi cần! –