2015-12-09 8 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:1929TP, से/... .cpp: 1: /... से शामिल है। सीपीपी: सदस्य समारोह में वर्चुअल शून्य ... :: टेस्टबॉडी() ': /... /build/gtest/src/gtest/include/gtest/internal/gtest-internal.h:133:55: चेतावनी: 'char परीक्षण = आंतरिक :: IsNullLiteralHelper (परीक्षण :: आंतरिक :: गुप्त *)' [-Wconversion-null] (आकार (:: परीक्षण: : आंतरिक :: IsNullLiteralHelper (x)) == 1) ^

gtest क्यों 'झूठी' को सूचक में परिवर्तित करना चाहता है? और क्यों 'सच' नहीं? क्या मुझे कुछ याद आती है?

+0

आप बूलियन परीक्षणों के लिए 'EXPECT_TRUE' और' EXPECT_FALSE' का उपयोग क्यों नहीं करते? –

उत्तर

6

बूलियन के लिए आपको EXPECT_TRUE() और EXPECT_FALSE()EXPECT_EQ के बजाय उपयोग करने की आवश्यकता है।

+1

यह नहीं समझाता कि क्या हो रहा है। बूल के लिए काम क्यों नहीं करता है? –

+0

@ बैजर: मैंने अभी प्रश्न में परीक्षण लाइन के ऊपर परीक्षण की पंक्तियों की प्रतिलिपि बनाई है। हां, मैं EXPECT_TRUE() इत्यादि का उपयोग कर सकता हूं, हालांकि, मुझे लगता है कि eq भी काम करना चाहिए। और, मुझे यह भी अजीब लगता है कि 'झूठा' एक बहुत ही अजीब रूपांतरण को उत्तेजित करता है, जबकि 'सत्य' अपेक्षित काम करता है। – katang

0

समस्या gtest के साथ नहीं है, यह वास्तव में एक जीसीसी बग है जैसा कि here कहा गया है।

संबंधित मुद्दे