のジェネレーターのリストに対応する整数のリストを生成したいと考えていますScalaCheck
。
import org.scalacheck._
import Arbitrary.arbitrary
val smallInt = Gen.choose(0,10)
val bigInt = Gen.choose(1000, 1000000)
val zeroOrOneInt = Gen.choose(0, 1)
val smallEvenInt = smallInt suchThat (_ % 2 == 0)
val gens = List(smallInt, bigInt, zeroOrOneInt, smallEvenInt)
//val listGen: Gen[Int] = ??
//println(listGen.sample) //should print something like List(2, 2000, 0, 6)
与えられた に対して、有効なサンプルが になるgens
ジェネレーターを作成したいと思います。これがタプルを使用した最初の試みです。listGen
List(2, 2000, 0, 6)
val gensTuple = (smallInt, bigInt, zeroOrOneInt, smallEvenInt)
val tupleGen = for {
a <- gensTuple._1
b <- gensTuple._2
c <- gensTuple._3
d <- gensTuple._4
} yield (a, b, c, d)
println(tupleGen.sample) // prints Some((1,318091,0,6))
gens
これは機能しますが、generators( ) のリストが動的に作成され、リストのサイズが固定されていないため、タプルを使用したくありません。リストでそれを行う方法はありますか?
listGen
scalacheck のforAll
プロパティ チェックでlist( ) のジェネレータを使用したい。
これはおもちゃの問題のように見えますが、これは私が直面している実際の問題を再現するスタンドアロンのスニペットを作成するためにできる最善の方法です。