2015-12-09 3 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 

тесты хорошо работать, но два теста ведут себя по-разному: «корректировочного «дело компилируется ОК,« ложный »случай представляет с предупреждением

В файле, прилагаемом к /... ./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' в тип указателя для аргумента 1 из 'char testing :: internal :: IsNullLiteralHelper (testing :: internal :: Secret *)' [-Wconversion-null] (sizeof (:: testing: : internal :: IsNullLiteralHelper (x)) == 1) ^

Почему gtest хочет преобразовать 'false' в указатель? И почему не «правда»? Я что-то пропустил?

+0

Почему вы не используете 'EXPECT_TRUE' и' EXPECT_FALSE' для булевых тестов? –

ответ

6

Для booleans необходимо использовать EXPECT_TRUE() и EXPECT_FALSE(), а не EXPECT_EQ.

+1

Не объясняет, что происходит. Почему eq не работает для bools? –

+0

@ The Badger: Я просто скопировал строки теста над тестируемой линией. Да, я могу использовать EXPECT_TRUE() и т. Д. Я думаю, однако, что eq тоже должен работать. И мне также кажется странным, что «ложь» вызывает очень странное обращение, а «истина» работает так, как ожидалось. – katang

0

Проблема не с gtest, это на самом деле ошибка gcc, как указано here.

Смежные вопросы