如何仅使用可用的匹配器编写向量向量的 googletest 匹配器,直至向量和向量元素的排列?

问题描述 投票:0回答:1

假设需要在 googletest 上下文中为向量的向量实现一个匹配器,例如

std::vector<std::vector<int>>
,直至向量及其元素的排列(例如,{{1,2}、{3,4,5}} 和 {{5,4,3}、{2 ,1}} 将匹配)。可以为此编写一个自定义 MATCHER_P。但是否有可能仅使用预煮的结构以紧凑的方式做到这一点?

文档提示使用匹配器容器,所以我的想法是:

std::vector<UnorderedElementsAreArrayMatcher>
,但这个匹配器是内部的,所以不是一个好方法。

arrays multidimensional-array googletest matcher
1个回答
0
投票

您不需要编写自定义匹配器,您所需要的只是

UnorderedElementsAre

std::vector vec1 = {
    std::vector{1, 2},
    std::vector{3, 4, 5},
};
std::vector vec2 = {
    std::vector{5, 4, 3},
    std::vector{2, 1},
};

const auto matcher = UnorderedElementsAre(UnorderedElementsAre(1, 2),
                                          UnorderedElementsAre(3, 4, 5));

EXPECT_THAT(vec1, matcher);
EXPECT_THAT(vec2, matcher);
© www.soinside.com 2019 - 2024. All rights reserved.