discipline-scalatest

ScalaTest binding for Typelevel Discipline

Quick Start

libraryDependencies ++= Seq(
  "org.typelevel" %% "discipline-scalatest" % "2.2.0"
)

Mixing in Discipline

Suppose we have the following laws for truth. More useful laws are published in projects like cats-laws, cats-effect-laws, and spire-laws.

import org.scalacheck.Prop
import org.typelevel.discipline.Laws

object TruthLaws extends Laws {
  def truth = new DefaultRuleSet(
    name = "truth",
    parent = None,
    "true" -> Prop(_ => Prop.Result(status = Prop.True))
  )
}

discipline-scalatest provides a FunSuiteDiscipline mixin (as well as similar traits for FlatSpec and FunSpec), whose checkAll helper lets us easily check the laws in ScalaTest:

import org.scalatest.funsuite.AnyFunSuite
import org.scalatestplus.scalacheck.Checkers
import org.typelevel.discipline.scalatest.FunSuiteDiscipline

class TruthSuite extends AnyFunSuite with FunSuiteDiscipline with Checkers {
  checkAll("Truth", TruthLaws.truth)
}