我有一个枚举RankAndFile
,其中64个值代表棋盘上的方块。
我想获得一个ScalaCheck Arbitrary[(RankAndFile, RankAndFile)]
,但我不确定如何。
到目前为止,我有:
implicit val arbitraryRankAndFile =
Arbitrary(Gen.oneOf(RankAndFile.values.toSeq))
implicit val arbitraryRankAndFilePair =
Arbitrary.arbTuple2[RankAndFile, RankAndFile]
但是编译器在第二个声明中抱怨它could not find implicit value for parameter a1: org.scalacheck.Arbitrary[RankAndFile.RankAndFile]
。当然这是因为arbitraryRankAndFile
的类型是Arbitrary[Gen[RankAndFile]]
。
我该怎么办?
答案 0 :(得分:3)
任意单个值就足够了:
implicit def rankAndFile = Arbitrary { Gen.oneOf(RankAndFile.values.toSeq) }
要检查的属性采用了RankAndFile
的元组,scalacheck可以从这个Arbitrary
值中得到满足。方法Arbitrary.arbTuple2
是一个红鲱鱼。