Google 测试:如何 EXPECT_EQ 不可打印的 ASCII 值
Google Test: how to EXPECT_EQ non printable ASCII values
在我的测试中,我针对 'a'、'b' 等某些字符在 char 上设置了 EXPECT_EQ()...到目前为止还不错。
现在我应该针对不可打印的 ASCII 字符 (0xFE) 进行测试。我的角色定义为 'char',因此每次针对文字 0xFE 的直接测试都会失败!
char a;
a = 0xFE;
EXPECT_EQ(a, 0xFE); <-- fail!!!
您正在将 254 分配给 char a
。如您所知,char
的宽度足以容纳
它没有截断,但它超出了 char
[0,127] 的正数范围。
它变为负数,整数值为 -2。因此它完全不等于 254 并且
EXPECT_EQ
失败。
所以,在那EXPECT_EQ
中,你必须坚持与unsigned比较
a
:
中的整数值
char a;
a = 0xFE;
EXPECT_EQ((unsigned char)a, 0xFE);
在我的测试中,我针对 'a'、'b' 等某些字符在 char 上设置了 EXPECT_EQ()...到目前为止还不错。
现在我应该针对不可打印的 ASCII 字符 (0xFE) 进行测试。我的角色定义为 'char',因此每次针对文字 0xFE 的直接测试都会失败!
char a;
a = 0xFE;
EXPECT_EQ(a, 0xFE); <-- fail!!!
您正在将 254 分配给 char a
。如您所知,char
的宽度足以容纳
它没有截断,但它超出了 char
[0,127] 的正数范围。
它变为负数,整数值为 -2。因此它完全不等于 254 并且
EXPECT_EQ
失败。
所以,在那EXPECT_EQ
中,你必须坚持与unsigned比较
a
:
char a;
a = 0xFE;
EXPECT_EQ((unsigned char)a, 0xFE);