假设需要在 googletest 上下文中为向量的向量实现一个匹配器,例如
std::vector<std::vector<int>>
,直至向量及其元素的排列(例如,{{1,2}、{3,4,5}} 和 {{5,4,3}、{2 ,1}} 将匹配)。可以为此编写一个自定义 MATCHER_P。但是否有可能仅使用预煮的结构以紧凑的方式做到这一点?
文档提示使用匹配器容器,所以我的想法是:
std::vector<UnorderedElementsAreArrayMatcher>
,但这个匹配器是内部的,所以不是一个好方法。
您不需要编写自定义匹配器,您所需要的只是
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);