Flutter Engine
 
Loading...
Searching...
No Matches
fl_event_channel_test.cc File Reference

Go to the source code of this file.

Functions

 TEST (FlEventChannelTest, Listen)
 
 TEST (FlEventChannelTest, ListenException)
 
 TEST (FlEventChannelTest, Cancel)
 
 TEST (FlEventChannelTest, CancelException)
 
 TEST (FlEventChannelTest, Args)
 
 TEST (FlEventChannelTest, SendEvents)
 
 TEST (FlEventChannelTest, ReuseChannel)
 
 TEST (FlEventChannelTest, ReplaceChannel)
 

Function Documentation

◆ TEST() [1/8]

TEST ( FlEventChannelTest  ,
Args   
)

Definition at line 156 of file fl_event_channel_test.cc.

156 {
157 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
158 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
159 g_autoptr(FlEventChannel) channel = fl_event_channel_new(
160 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
161 int call_count = 0;
163 channel,
164 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
165 int* call_count = static_cast<int*>(user_data);
166 EXPECT_EQ(*call_count, 0);
167 (*call_count)++;
168
169 g_autoptr(FlValue) expected_args = fl_value_new_string("LISTEN-ARGS");
170 EXPECT_TRUE(fl_value_equal(args, expected_args));
171
172 return static_cast<FlMethodErrorResponse*>(nullptr);
173 },
174 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
175 int* call_count = static_cast<int*>(user_data);
176 EXPECT_EQ(*call_count, 1);
177 (*call_count)++;
178
179 g_autoptr(FlValue) expected_args = fl_value_new_string("CANCEL-ARGS");
180 EXPECT_TRUE(fl_value_equal(args, expected_args));
181
182 return static_cast<FlMethodErrorResponse*>(nullptr);
183 },
184 &call_count, nullptr);
185
186 g_autoptr(FlValue) listen_args = fl_value_new_string("LISTEN-ARGS");
188 messenger, "test", "listen", listen_args,
189 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
190 gpointer user_data) {},
191 nullptr);
192 g_autoptr(FlValue) cancel_args = fl_value_new_string("CANCEL-ARGS");
194 messenger, "test", "cancel", cancel_args,
195 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
196 gpointer user_data) {},
197 nullptr);
198
199 EXPECT_EQ(call_count, 2);
200}
g_autoptr(GMutexLocker) locker
G_MODULE_EXPORT void fl_event_channel_set_stream_handlers(FlEventChannel *self, FlEventChannelHandler listen_handler, FlEventChannelHandler cancel_handler, gpointer user_data, GDestroyNotify destroy_notify)
G_MODULE_EXPORT FlEventChannel * fl_event_channel_new(FlBinaryMessenger *messenger, const gchar *name, FlMethodCodec *codec)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
void fl_mock_binary_messenger_invoke_standard_method(FlMockBinaryMessenger *self, const gchar *channel, const char *name, FlValue *args, FlMockBinaryMessengerMethodCallback callback, gpointer user_data)
const gchar * channel
FlMockBinaryMessenger * fl_mock_binary_messenger_new()
G_MODULE_EXPORT FlStandardMethodCodec * fl_standard_method_codec_new()
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
Definition fl_value.cc:276
G_MODULE_EXPORT bool fl_value_equal(FlValue *a, FlValue *b)
Definition fl_value.cc:471
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition fl_value.h:42

References args, channel, fl_event_channel_new(), fl_event_channel_set_stream_handlers(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_standard_method_codec_new(), fl_value_equal(), fl_value_new_string(), g_autoptr(), and user_data.

◆ TEST() [2/8]

TEST ( FlEventChannelTest  ,
Cancel   
)

Definition at line 80 of file fl_event_channel_test.cc.

80 {
81 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
82 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
83 g_autoptr(FlEventChannel) channel = fl_event_channel_new(
84 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
86 channel, nullptr,
87 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
89
90 return static_cast<FlMethodErrorResponse*>(nullptr);
91 },
92 nullptr, nullptr);
93
95 messenger, "test", "listen", nullptr,
96 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
97 gpointer user_data) {},
98 nullptr);
99 gboolean called = FALSE;
101 messenger, "test", "cancel", nullptr,
102 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
103 gpointer user_data) {
104 gboolean* called = static_cast<gboolean*>(user_data);
105 *called = TRUE;
106
107 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
109 FL_METHOD_SUCCESS_RESPONSE(response));
110 EXPECT_EQ(fl_value_get_type(result), FL_VALUE_TYPE_NULL);
111 },
112 &called);
113 EXPECT_TRUE(called);
114}
return TRUE
G_MODULE_EXPORT FlValue * fl_method_success_response_get_result(FlMethodSuccessResponse *self)
G_MODULE_EXPORT FlValueType fl_value_get_type(FlValue *self)
Definition fl_value.cc:466
@ FL_VALUE_TYPE_NULL
Definition fl_value.h:64

References args, channel, fl_event_channel_new(), fl_event_channel_set_stream_handlers(), fl_method_success_response_get_result(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_standard_method_codec_new(), fl_value_get_type(), FL_VALUE_TYPE_NULL, g_autoptr(), TRUE, and user_data.

◆ TEST() [3/8]

TEST ( FlEventChannelTest  ,
CancelException   
)

Definition at line 117 of file fl_event_channel_test.cc.

117 {
118 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
119 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
120 g_autoptr(FlEventChannel) channel = fl_event_channel_new(
121 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
123 channel, nullptr,
124 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
125 return fl_method_error_response_new("CANCEL-ERROR",
126 "CANCEL-ERROR-MESSAGE", nullptr);
127 },
128 nullptr, nullptr);
129
131 messenger, "test", "listen", nullptr,
132 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
133 gpointer user_data) {},
134 nullptr);
135 gboolean called = FALSE;
137 messenger, "test", "cancel", nullptr,
138 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
139 gpointer user_data) {
140 gboolean* called = static_cast<gboolean*>(user_data);
141 *called = TRUE;
142
143 EXPECT_TRUE(FL_IS_METHOD_ERROR_RESPONSE(response));
145 FL_METHOD_ERROR_RESPONSE(response)),
146 "CANCEL-ERROR");
148 FL_METHOD_ERROR_RESPONSE(response)),
149 "CANCEL-ERROR-MESSAGE");
150 },
151 &called);
152 EXPECT_TRUE(called);
153}
G_MODULE_EXPORT FlMethodErrorResponse * fl_method_error_response_new(const gchar *code, const gchar *message, FlValue *details)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_message(FlMethodErrorResponse *self)
G_MODULE_EXPORT const gchar * fl_method_error_response_get_code(FlMethodErrorResponse *self)

References args, channel, fl_event_channel_new(), fl_event_channel_set_stream_handlers(), fl_method_error_response_get_code(), fl_method_error_response_get_message(), fl_method_error_response_new(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_standard_method_codec_new(), g_autoptr(), TRUE, and user_data.

◆ TEST() [4/8]

TEST ( FlEventChannelTest  ,
Listen   
)

Definition at line 14 of file fl_event_channel_test.cc.

14 {
15 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
16 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
17 g_autoptr(FlEventChannel) channel = fl_event_channel_new(
18 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
20 channel,
21 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
23
24 return static_cast<FlMethodErrorResponse*>(nullptr);
25 },
26 nullptr, nullptr, nullptr);
27
28 gboolean called = FALSE;
30 messenger, "test", "listen", nullptr,
31 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
32 gpointer user_data) {
33 gboolean* called = static_cast<gboolean*>(user_data);
34 *called = TRUE;
35
36 EXPECT_TRUE(FL_IS_METHOD_SUCCESS_RESPONSE(response));
38 FL_METHOD_SUCCESS_RESPONSE(response));
39 EXPECT_EQ(fl_value_get_type(result), FL_VALUE_TYPE_NULL);
40 },
41 &called);
42 EXPECT_TRUE(called);
43}

References args, channel, fl_event_channel_new(), fl_event_channel_set_stream_handlers(), fl_method_success_response_get_result(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_standard_method_codec_new(), fl_value_get_type(), FL_VALUE_TYPE_NULL, g_autoptr(), TRUE, and user_data.

◆ TEST() [5/8]

TEST ( FlEventChannelTest  ,
ListenException   
)

Definition at line 46 of file fl_event_channel_test.cc.

46 {
47 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
48 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
49 g_autoptr(FlEventChannel) channel = fl_event_channel_new(
50 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
52 channel,
53 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
54 return fl_method_error_response_new("LISTEN-ERROR",
55 "LISTEN-ERROR-MESSAGE", nullptr);
56 },
57 nullptr, nullptr, nullptr);
58
59 gboolean called = FALSE;
61 messenger, "test", "listen", nullptr,
62 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
63 gpointer user_data) {
64 gboolean* called = static_cast<gboolean*>(user_data);
65 *called = TRUE;
66
67 EXPECT_TRUE(FL_IS_METHOD_ERROR_RESPONSE(response));
69 FL_METHOD_ERROR_RESPONSE(response)),
70 "LISTEN-ERROR");
72 FL_METHOD_ERROR_RESPONSE(response)),
73 "LISTEN-ERROR-MESSAGE");
74 },
75 &called);
76 EXPECT_TRUE(called);
77}

References args, channel, fl_event_channel_new(), fl_event_channel_set_stream_handlers(), fl_method_error_response_get_code(), fl_method_error_response_get_message(), fl_method_error_response_new(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_standard_method_codec_new(), g_autoptr(), TRUE, and user_data.

◆ TEST() [6/8]

TEST ( FlEventChannelTest  ,
ReplaceChannel   
)

Definition at line 325 of file fl_event_channel_test.cc.

325 {
326 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
327 int event_count = 0;
329 messenger, "test",
330 [](FlMockBinaryMessenger* messenger, FlValue* event, gpointer user_data) {
331 int* event_count = static_cast<int*>(user_data);
332
333 EXPECT_EQ(fl_value_get_type(event), FL_VALUE_TYPE_INT);
334 EXPECT_EQ(fl_value_get_int(event), *event_count);
335
336 (*event_count)++;
337 },
338 [](FlMockBinaryMessenger* messenger, const gchar* code,
339 const gchar* message, FlValue* details, gpointer user_data) {},
340 &event_count);
341
342 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
343 FlEventChannel* channel1 = fl_event_channel_new(
344 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
346 channel1,
347 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
348 // Send some events.
349 for (int i = 0; i < 5; i++) {
350 g_autoptr(FlValue) event = fl_value_new_int(100 + i);
351 g_autoptr(GError) error = nullptr;
352 EXPECT_TRUE(fl_event_channel_send(channel, event, nullptr, &error));
353 EXPECT_EQ(error, nullptr);
354 }
355
356 return static_cast<FlMethodErrorResponse*>(nullptr);
357 },
358 nullptr, nullptr, nullptr);
359
360 // Register a second channel with the same name.
361 g_autoptr(FlEventChannel) channel2 = fl_event_channel_new(
362 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
364 channel2,
365 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
366 // Send some events.
367 for (int i = 0; i < 5; i++) {
369 g_autoptr(GError) error = nullptr;
370 EXPECT_TRUE(fl_event_channel_send(channel, event, nullptr, &error));
371 EXPECT_EQ(error, nullptr);
372 }
373
374 return static_cast<FlMethodErrorResponse*>(nullptr);
375 },
376 nullptr, nullptr, nullptr);
377
379 messenger, "test", "listen", nullptr,
380 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
381 gpointer user_data) {},
382 nullptr);
384 messenger, "test", "cancel", nullptr,
385 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
386 gpointer user_data) {},
387 nullptr);
388
389 EXPECT_EQ(event_count, 5);
390}
G_MODULE_EXPORT gboolean fl_event_channel_send(FlEventChannel *self, FlValue *event, GCancellable *cancellable, GError **error)
void fl_mock_binary_messenger_set_standard_event_channel(FlMockBinaryMessenger *self, const gchar *channel, FlMockBinaryMessengerEventChannelHandler handler, FlMockBinaryMessengerEventChannelErrorHandler error_handler, gpointer user_data)
G_BEGIN_DECLS GBytes * message
const uint8_t uint32_t uint32_t GError ** error
G_MODULE_EXPORT int64_t fl_value_get_int(FlValue *self)
Definition fl_value.cc:668
G_MODULE_EXPORT FlValue * fl_value_new_int(int64_t value)
Definition fl_value.cc:262
@ FL_VALUE_TYPE_INT
Definition fl_value.h:66

References args, channel, error, fl_event_channel_new(), fl_event_channel_send(), fl_event_channel_set_stream_handlers(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_mock_binary_messenger_set_standard_event_channel(), fl_standard_method_codec_new(), fl_value_get_int(), fl_value_get_type(), fl_value_new_int(), FL_VALUE_TYPE_INT, g_autoptr(), i, message, and user_data.

◆ TEST() [7/8]

TEST ( FlEventChannelTest  ,
ReuseChannel   
)

Definition at line 254 of file fl_event_channel_test.cc.

254 {
255 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
256 int event_count = 0;
258 messenger, "test",
259 [](FlMockBinaryMessenger* messenger, FlValue* event, gpointer user_data) {
260 int* event_count = static_cast<int*>(user_data);
261
262 EXPECT_EQ(fl_value_get_type(event), FL_VALUE_TYPE_INT);
263 EXPECT_EQ(fl_value_get_int(event), *event_count);
264
265 (*event_count)++;
266 },
267 [](FlMockBinaryMessenger* messenger, const gchar* code,
268 const gchar* message, FlValue* details, gpointer user_data) {},
269 &event_count);
270
271 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
272 FlEventChannel* channel1 = fl_event_channel_new(
273 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
275 channel1,
276 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
277 // Send some events.
278 for (int i = 0; i < 5; i++) {
279 g_autoptr(FlValue) event = fl_value_new_int(100 + i);
280 g_autoptr(GError) error = nullptr;
281 EXPECT_TRUE(fl_event_channel_send(channel, event, nullptr, &error));
282 EXPECT_EQ(error, nullptr);
283 }
284
285 return static_cast<FlMethodErrorResponse*>(nullptr);
286 },
287 nullptr, nullptr, nullptr);
288
289 // Remove this channel
290 g_object_unref(channel1);
291
292 // Register a second channel with the same name.
293 g_autoptr(FlEventChannel) channel2 = fl_event_channel_new(
294 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
296 channel2,
297 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
298 // Send some events.
299 for (int i = 0; i < 5; i++) {
301 g_autoptr(GError) error = nullptr;
302 EXPECT_TRUE(fl_event_channel_send(channel, event, nullptr, &error));
303 EXPECT_EQ(error, nullptr);
304 }
305
306 return static_cast<FlMethodErrorResponse*>(nullptr);
307 },
308 nullptr, nullptr, nullptr);
309
311 messenger, "test", "listen", nullptr,
312 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
313 gpointer user_data) {},
314 nullptr);
316 messenger, "test", "cancel", nullptr,
317 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
318 gpointer user_data) {},
319 nullptr);
320
321 EXPECT_EQ(event_count, 5);
322}

References args, channel, error, fl_event_channel_new(), fl_event_channel_send(), fl_event_channel_set_stream_handlers(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_mock_binary_messenger_set_standard_event_channel(), fl_standard_method_codec_new(), fl_value_get_int(), fl_value_get_type(), fl_value_new_int(), FL_VALUE_TYPE_INT, g_autoptr(), i, message, and user_data.

◆ TEST() [8/8]

TEST ( FlEventChannelTest  ,
SendEvents   
)

Definition at line 203 of file fl_event_channel_test.cc.

203 {
204 g_autoptr(FlMockBinaryMessenger) messenger = fl_mock_binary_messenger_new();
205 int event_count = 0;
207 messenger, "test",
208 [](FlMockBinaryMessenger* messenger, FlValue* event, gpointer user_data) {
209 int* event_count = static_cast<int*>(user_data);
210
211 EXPECT_EQ(fl_value_get_type(event), FL_VALUE_TYPE_INT);
212 EXPECT_EQ(fl_value_get_int(event), *event_count);
213
214 (*event_count)++;
215 },
216 [](FlMockBinaryMessenger* messenger, const gchar* code,
217 const gchar* message, FlValue* details, gpointer user_data) {},
218 &event_count);
219
220 g_autoptr(FlStandardMethodCodec) codec = fl_standard_method_codec_new();
221 g_autoptr(FlEventChannel) channel = fl_event_channel_new(
222 FL_BINARY_MESSENGER(messenger), "test", FL_METHOD_CODEC(codec));
224 channel,
225 [](FlEventChannel* channel, FlValue* args, gpointer user_data) {
226 // Send some events.
227 for (int i = 0; i < 5; i++) {
229 g_autoptr(GError) error = nullptr;
230 EXPECT_TRUE(fl_event_channel_send(channel, event, nullptr, &error));
231 EXPECT_EQ(error, nullptr);
232 }
233
234 return static_cast<FlMethodErrorResponse*>(nullptr);
235 },
236 nullptr, nullptr, nullptr);
237
239 messenger, "test", "listen", nullptr,
240 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
241 gpointer user_data) {},
242 nullptr);
244 messenger, "test", "cancel", nullptr,
245 [](FlMockBinaryMessenger* messenger, FlMethodResponse* response,
246 gpointer user_data) {},
247 nullptr);
248
249 EXPECT_EQ(event_count, 5);
250}

References args, channel, error, fl_event_channel_new(), fl_event_channel_send(), fl_event_channel_set_stream_handlers(), fl_mock_binary_messenger_invoke_standard_method(), fl_mock_binary_messenger_new(), fl_mock_binary_messenger_set_standard_event_channel(), fl_standard_method_codec_new(), fl_value_get_int(), fl_value_get_type(), fl_value_new_int(), FL_VALUE_TYPE_INT, g_autoptr(), i, message, and user_data.