scalacheck-magnolia performs generic derivation of scalacheck
Arbitrary instances for product and sum types, i.e. case classes and ADTs, using Magnolia. Much of the code was inspired by scalacheck-shapeless, which I've found to work reliably, but cause huge compile time increases, especially for deeply nested case classes.
Add to your
libraryDependencies += "com.mrdziuban" %% "scalacheck-magnolia" % "0.0.2"
This will pull in scalacheck 1.14.0 and magnolia 0.10.0.
Arbitrary instances for your case classes or sealed traits, import
com.mrdziuban.ScalacheckMagnolia._. Magnolia can derive
Arbitrary instances for case classes
import com.mrdziuban.ScalacheckMagnolia._ import org.scalacheck.Arbitrary case class Test(i: Int, b: Boolean, s: String) implicitly[Arbitrary[Test]]
as well as for sealed traits
sealed trait Foo case object Bar extends Foo case class Baz(s: String) extends Foo implicitly[Arbitrary[Foo]]
It can be used in scalacheck property tests like so:
import org.scalacheck.Prop.forAll case class Test(i: Int, b: Boolean, s: String) forAll((t: Test) => true /* check some properties of Test */)
Released under the Apache 2.0 license. See the LICENSE file for more details.