C++ 测试图<;int,vector>;谷歌测试

C++ 测试图<;int,vector>;谷歌测试,c++,vector,googletest,C++,Vector,Googletest,这些在我的类的游戏头文件中: 秩序是另一门课 std::map<int, std::vector<Order>> ordersToBeExecuted; 要使用容器匹配器测试容器,请参阅: Map有点棘手,因为它是成对的容器,所以必须将其与Pairmatcher组合,例如: using testing::ElementsAre; using testing::Pair; EXPECT_THAT(g.getOrdersToBeExecuted()), ElementsA

这些在我的类的
游戏
头文件中: 秩序是另一门课

std::map<int, std::vector<Order>> ordersToBeExecuted;

要使用容器匹配器测试容器,请参阅:

Map有点棘手,因为它是成对的容器,所以必须将其与
Pair
matcher组合,例如:

using testing::ElementsAre;
using testing::Pair;

EXPECT_THAT(g.getOrdersToBeExecuted()), ElementsAre(Pair(key1, val1), Pair(key1, val2)));
当值类型为
vector
时,需要将容器匹配器放入:

using testing::ElementsAre;
using testing::Pair;

EXPECT_THAT(g.getOrdersToBeExecuted()), ElementsAre(Pair(key1, ElementsAre(e1, e2, e3)), Pair(key1, ElementsAre(e4, e5)));

std::map你能举个例子吗?我尝试使用
first
作为第一个参数,但它不起作用@博洛维:我认为我用得不对。您可以查看编辑的qs吗?您正在比较
顺序
对象。您是否为此类定义了
运算符==
?否则编译器不知道如何判断它们是相等的。
#define EXPECT_EQ(val1,val2) EXPECT_PRED_FORMAT2(::testing::internal:: EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, val1, val2)
Expands to:

EXPECT_PRED_FORMAT2(::testing::internal:: EqHelper<GTEST_IS_NULL_LITERAL_(std::map<0)>::Compare, std::map<0, std::vector<<Order>>)
expected a type specifier

TEST(gameTest, getOrdersToBeExecutedTest) {

    std::map<int, std::vector<Order>> first;
    std::vector<Order> orders;
    Game g;
    Order o1;
    Order o2;
    orders.push_back(o1);
    orders.push_back(o2);
    first[0] = orders;
    g.setNumberOfPlayers(1);

    EXPECT_EQ(std::map<0,std::vector<Order>>, g.getOrdersToBeExecuted());
}
TEST(gameTest, getOrdersToBeExecutedTest) {

    std::map<int, std::vector<Order>> first;
    std::vector<Order> orders;
    std::vector<Order> orders2;
    Game g;
    Order o1, o2;
    Order o3, o4;
    orders.push_back(o1);
    orders.push_back(o2);
    orders2.push_back(o3);
    orders2.push_back(o4);
    first[0] = orders;
    first[1] = orders2;
    //EXPECT_EQ(first, g.getOrdersToBeExecuted());


EXPECT_THAT(g.getOrdersToBeExecuted()), ElementsAre(Pair(0, ElementsAre(o1, o2)), Pair(1, ElementsAre(o3, o4)));
}
#define EXPECT_THAT(value,matcher) EXPECT_PRED_FORMAT1( ::testing::internal::MakePredicateFormatterFromMatcher(matcher), value)
Expands to:

EXPECT_PRED_FORMAT1( ::testing::internal::MakePredicateFormatterFromMatcher(), g.getOrdersToBeExecuted())
identifier "EXPECT_THAT" is undefined
using testing::ElementsAre;
using testing::Pair;

EXPECT_THAT(g.getOrdersToBeExecuted()), ElementsAre(Pair(key1, val1), Pair(key1, val2)));
using testing::ElementsAre;
using testing::Pair;

EXPECT_THAT(g.getOrdersToBeExecuted()), ElementsAre(Pair(key1, ElementsAre(e1, e2, e3)), Pair(key1, ElementsAre(e4, e5)));