gpt4 book ai didi

c++ - 如何将 EXPECT_EQ 用于用户定义类型

转载 作者:可可西里 更新时间:2023-11-01 17:40:34 24 4
gpt4 key购买 nike

我想测试一个返回一些用户定义类型值的函数。我知道我可以使用 EXPECT_EQEXPECT_FLOAT_EQ 等测试基本的 int、float、double 等,但不能测试用户定义的类型。有什么线索吗?

最佳答案

必须有某种方法来检查某些东西。


a) 返回类型是一个数据结构,你可以在其中检查它的成员变量的值:

struct A {
int v1;
float v2;
char v4;
};

然后使用EXPECT_EQEXPECT_FLOAT_EQ 和可用的宏:

A a1{ 3, 2.2, 'a' };
A a2{ 4, 2.5, 'b' };
EXPECT_EQ( a1.v1, a2.v2 );

或者甚至像这样检查 POD :

EXPECT_TRUE( 0 == std::memcmp( &a1, &a2, sizeof(a1) ) );

b) 返回类型实现了operator==:

bool operator==( const A& lh, const A& rh ) {
return std::make_tuple( lh.v1, lh.v2, lh.v4 ) == std::make_tuple( rh.v1, rh.v2, rh.v4 );
}

然后与 EXPECT_EQ 比较:

A a1{ 3, 2.2, 'a' };
A a2{ 4, 2.5, 'b' };
EXPECT_EQ( a1, a2 );

或使用 EXPECT_TRUE :

EXPECT_TRUE( a1 == a2 );

关于c++ - 如何将 EXPECT_EQ 用于用户定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24162583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com