如何使用cppunit断言宏来检查返回数据类型的预处理器值?

时间:2016-01-29 08:54:45

标签: c++ linux eclipse cppunit

我有一个预处理程序指令列表:

#define __SIZE_TYPE__ long unsigned int
#define __UINT16_TYPE__ short unsigned int
#define __UINT_LEAST8_TYPE__ unsigned char
#define __VERSION__ 4
.
.

现在我正在编写一个cppunit测试用例,它检查这些指令的值如下:

CPPUNIT_ASSERT_EQUAL(4, __VERSION__);

现在我想为 UINT16_TYPE SIZE_TYPE UINT_LEAST8_TYPE 编写相同的cppunit断言,以确保它们具有正确的值但是我我没有得到我应该使用哪个cppunit断言?那么,请建议哪个cppunit断言用于此目的?

2 个答案:

答案 0 :(得分:0)

按照他们的名字,似乎它们是用于<cstdint>头文件中定义的“标准”整数的宏。

在这种情况下,__UINT16_TYPE__应该是无符号的16位值,这很容易测试。你可以这样做。

CPPUNIT_ASSERT_EQUAL(2, sizeof(__UINT16_TYPE__));

这当然依赖于您在基于8位字节的“普通”计算机中。

要检查类型,您可以使用C ++ 11 type-traits,例如std::is_integralstd::is_unsigned

我真的没有看到做这些检查的重点。如果这些宏是由编译器生成的,那么您可以非常确定它们对于您所在的平台是否正确。

答案 1 :(得分:0)

如果您正在使用C ++ 11,请使用std :: is_same检查类型。 http://en.cppreference.com/w/cpp/types/is_same

例如:CPPUNIT_ASSERT(std :: is_same&lt; SIZE_TYPE ,long unsigned int&gt; :: value)

但老实说,我不会在这种检查中看到任何理由。