5
私はすべての私の理解に合格しなければならないテストに遭遇しました。私は明白な何かをここに欠いていますか?Scalatest 'DoubleTolerance'のバグ?
import org.scalatest._
class xxxTests extends FlatSpec with ShouldMatchers {
import math.{Pi => PI}
"" should "(this should pass)" in {
assert(0.0 === 0.0) // ok
(1e-100) should equal ((0.0) plusOrMinus 1e-5) // FAILS!!! "1.0E-100 did not equal DoubleTolerance(0.0,1.0E-5)"
(1e-3) should not equal ((0.0) plusOrMinus 1e-5) // ok
(0.0) should equal ((0.0) plusOrMinus 1e-5) // FAILS!!! "0.0 did not equal DoubleTolerance(0.0,1.0E-5)"
}
}
これはScalatest 1.8と2.0M4の両方でこれを経験しました。
まあでなければならない、あなた自身にあまりにも難しいことではありません。私はDSLがこの間違いを招いたと思う。私の最初のアイデアは、matcherは2つのオブジェクトに対して常に==を呼び出すことを意味する何らかの方法が必要であり、それは同等であるということでした。例外として、左と右の配列の.deepを呼び出す点を除いては例外です。私は "xは等しくなければなりません(y plusOrMinus tol)"はうまくいくはずだと思っています。だから私は実際にScalaTestの近々のバージョンでその構文をサポートすると思います。誰かが本当に平等のために2つの公差を比較したいと思うなら、彼らは主張でそうすることができます。 –