Ich versuche, eine Liste von beliebigen UUIDs mit scalacheck (Version 1.12.2) zu generieren. Aus irgendeinem Grund ist jede UUID in der generierten Liste identisch. Dies ist bei anderen Typen wie List [String] oder List [Int] nicht der Fall. Hier ist der Code, den ich geschrieben habe:Scalacheck erzeugt immer die gleiche UUID für eine beliebige Liste [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(_))
}
}
Und ein Probelauf:
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
Dank! Das hat es behoben. – emccorson