今まで C++ MSTest で float や double といった浮動小数点数型を比較するとき、私はわざわざ以下のように自前で比較関数を用意して書いていました。
TEST_CLASS(MyTest)
{
public:
TEST_METHOD(Test0)
{
float value = ...;
Assert::IsTrue(AreEquals(1.5f, value, 0.000001f));
}
private:
bool AreEquals(float lhs, float rhs, float eps)
{
return fabs(lhs - rhs) <= eps;
}
};
ところが、よく見たら標準の Assert 関数にちゃんと誤差を加味した関数あるじゃないですか..
TEST_CLASS(MyTest)
{
public:
TEST_METHOD(Test0)
{
float value = ...;
Assert::AreEqual(1.5f, value, 0.000001f);
}
};
そりゃないと面倒ですもんね..今更気が付くとは。最初にちゃんとドキュメント読めって話ですね。