在我的测试中,我在一个字符上设置一个EXPECT_EQ()来对抗某些字符,例如' a'' b'等......到目前为止一直很好。
现在我应该测试一个不可打印的ASCII字符(0xFE)。我的角色被定义为' char'所以对文字0xFE的直接测试每次都会失败!
char a;
a = 0xFE;
EXPECT_EQ(a, 0xFE); <-- fail!!!
答案 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);