Skip to content

Commit 667c42e

Browse files
authored
Merge pull request #1088 from FunFunFine/master
Add BigDecimal instances for cats
2 parents 5a362e9 + b0eac29 commit 667c42e

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

modules/cats/shared/src/main/scala/eu/timepit/refined/cats/package.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ package object cats {
4343
getCommutativeSemigroup[Float, Positive]
4444
implicit val posDoubleCommutativeSemigroup: CommutativeSemigroup[PosDouble] =
4545
getCommutativeSemigroup[Double, Positive]
46+
implicit val posBigDecimalCommutativeSemigroup: CommutativeSemigroup[PosBigDecimal] =
47+
getCommutativeSemigroup[BigDecimal, Positive]
4648

4749
implicit val negByteCommutativeSemigroup: CommutativeSemigroup[NegByte] =
4850
getNegIntegralCommutativeSemigroup[Byte]
@@ -56,6 +58,8 @@ package object cats {
5658
getCommutativeSemigroup[Float, Negative]
5759
implicit val negDoubleCommutativeSemigroup: CommutativeSemigroup[NegDouble] =
5860
getCommutativeSemigroup[Double, Negative]
61+
implicit val negBigDecimalCommutativeSemigroup: CommutativeSemigroup[NegBigDecimal] =
62+
getCommutativeSemigroup[BigDecimal, Negative]
5963

6064
// Monoid instances
6165
implicit val nonNegByteCommutativeMonoid: CommutativeMonoid[NonNegByte] =
@@ -70,6 +74,8 @@ package object cats {
7074
getCommutativeMonoid[Float, NonNegative]
7175
implicit val nonNegDoubleCommutativeMonoid: CommutativeMonoid[NonNegDouble] =
7276
getCommutativeMonoid[Double, NonNegative]
77+
implicit val nonNegBigDecimalCommutativeMonoid: CommutativeMonoid[NonNegBigDecimal] =
78+
getCommutativeMonoid[BigDecimal, NonNegative]
7379

7480
implicit val nonPosFloatCommutativeMonoid: CommutativeMonoid[NonPosFloat] =
7581
getCommutativeMonoid[Float, NonPositive]

modules/cats/shared/src/test/scala/eu/timepit/refined/cats/CommutativeSemigroupAndMonoidLawTests.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ class CommutativeSemigroupAndMonoidLawTests
4949
"CommutativeSemigroup[PosDouble]",
5050
SerializableTests.serializable(CommutativeSemigroup[PosDouble])
5151
)
52+
checkAll(
53+
"CommutativeSemigroup[PosBigDecimal]",
54+
SerializableTests.serializable(CommutativeSemigroup[PosBigDecimal])
55+
)
5256

5357
// Negative commutativeSemigroups
5458
checkAll("CommutativeSemigroup[NegByte]", CommutativeSemigroupTests[NegByte].commutativeSemigroup)
@@ -84,6 +88,10 @@ class CommutativeSemigroupAndMonoidLawTests
8488
"CommutativeSemigroup[NegDouble]",
8589
SerializableTests.serializable(CommutativeSemigroup[NegDouble])
8690
)
91+
checkAll(
92+
"CommutativeSemigroup[NegBigDecimal]",
93+
SerializableTests.serializable(CommutativeSemigroup[NegBigDecimal])
94+
)
8795

8896
// NonNegative monoids
8997
checkAll("CommutativeMonoid[NonNegByte]", CommutativeMonoidTests[NonNegByte].commutativeMonoid)
@@ -116,6 +124,10 @@ class CommutativeSemigroupAndMonoidLawTests
116124
"CommutativeMonoid[NonNegDouble]",
117125
SerializableTests.serializable(CommutativeMonoid[NonNegDouble])
118126
)
127+
checkAll(
128+
"CommutativeMonoid[NonNegBigDecimal]",
129+
SerializableTests.serializable(CommutativeMonoid[NonNegBigDecimal])
130+
)
119131

120132
// NonPositive monoids
121133
// checkAll("Monoid[NonPosFloat]", CommutativeMonoidTests[NonPosFloat].commutativeMonoid) // approximately associative

0 commit comments

Comments
 (0)