package funobject
import org.scalacheck.Test.check
import org.scalacheck.ConsoleReporter.testReport
import org.scalatest.Spec
import org.scalatest.matchers.ShouldMatchers
import org.scalatest.tools._
import funobject.Rational._
import funobject._
class RationalSpec extends Spec with ShouldMatchers {
// shorthand for Rational object
val R = Rational
describe("A Rational Number") {
it("should throw IllegalArgumentException " +
"if zero denuminator pased to ctor") {
evaluating { val e = R(1, 0) } should produce [IllegalArgumentException]
}
it("should implement +, -, *, / and unary -") {
R(1,2) + R(2, 3) should have {
'nomer (7)
'denom (6)
}
R(3,2) - R(1, 3) should have {
'nomer (7)
'denom (6)
}
R(1, 3) * R(2, 5) should have {
'nomer (2)
'denom (15)
}
R(1, 3) / R(2, 5) should have {
'nomer (5)
'denom (6)
}
-R(1, 2) should have {
'nomer (-1)
'denom (2)
}
}
it("should have normal form") {
R(22, 42) should be === R(11, 21)
}
it("should support mixed ariphmetic" +
" with implicit cast from integer") {
R(1,2) / 7 + (1 - R(2,3)) should be === R(-11, 42)
}
it("should have a total order") {
import RationalOrderingCheck._
check(propertyReflexive) should be ('passed)
check(propertySymmetry) should be ('passed)
check(propertyTransitive) should be ('passed)
}
}
}
June 24, 2010
org.scalatest.Spec for Rational
A rational number is a number that can be expressed as a ratio d/n ....
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment