@@ -35,10 +35,16 @@ - (void)sendOnChannel:(NSString*)channel
35
35
self.message = message;
36
36
}
37
37
38
- - (void )setMessageHandlerOnChannel : (NSString *)channel
39
- binaryMessageHandler : (FlutterBinaryMessageHandler _Nullable)handler {
38
+ - (FlutterBinaryMessengerConnection)setMessageHandlerOnChannel : (NSString *)channel
39
+ binaryMessageHandler :
40
+ (FlutterBinaryMessageHandler _Nullable)handler {
40
41
[self .handlers setObject: handler forKey: channel];
42
+ return 0 ;
41
43
}
44
+
45
+ - (void )cleanupConnection : (FlutterBinaryMessengerConnection)connection {
46
+ }
47
+
42
48
@end
43
49
44
50
@interface FlutterChannelsTest : XCTestCase
@@ -155,6 +161,53 @@ - (void)testResize {
155
161
OCMExpect ([binaryMessenger sendOnChannel: @" dev.flutter/channel-buffers" message: expectedMessage]);
156
162
[channel resizeChannelBuffer: 100 ];
157
163
OCMVerifyAll (binaryMessenger);
164
+ [binaryMessenger stopMocking ];
165
+ }
166
+
167
+ - (void )testBasicMessageChannelCleanup {
168
+ NSString * channelName = @" foo" ;
169
+ FlutterBinaryMessengerConnection connection = 123 ;
170
+ id binaryMessenger = OCMProtocolMock (@protocol (FlutterBinaryMessenger));
171
+ id codec = OCMProtocolMock (@protocol (FlutterMethodCodec));
172
+ FlutterBasicMessageChannel* channel =
173
+ [[FlutterBasicMessageChannel alloc ] initWithName: channelName
174
+ binaryMessenger: binaryMessenger
175
+ codec: codec];
176
+ FlutterMessageHandler handler = ^(id _Nullable message, FlutterReply callback) {
177
+ NSLog (@" hey" );
178
+ };
179
+ OCMStub ([binaryMessenger setMessageHandlerOnChannel: channelName
180
+ binaryMessageHandler: [OCMArg any ]])
181
+ .andReturn (connection);
182
+ [channel setMessageHandler: handler];
183
+ OCMVerify ([binaryMessenger setMessageHandlerOnChannel: channelName
184
+ binaryMessageHandler: [OCMArg isNotNil ]]);
185
+ [channel setMessageHandler: nil ];
186
+ OCMVerify ([binaryMessenger cleanupConnection: connection]);
187
+ }
188
+
189
+ - (void )testMethodChannelCleanup {
190
+ NSString * channelName = @" foo" ;
191
+ FlutterBinaryMessengerConnection connection = 123 ;
192
+ id binaryMessenger = OCMProtocolMock (@protocol (FlutterBinaryMessenger));
193
+ id codec = OCMProtocolMock (@protocol (FlutterMethodCodec));
194
+ FlutterMethodChannel* channel = [[FlutterMethodChannel alloc ] initWithName: channelName
195
+ binaryMessenger: binaryMessenger
196
+ codec: codec];
197
+ XCTAssertNotNil (channel);
198
+
199
+ OCMStub ([binaryMessenger setMessageHandlerOnChannel: channelName
200
+ binaryMessageHandler: [OCMArg any ]])
201
+ .andReturn (connection);
202
+
203
+ FlutterMethodCallHandler handler =
204
+ ^(FlutterMethodCall* _Nonnull call, FlutterResult _Nonnull result) {
205
+ };
206
+ [channel setMethodCallHandler: handler];
207
+ OCMVerify ([binaryMessenger setMessageHandlerOnChannel: channelName
208
+ binaryMessageHandler: [OCMArg isNotNil ]]);
209
+ [channel setMethodCallHandler: nil ];
210
+ OCMVerify ([binaryMessenger cleanupConnection: connection]);
158
211
}
159
212
160
213
@end
0 commit comments