我实际上正在使用 googletest 框架。我有一个值参数化测试
std::tuple<int, double>
这个 int 表示正多边形中的顶点数,double 表示它的半径。我可以使用这样的结构来表示这一点:
struct RegularPolygon{
int NbVertices;
double Radius;
}
问题是我实际上使用组合参数生成器创建测试:
INSTANTIATE_TEST_CASE_P(RegularPolygon, PolygonTestCase, testing::Combine(
testing::Range(3, 10),
testing::Range(1.0, 10.0)));
所以如果我想切换到使用
RegularPolygon
struct 作为我的参数,我必须对两个范围的笛卡尔积进行硬编码。
除非有一种方法可以定义我自己的 RegularPolygon Generator,它只会将 int 映射到 RegularPolygon::NbVertices 并将 double 映射到 RegularPolygon::Radius。
有没有办法这样做?
如果没有,将元组转换为 RegularPolygon 实例的最佳做法是什么?