#include #include #include #include template class IPCTest : public testing::Test { public: void send(auto msg) { IpcRequestReplyContext ctx; ctx.setStrategy(std::make_unique()); auto res = ctx.send(msg); if (!res) FAIL() << "send failed!" << res.error(); } void receive(auto msg) { IpcRequestReplyContext ctx; ctx.setStrategy(std::make_unique()); auto res = ctx.receive(); if (!res) FAIL() << "receive failed!" << res.error(); EXPECT_EQ(res, msg); } }; // +++++++++++++++++++++++++++++++++ Test +++++++++++++++++++++++++++++++++ TYPED_TEST_SUITE_P(IPCTest); // 单线程发送接收 TYPED_TEST_P(IPCTest, SendAndReceiveTest) { auto msg = "Hello IPC"; this->send(msg); this->receive(msg); } // 多线程发送接收 TYPED_TEST_P(IPCTest, MutliThreadSendAndReceiveTest) { auto msg = "Hello IPC"; std::thread send_t([this, msg]() { this->send(msg); }); std::thread receive_t([this, msg]() { this->receive(msg); }); send_t.join(); receive_t.join(); } REGISTER_TYPED_TEST_SUITE_P(IPCTest, SendAndReceiveTest, MutliThreadSendAndReceiveTest);