embracing-nondeterminism-code/src/test/scala/green/thisfieldwas/embracingnondeterminism/stdlib/IntegerSpec.scala

24 lines
686 B
Scala

package green.thisfieldwas.embracingnondeterminism.stdlib
import green.thisfieldwas.embracingnondeterminism.data.{Monoid, MonoidLaws, SemigroupLaws}
import green.thisfieldwas.embracingnondeterminism.util._
/** Proves that Scala's Int conforms to Monoids and Semigroups.
*/
class IntegerSpec extends Laws with SemigroupLaws with MonoidLaws {
implicit val intMonoid: Monoid[Int] = new Monoid[Int] {
/** Int's form Monoids with an identity value of 0.
*/
override def empty: Int = 0
/** Int's form Semigroups under addition.
*/
override def combine(left: Int, right: Int): Int = left + right
}
checkSemigroupLaws[Int]()
checkMonoidLaws[Int]()
}