13 #include "gtest/gtest.h"
19 class TestBinaryMessenger :
public BinaryMessenger {
21 void Send(
const std::string& channel,
22 const uint8_t* message,
26 last_reply_handler_ = reply;
29 void SetMessageHandler(
const std::string& channel,
31 last_message_handler_channel_ = channel;
32 last_message_handler_ = handler;
35 bool send_called() {
return send_called_; }
37 BinaryReply last_reply_handler() {
return last_reply_handler_; }
39 std::string last_message_handler_channel() {
40 return last_message_handler_channel_;
46 mutable bool send_called_ =
false;
48 std::string last_message_handler_channel_;
56 TEST(MethodChannelTest, Registration) {
57 TestBinaryMessenger messenger;
58 const std::string channel_name(
"some_channel");
62 bool callback_called =
false;
63 const std::string method_name(
"hello");
65 [&callback_called, method_name](
const auto& call,
auto result) {
66 callback_called =
true;
69 EXPECT_EQ(call.method_name(), method_name);
70 EXPECT_NE(
result,
nullptr);
73 EXPECT_EQ(messenger.last_message_handler_channel(), channel_name);
74 EXPECT_NE(messenger.last_message_handler(),
nullptr);
79 messenger.last_message_handler()(
80 message->data(), message->size(),
81 [](
const uint8_t* reply,
size_t reply_size) {});
82 EXPECT_TRUE(callback_called);
86 TEST(MethodChannelTest, Unregistration) {
87 TestBinaryMessenger messenger;
88 const std::string channel_name(
"some_channel");
93 EXPECT_EQ(messenger.last_message_handler_channel(), channel_name);
94 EXPECT_NE(messenger.last_message_handler(),
nullptr);
97 EXPECT_EQ(messenger.last_message_handler_channel(), channel_name);
98 EXPECT_EQ(messenger.last_message_handler(),
nullptr);
101 TEST(MethodChannelTest, InvokeWithoutResponse) {
102 TestBinaryMessenger messenger;
103 const std::string channel_name(
"some_channel");
108 EXPECT_TRUE(messenger.send_called());
109 EXPECT_EQ(messenger.last_reply_handler(),
nullptr);
112 TEST(MethodChannelTest, InvokeWithResponse) {
113 TestBinaryMessenger messenger;
114 const std::string channel_name(
"some_channel");
118 bool received_reply =
false;
119 const std::string reply =
"bar";
120 auto result_handler = std::make_unique<MethodResultFunctions<>>(
122 received_reply =
true;
123 EXPECT_EQ(std::get<std::string>(*success_value), reply);
127 channel.
InvokeMethod(
"foo",
nullptr, std::move(result_handler));
128 EXPECT_TRUE(messenger.send_called());
129 ASSERT_NE(messenger.last_reply_handler(),
nullptr);
133 std::unique_ptr<std::vector<uint8_t>> encoded_reply =
135 messenger.last_reply_handler()(encoded_reply->data(), encoded_reply->size());
136 EXPECT_TRUE(received_reply);
139 TEST(MethodChannelTest, InvokeNotImplemented) {
140 TestBinaryMessenger messenger;
141 const std::string channel_name(
"some_channel");
145 bool received_not_implemented =
false;
146 auto result_handler = std::make_unique<MethodResultFunctions<>>(
148 [&received_not_implemented]() { received_not_implemented =
true; });
150 channel.
InvokeMethod(
"foo",
nullptr, std::move(result_handler));
151 EXPECT_EQ(messenger.send_called(),
true);
152 ASSERT_NE(messenger.last_reply_handler(),
nullptr);
155 messenger.last_reply_handler()(
nullptr, 0);
156 EXPECT_TRUE(received_not_implemented);