2013-08-27 44 views
1

我有一個枚舉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]]

我應該改爲什麼?

回答

1

的任意一個值已經足夠:

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

財產進行檢查拿了RankAndFile一個元組可能由scalacheck從這個單一Arbitrary值來滿足。方法Arbitrary.arbTuple2是一個紅鯡魚。