Skip to content

Commit f68bd8f

Browse files
committed
Add consistency law for alignMergeWith
1 parent 89deb4c commit f68bd8f

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

laws/src/main/scala/cats/laws/AlignLaws.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
package cats
2323
package laws
2424

25-
import cats.syntax.align._
26-
import cats.syntax.functor._
25+
import cats.syntax.align.*
26+
import cats.syntax.functor.*
2727

2828
import cats.data.Ior
2929
import cats.data.Ior.{Both, Left, Right}
@@ -45,6 +45,9 @@ trait AlignLaws[F[_]] {
4545
def alignWithConsistent[A, B, C](fa: F[A], fb: F[B], f: A Ior B => C): IsEq[F[C]] =
4646
fa.alignWith(fb)(f) <-> fa.align(fb).map(f)
4747

48+
def alignMergeWithConsistent[A](fa1: F[A], fa2: F[A], f: (A, A) => A): IsEq[F[A]] =
49+
fa1.alignMergeWith(fa2)(f) <-> fa1.align(fa2).map(_.mergeWith(f))
50+
4851
private def assoc[A, B, C](x: Ior[A, Ior[B, C]]): Ior[Ior[A, B], C] =
4952
x match {
5053
case Left(a) => Left(Left(a))

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ package laws
2424
package discipline
2525

2626
import org.scalacheck.{Arbitrary, Cogen, Prop}
27-
import Prop._
27+
import Prop.*
2828

2929
import cats.data.Ior
3030
import org.typelevel.discipline.Laws
@@ -54,12 +54,9 @@ trait AlignTests[F[_]] extends Laws {
5454
name = "align",
5555
parent = None,
5656
"align associativity" -> forAll(laws.alignAssociativity[A, B, C] _),
57-
"align homomorphism" -> forAll { (fa: F[A], fb: F[B], f: A => C, g: B => D) =>
58-
laws.alignHomomorphism[A, B, C, D](fa, fb, f, g)
59-
},
60-
"alignWith consistent" -> forAll { (fa: F[A], fb: F[B], f: A Ior B => C) =>
61-
laws.alignWithConsistent[A, B, C](fa, fb, f)
62-
}
57+
"align homomorphism" -> forAll(laws.alignHomomorphism[A, B, C, D] _),
58+
"alignWith consistent" -> forAll(laws.alignWithConsistent[A, B, C] _),
59+
"alignMergeWith consistent" -> forAll(laws.alignMergeWithConsistent[A] _)
6360
)
6461
}
6562

0 commit comments

Comments
 (0)