Skip to content

Commit be16753

Browse files
committed
a 'MatcherFactory1' design
- this fails because the TC parameter should be a type member to avoid scala/bug#5075 but it is not
1 parent 4a31fe9 commit be16753

File tree

1 file changed

+11
-19
lines changed
  • daml-lf/scalatest-tools/src/main/scala/com/digitalasset/daml/lf/scalatest

1 file changed

+11
-19
lines changed

daml-lf/scalatest-tools/src/main/scala/com/digitalasset/daml/lf/scalatest/Equalz.scala

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
import org.scalatest.Matchers
5-
import org.scalatest.matchers.{MatchResult, Matcher}
5+
import org.scalatest.matchers.{MatchResult, Matcher, MatcherFactory1}
66
import scalaz.Equal
77

88
/** Provides the `equalz` [[Matcher]].
@@ -27,27 +27,19 @@ import scalaz.Equal
2727
trait Equalz extends Matchers {
2828
import Equalz.{EqualzInvocation, Lub}
2929

30-
private[this] final def equalzImpl[A](expected: A)(implicit A: Equal[A]): Matcher[A] =
31-
actual =>
32-
MatchResult(
33-
A.equal(expected, actual),
34-
s"$actual did not equal $expected",
35-
s"$actual equalled $expected"
36-
)
37-
38-
def equalz[Ac](ac: Ac): EqualzInvocation[Ac] = new EqualzInvocation(ac)
39-
40-
implicit final class AnyShouldzWrapper[Ex](private val expected: Ex) {
41-
def should[Ac, T](actual: EqualzInvocation[Ac])(implicit lub: Lub[Ex, Ac, T], eq: Equal[T]) =
42-
(lub.left(expected): AnyShouldWrapper[T]) should equalzImpl(lub.right(actual.actual))
43-
def shouldNot[Ac, T](actual: EqualzInvocation[Ac])(implicit lub: Lub[Ex, Ac, T], eq: Equal[T]) =
44-
(lub.left(expected): AnyShouldWrapper[T]) shouldNot equalzImpl(lub.right(actual.actual))
45-
}
30+
final def equalz[Ex](expected: Ex): MatcherFactory1[Ex, Equal] =
31+
new MatcherFactory1[Ex, Equal] {
32+
override def matcher[T <: Ex](implicit ev: Equal[T]): Matcher[T] =
33+
actual =>
34+
MatchResult(
35+
ev.equal(expected, actual),
36+
s"$actual did not equal $expected",
37+
s"$actual equalled $expected"
38+
)
39+
}
4640
}
4741

4842
object Equalz extends Equalz {
49-
final class EqualzInvocation[+Ac](private[Equalz] val actual: Ac) extends AnyVal
50-
5143
sealed abstract class Lub[-A, -B, C] {
5244
def left(l: A): C
5345
def right(r: B): C

0 commit comments

Comments
 (0)