Discipline integration
Weaver comes with basic Discipline integration, allowing property-based law testing.
Installation
You'll need to install an additional dependency in order to use Discipline with Weaver.
SBT
libraryDependencies += "com.disneystreaming" %% "weaver-discipline" % "0.8.3" % Test
Mill
object test extends Tests {
def ivyDeps = Agg(
ivy"com.disneystreaming::weaver-discipline:0.8.3"
)
}
Usage
Add the weaver.discipline.Discipline
mixin to a FunSuite
to use Discipline within your test suite.
import weaver._
import weaver.discipline._
import cats.kernel.laws.discipline.EqTests
object DisciplineTests extends FunSuite with Discipline {
checkAll("Int", EqTests[Int].eqv)
checkAll("Boolean", EqTests[Boolean].eqv)
}
repl.MdocSessionMdocAppDisciplineTests
+ Int: eq.antisymmetry eq 40ms
+ Int: eq.reflexivity eq 5ms
+ Int: eq.symmetry eq 7ms
+ Int: eq.transitivity eq 8ms
+ Boolean: eq.antisymmetry eq 4ms
+ Boolean: eq.reflexivity eq 6ms
+ Boolean: eq.symmetry eq 2ms
+ Boolean: eq.transitivity eq 2ms
Total 8, Failed 0, Passed 8, Ignored 0, Cancelled 0