Skip to content

sbaum1994/scalacheck-shapeless

 
 

Repository files navigation

scalacheck-shapeless

Generation of arbitrary case classes / ADTs instances with scalacheck and shapeless

Build Status Gitter Maven Central

Usage

Add to your build.sbt

resolvers += Resolver.sonatypeRepo("releases")

libraryDependencies += "com.github.alexarchambault" %% "scalacheck-shapeless_1.13" % "1.1.1"

If you are using scala 2.10.x, also add the macro paradise plugin to your build,

libraryDependencies +=
  compilerPlugin("org.scalamacros" % "paradise" % "2.0.1" cross CrossVersion.full)

scalacheck-shapeless depends on shapeless 2.3 and scalacheck 1.13. If you are using shapeless 2.2 along with scalacheck 1.13, use the 1.0.0 version. If you are using shapeless 2.2 along with scalacheck 1.12, see the 0.3.x branch.

Import the content of org.scalacheck.Shapeless close to where you want Arbitrary type classes to be automatically available for case classes / sealed hierarchies,

import org.scalacheck.Shapeless._

//  If you defined:

// case class Foo(i: Int, s: String, blah: Boolean)
// case class Bar(foo: Foo, other: String)

// sealed trait Base
// case class BaseIntString(i: Int, s: String) extends Base
// case class BaseDoubleBoolean(d: Double, b: Boolean) extends Base

//  then you can now do

implicitly[Arbitrary[Foo]]
implicitly[Arbitrary[Bar]]
implicitly[Arbitrary[Base]]

and in particular, while writing property-based tests,

property("some property about Foo") {
  forAll { foo: Foo =>
    // Ensure foo has the required property
  }
}

without having to define yourself an Arbitrary for Foo.

For the development version, add instead to your build.sbt

resolvers ++= Seq(
  Resolver.sonatypeRepo("releases"),
  Resolver.sonatypeRepo("snapshots")
)

libraryDependencies +=
  "com.github.alexarchambault" %% "scalacheck-shapeless_1.13" % "1.1.2-SNAPSHOT"

(Macro paradise plugin also necessary with scala 2.10, see above.)

See also

About

Generation of arbitrary case classes / ADTs instances with scalacheck and shapeless

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Scala 100.0%