2
scalacheck(バージョン1.12.2)を使用して任意のUUIDのリストを生成しようとしています。何らかの理由で、生成されたリストのすべてのUUIDが同じです。これは、List [String]やList [Int]などの他の型の場合には当てはまりません。Scalacheckは常にList [UUID]の任意のUUIDを生成します
import org.scalacheck.Arbitrary.arbitrary
import org.scalacheck.Arbitrary
import java.util.UUID
case class SomeUUIDClass(field: List[UUID])
case class SomeOtherClass(field: List[Int])
object Arb {
implicit def arbUUID: Arbitrary[UUID] = Arbitrary {
UUID.randomUUID()
}
implicit def arbUUIDClass = Arbitrary {
for {
field <- arbitrary[List[UUID]]
} yield SomeUUIDClass(field)
}
implicit def arbOtherClass = Arbitrary {
for {
field <- arbitrary[List[Int]]
} yield SomeOtherClass(field)
}
def main(args: Array[String]) {
println("without uuids:")
arbitrary[SomeOtherClass].sample.get.field.foreach(println(_))
println("")
println("with uuids:")
arbitrary[SomeUUIDClass].sample.get.field.foreach(println(_))
}
}
とサンプルを実行します:
without uuids:
-1
0
2147483647
-1
-2147483648
527079214
-698179980
1192016877
-1001957700
0
682853458
-1
-2147483648
109314552
1130736291
1080418
1771214863
1164874892
-1306566270
2147483647
-2009106057
2147483647
-2147483648
-1
-1
-1
945958506
777623735
-490377345
-272177229
0
-2147483648
-1753697474
-1
736327057
415072340
0
with uuids:
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
ありがとう!それはそれを修正した。 – emccorson