package maybe import org.scalatest.FlatSpec import org.scalatest.matchers.ShouldMatchers class SafeMathSpec extends FlatSpec with ShouldMatchers { import safe._ behavior of "various implementations of safe.safeLogSqrt" they should "agree over a range of test input" in { shouldAgreeOverTestInputRange(safeLogSqrt1 _, safeLogSqrt2 _) shouldAgreeOverTestInputRange(safeLogSqrt1 _, safeLogSqrt3 _) shouldAgreeOverTestInputRange(safeLogSqrt1 _, safeLogSqrt4 _) shouldAgreeOverTestInputRange(safeLogSqrt1 _, safeLogSqrt5 _) } def shouldAgreeOverTestInputRange( safeLogSqrt1: (Double) => Maybe[Double], safeLogSqrt2: (Double) => Maybe[Double]) { doubles foreach { d => (safeLogSqrt1(d)) should equal (safeLogSqrt2(d)) } } }