zio.test.scalacheck
package zio.test.scalacheck
This package provides helpers to integrate some ScalaCheck primitives to their ZIO equivalents. Currently available helpers:
- Converting ScalaCheck Generators to ZIO Generators
- Asserting a ScalaCheck
Prop
with ZIO - Asserting a ScalaCheck
Properties
with ZIO
Generators
This functionality converts legacy ScalaCheck generators to ZIO Test generators to support upgrading to ZIO Test without having to reimplement existing generators. To use it import this module and then call toGenZIO
on any existing ScalaCheck generator. For example:
import org.scalacheck.Arbitrary
import zio._
import zio.test._
import zio.test.scalacheck._
val anyInt: Gen[Any, Int] =
Arbitrary.arbitrary[Int].toGenZIO
Asserting ScalaCheck Prop
and Properties
This functionality generates ZIO Assertions from either ScalaCheck Prop
or Properties
. This helps with integrating other libraries that provide ScalaCheck properties as helpers, i.e. cats-laws.
Prop
example:
import org.scalacheck.Prop
import org.scalacheck.Test.{ Parameters => ScalaCheckParameters }
import zio._
import zio.test._
import zio.test.scalacheck._
val prop: Prop = Prop.forAll { (n: Int, m: Int) =>
n + m == m + n
}
val resultDefault: TestResult = prop.assertZIO()
val resultWithCustomizations: TestResult =
prop.assertZIO("My Prop Name", ScalaCheckParameters.default.withMaxSize(10))
Properties
example:
import org.scalacheck.{ Prop, Properties }
import org.scalacheck.Test.{ Parameters => ScalaCheckParameters }
import zio._
import zio.test._
import zio.test.scalacheck._
object MyProperties extends Properties("MyProperties") {
property("myProp") = Prop.forAll { (n: Int, m: Int) =>
n + m == m + n
}
}
* val resultDefault: TestResult = MyProperties.assertZIO()
// Beware that we can't provide a custom name here, it will be
// taken from the `Properties` name parameter
val resultWithCustomizations: TestResult =
MyProperties.assertZIO(ScalaCheckParameters.default.withMaxSize(10))
Attributes
Members list
In this article