I'm trying to generate random data with Scalacheck. I have a hierarchy of case classes with many properties. The only way I've found so far to populate the case classes is like this :
case class Data(a: String,
b: String,
c: String)
val genLigneDecompte: Gen[Data] = for {
ag <- Gen.alphaStr
bg <- Gen.alphaStr
cg <- Gen.alphaStr
} yield Data(
a = ag,
b = bg,
c = cg
)
For a case class with 10-20 properties it's pretty tedious. I was wondering if there was a way to automate it somehow...
Another approach would be
DanielaSfregola/random-data-generator
, A library to generate random data for test purposes, using ScalaCheck and scalacheck-shapeless.For Scala 2.11.8 or more, it can generate for you the initialization sequence for a case class with many field.
I am sure somebody will come up with a solution that abstracts over arity using shapeless. But there are some helper methods to generate Gen[T] instances from functions of varying arity, which can be used with the apply method of the case class companion object
There is a shapeless based Scalacheck library https://github.com/alexarchambault/scalacheck-shapeless what you might be looking for