Skip to content

Commit 10c26d5

Browse files
committed
Add labels to prop produced from IsEq
1 parent 7f403ef commit 10c26d5

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

kernel-laws/src/main/scala/cats/kernel/laws/discipline/package.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,15 @@ package cats.kernel.laws
22

33
import cats.kernel.Eq
44
import org.scalacheck.Prop
5+
import org.scalacheck.util.Pretty
56

67
package object discipline {
7-
implicit def catsLawsIsEqToProp[A](isEq: IsEq[A])(implicit ev: Eq[A]): Prop =
8-
ev.eqv(isEq.lhs, isEq.rhs)
8+
implicit def catsLawsIsEqToProp[A](isEq: IsEq[A])(implicit ev: Eq[A], pp: A => Pretty): Prop =
9+
isEq match { case IsEq(x, y) =>
10+
if(ev.eqv(x, y)) Prop.proved else Prop.falsified :| {
11+
val exp = Pretty.pretty[A](y, Pretty.Params(0))
12+
val act = Pretty.pretty[A](x, Pretty.Params(0))
13+
s"Expected: $exp\n" + s"Received: $act"
14+
}
15+
}
916
}

laws/src/main/scala/cats/laws/discipline/package.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package cats
22
package laws
33

44
import org.scalacheck.Prop
5+
import org.scalacheck.util.Pretty
56

67
package object discipline {
78

89
val SerializableTests = cats.kernel.laws.discipline.SerializableTests
910

10-
implicit def catsLawsIsEqToProp[A: Eq](isEq: IsEq[A]): Prop =
11+
implicit def catsLawsIsEqToProp[A: Eq](isEq: IsEq[A])(implicit pp: A => Pretty): Prop =
1112
cats.kernel.laws.discipline.catsLawsIsEqToProp[A](isEq)
1213
}

0 commit comments

Comments
 (0)