6 #include "gtest/gtest.h"
12 #include "flutter/shell/platform/linux/testing/fl_mock_binary_messenger.h"
17 TEST(FlBasicMessageChannelTest, SendMessageWithoutResponse) {
18 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
19 gboolean called = FALSE;
20 fl_mock_binary_messenger_set_standard_message_channel(
22 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue* message,
24 gboolean* called =
static_cast<gboolean*
>(
user_data);
27 EXPECT_NE(message,
nullptr);
32 return static_cast<FlValue*
>(
nullptr);
38 FL_BINARY_MESSENGER(messenger),
"test", FL_MESSAGE_CODEC(codec));
47 TEST(FlBasicMessageChannelTest, SendMessageWithResponse) {
48 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
50 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
51 fl_mock_binary_messenger_set_standard_message_channel(
53 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue* message,
55 EXPECT_NE(message,
nullptr);
65 FL_BINARY_MESSENGER(messenger),
"test", FL_MESSAGE_CODEC(codec));
68 channel, message,
nullptr,
69 [](GObject*
object, GAsyncResult* result, gpointer
user_data) {
70 g_autoptr(GError)
error =
nullptr;
72 FL_BASIC_MESSAGE_CHANNEL(
object), result, &
error);
73 EXPECT_NE(message,
nullptr);
74 EXPECT_EQ(
error,
nullptr);
79 g_main_loop_quit(
static_cast<GMainLoop*
>(
user_data));
83 g_main_loop_run(loop);
87 TEST(FlBasicMessageChannelTest, SendFailure) {
88 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
90 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
91 fl_mock_binary_messenger_set_error_channel(messenger,
"test", 42,
"Error");
95 FL_BINARY_MESSENGER(messenger),
"test", FL_MESSAGE_CODEC(codec));
98 channel, message,
nullptr,
99 [](GObject*
object, GAsyncResult* result, gpointer
user_data) {
100 g_autoptr(GError)
error =
nullptr;
102 FL_BASIC_MESSAGE_CHANNEL(
object), result, &
error);
103 EXPECT_EQ(message,
nullptr);
104 EXPECT_NE(
error,
nullptr);
105 EXPECT_EQ(
error->code, 42);
106 EXPECT_STREQ(
error->message,
"Error");
108 g_main_loop_quit(
static_cast<GMainLoop*
>(
user_data));
112 g_main_loop_run(loop);
116 TEST(FlBasicMessageChannelTest, ReceiveMessage) {
117 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
121 g_autoptr(FlBasicMessageChannel) messages_channel =
123 FL_MESSAGE_CODEC(codec));
126 [](FlBasicMessageChannel* channel,
FlValue* message,
127 FlBasicMessageChannelResponseHandle* response_handle,
129 EXPECT_NE(message,
nullptr);
133 g_autoptr(GError)
error =
nullptr;
137 EXPECT_EQ(
error,
nullptr);
143 gboolean called = FALSE;
144 fl_mock_binary_messenger_send_standard_message(
145 messenger,
"test", message,
146 [](FlMockBinaryMessenger* messenger,
FlValue* response,
148 gboolean* called =
static_cast<gboolean*
>(
user_data);
151 EXPECT_NE(response,
nullptr);
161 TEST(FlBasicMessageChannelTest, SendNullMessageWithResponse) {
162 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
164 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
165 fl_mock_binary_messenger_set_standard_message_channel(
167 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue* message,
173 FL_BINARY_MESSENGER(messenger),
"test", FL_MESSAGE_CODEC(codec));
175 channel,
nullptr,
nullptr,
176 [](GObject*
object, GAsyncResult* result, gpointer
user_data) {
177 g_autoptr(GError)
error =
nullptr;
179 FL_BASIC_MESSAGE_CHANNEL(
object), result, &
error);
180 EXPECT_NE(message,
nullptr);
181 EXPECT_EQ(
error,
nullptr);
185 g_main_loop_quit(
static_cast<GMainLoop*
>(
user_data));
189 g_main_loop_run(loop);
193 TEST(FlBasicMessageChannelTest, CustomType) {
194 g_autoptr(GMainLoop) loop = g_main_loop_new(
nullptr, 0);
196 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
197 fl_mock_binary_messenger_set_standard_message_channel(
199 [](FlMockBinaryMessenger* messenger, GTask* task,
FlValue* message,
205 FL_BINARY_MESSENGER(messenger),
"test", FL_MESSAGE_CODEC(codec));
208 channel, message,
nullptr,
209 [](GObject*
object, GAsyncResult* result, gpointer
user_data) {
210 g_autoptr(GError)
error =
nullptr;
212 FL_BASIC_MESSAGE_CHANNEL(
object), result, &
error);
213 EXPECT_EQ(message,
nullptr);
214 EXPECT_NE(
error,
nullptr);
215 EXPECT_STREQ(
error->message,
"Custom value not implemented");
217 g_main_loop_quit(
static_cast<GMainLoop*
>(
user_data));
221 g_main_loop_run(loop);