gtest を使用してテストしようとしているカスタム集計テンプレート タイプがあります。TYPED_TEST_P を使用して、さまざまな型をテストしています。ブール型を実行しようとするまでは問題なく動作します。次の「エラー」が表示されます
error: Value of: const_img.at(pt.x,pt.y)
Actual: true
Expected: *buffer
Which is: true
したがって、これはエラーがあると言っています: true != true. この問題を以前に見た人はいますか?どのように修正しますか?
ここにすべてのコードを投稿することはできませんが、次のとおりです。
非エラーをキャッチする呼び出しは次のとおりです。
ASSERT_EQ(*buffer,const_img.at(pt.x,pt.y))
TypeParam
は、この場合の typedef であり、bool
に基づいて Google Test によって提供されますTYPED_TEST_P
。 buffer
次のタイプがあります。
const TypeParam* buffer;
const_image
const Image<TypeParam>&
(カスタム クラス) であり、at
フットプリントを持つ const オーバーロードになります。
const TypeParam& at(ptrdiff_t col,ptrdiff_t row) const;
明らかに、これは正しい値を返し (true は true に等しくなければなりません)、次の if ステートメントのブレークポイントには到達しません。
if (*buffer != const_img.at(pt.x,pt.y))
{
std::cout << "here" << std::endl;
}
const オーバーロードのテストをスキップすると、エラーは発生しません (これは奇妙です)。
編集:回避策
次の回避策は機能しますが、...ばかげています。
TypeParam a = const_img.at(pt.x,pt.y);
TypeParam b = *buffer;
ASSERT_EQ(
a,b);