Skip to content

Instantly share code, notes, and snippets.

@robhinds
Created November 28, 2018 08:38
Show Gist options
  • Save robhinds/363eb138c21ea530fd0982665c19de72 to your computer and use it in GitHub Desktop.
Save robhinds/363eb138c21ea530fd0982665c19de72 to your computer and use it in GitHub Desktop.
case class Capybara(name: String, age: Int, awesome: Boolean)
case class Dog(name: String, age: Int, awesome: Boolean)
object Generator {
import scala.util.Random
def generate[A](implicit gen: Generator[A]): A = gen.gen
implicit val intGenerator = new Generator[Int]{
   override def gen: Int = Random.nextInt(50)
}
implicit val stringGenerator = new Generator[String]{
  override def gen: String = Random.nextString(10)
}
implicit val booleanGenerator = new Generator[Boolean]{
  override def gen: Boolean = Random.nextBoolean
}
implicit val capybaraGenerator = new Generator[Capybara] {
  override def gen: Capybara = Capybara(generate[String], generate[Int], generate[Boolean])
}
implicit val dogGenerator = new Generator[Dog] {
  override def gen: Dog = Dog(generate[String], generate[Int], generate[Boolean])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment