2015-12-09 18 views
5

私は私の機能の正しい動作をテストしていGTEST予期しない変換

bool Core::IsMeta(void) 
{ 
    return mProc->GetCode(mPC)->Meta; 
} 

使用説明書

EXPECT_EQ(true,CC->IsMeta()); // The instruction pointed to is meta 
EXPECT_EQ(false,CC1->IsMeta()); // The instruction pointed to is NOT meta 

テストはOK実行されますが、二つの試験は異なる挙動を示す:「真の'ケースが正常にコンパイルされ、「偽」のケースに警告が表示される

ファイル内には /.../build/gtest/src/gtest/include/gtest/gtest.h:1929:0、 /から.cpp:1: /...のファイルが含まれています。 cpp: メンバ関数 'virtual void ... :: TestBody()': /... /build/gtest/src/gtest/include/gtest/internal/gtest-internal.h:133:55: 警告: 'false'を 'char 'の引数1のポインタ型に変換しています。 [-Wconversion-null] (sizeof(:: testing: :内部:: IsNullLiteralHelper(x))== 1) ^

なぜgtestは 'false'をポインタに変換したいのですか?そしてなぜ「真実」ではないのですか? 私は何かが恋しいですか?

+0

なぜブールテストに 'EXPECT_TRUE'と' EXPECT_FALSE'を使わないのですか? –

答えて

6

ブール値の場合は、EXPECT_EQではなくEXPECT_TRUE()EXPECT_FALSE()を使用する必要があります。

+1

何が起こっているのか説明しません。なぜeqはboolには使えないのですか? –

+0

@ Badger:私は問題のテストラインの上にテストラインをコピーしました。はい、私はEXPECT_TRUE()などを使うことができます。しかし、eqもうまくいくはずです。そして、私はまた、「偽」が非常に奇妙な変換を引き起こし、「真」は期待通りに働くのは奇妙であることも分かります。 – katang

0

問題はgtestではなく、実際にはhereと記載されているgccバグです。