Google Test:如何EXPECT_EQ不可打印的ASCII值

时间:2015-03-26 17:08:06

标签: c++ testing googletest

在我的测试中,我在一个字符上设置一个EXPECT_EQ()来对抗某些字符,例如' a'' b'等......到目前为止一直很好。

现在我应该测试一个不可打印的ASCII字符(0xFE)。我的角色被定义为' char'所以对文字0xFE的直接测试每次都会失败!

char a;
a = 0xFE;
EXPECT_EQ(a, 0xFE);   <-- fail!!!

1 个答案:

答案 0 :(得分:2)

您要为char a分配254。如您所知,char宽度足以容纳 它没有截断,但超过了char [0,127]的正范围。 它变为负数,积分值为-2。因此它整体上不等于254和 EXPECT_EQ失败。

因此,在EXPECT_EQ中,您必须坚持与 unsigned 进行比较 a中的整数值:

char a;
a = 0xFE;
EXPECT_EQ((unsigned char)a, 0xFE);