2

パーセンテージではなく絶対差で機能する BOOST_CHECK_CLOSE のバージョンはありますか? 場合によっては、絶対差の方が理にかなっている場合があります。たとえば、お金を扱っている場合 (そうです、double が最適なタイプではないことはわかっています)、答えが最も近いペニーに問題がないことを確認する場合があります。他にもたくさんの例があります。

BOOST_CHECK_SMALL などを使用してこれらのいずれかを自分で記述するのはかなり簡単ですが、正しいマクロの詳細な出力により、エラーを追跡するのがはるかに簡単になります。

4

1 に答える 1

6

TBH、BOOST_CHECK_SMALL の問題がわかりません:

double val = func(); //should be between 95 and 105
BOOST_CHECK_SMALL(val - 100, 5);

ただし、CHECK_CLOSE のように見える必要がある場合は、boost と同じように独自のマクロをロールする必要があります。対応するヘッダーを掘り下げるだけです。おそらく、独自のチェック タイプ列挙値を追加し、述語を作成してマクロで使用する必要があります。

または、BOOST_CHECK_PREDICATEを使用します。これは、正直なところ、CHECK_SMALL よりもはるかに醜く見えますが、違いがあります。または、述語を返すカスタム関数で BOOST_CHECK を使用するだけですが、それはやり過ぎだと思います。

于 2013-02-21T15:40:27.793 に答える