1

我有一个枚举RankAndFile,其中有 64 个值代表棋盘上的方格。

我想获得一个 ScalaCheckArbitrary[(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]。当然这是因为类型arbitraryRankAndFileArbitrary[Gen[RankAndFile]]

我应该有什么?

4

1 回答 1

3

任意单个值就足够了:

implicit def rankAndFile = Arbitrary { Gen.oneOf(RankAndFile.values.toSeq) }

要检查的属性采用一个元组,RankAndFilescalacheck 可以从这个单个Arbitrary值中满足该元组。该方法Arbitrary.arbTuple2是红鲱鱼。

于 2013-08-27T14:28:32.523 回答