All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalaprops.scalazlaws.representable.scala Maven / Gradle / Ivy

package scalaprops
package scalazlaws

import scalaz.{Representable, Equal}
import scalaz.std.anyVal._
import scalaprops.Property.forAll

object representable {

  def repUnrep[F[_], X, A](implicit F: Representable[F, X], G: Gen[F[A]], E: Equal[F[A]]): Property =
    forAll(F.representableLaw.repUnrep[A] _)

  def unrepRep[F[_], X, A](implicit F: Representable[F, X], G1: Gen[X => A], G2: Gen[X], E: Equal[A]): Property =
    forAll(F.representableLaw.unrepRep[A] _)

  def laws[F[_], X](implicit F: Representable[F, X], G1: Gen[X => Byte], G2: Gen[F[Byte]], G3: Gen[X], E: Equal[F[Byte]]) =
    Properties.properties(ScalazLaw.representable)(
      ScalazLaw.representableRepUnrep -> repUnrep[F, X, Byte],
      ScalazLaw.representableUnrepRep -> unrepRep[F, X, Byte]
    )

  def all[F[_], X](implicit F: Representable[F, X], G1: Gen[X => Byte], G2: Gen[F[Byte]], G3: Gen[X], E: Equal[F[Byte]]) =
    laws[F, X]

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy