帮助这是我第一次问这个问题,请温柔地对待我
假设我有一个枚举
typedef enum Fruits
{
Apple = 1,
Banana,
Cat
};
并且有一个功能
const char* printSomething(const Fruits myFruityFruit)
{
switch (myFruityFruit)
{
case Apple:
return "This is Apple!";
case Banana:
return "This is Banana!";
case Cat:
return "This is Cat ... ?";
default:
std::stringstream ss;
ss << "Unknown value: " << myFruityFruit;
auto temp = ss.str();
return temp.c_str();
}
}
和一个看起来像这样的测试用例
TEST(myTest, myFruityTest)
{
ASSERT_EQ("This is Apple!", printSomething(Apple));
ASSERT_EQ("This is Banana!", printSomething(Banana));
ASSERT_EQ("This is Cat ... ?", printSomething(Cat));
Fruits unknownFruit = static_cast<Fruits>(-1);
std::stringstream ss;
ss << "Unknown value: " << unknownFruit;
auto temp = ss.str();
ASSERT_EQ(temp.c_str(), printSomething(unknownFruit));
}
最后ASSERT_EQ
总是失败,我想看看myFruit
的{{1}}的价值是多少default
。switch case
我在
中假设ASSERT_EQ(temp.c_str(), printSomething(unknownFruit));
它看起来像这样
ASSERT_EQ("Unknown value: -1", printSomething(-1));
但是Fruits
没有-1,所以myFruityFruit
将是null
?这就是为什么最后一个ASSERT_EQ
失败了?
在这种情况下究竟发生了什么?我能做些什么来让它通过?
此外,我正在尝试避免任何valgrind错误,如内存泄漏或其他。