blob: b73989d581c96d1c2b27029498d9829324ea129c [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "flutter/shell/platform/darwin/common/framework/Source/FlutterBinaryMessengerRelay.h"
#import <OCMock/OCMock.h>
#import "flutter/shell/platform/darwin/common/framework/Headers/FlutterMacros.h"
#import "flutter/shell/platform/darwin/common/framework/Source/FlutterTestUtils.h"
#import "flutter/shell/platform/darwin/ios/flutter_task_queue_dispatch.h"
#import "flutter/testing/testing.h"
#include "gtest/gtest.h"
FLUTTER_ASSERT_ARC
@interface FlutterBinaryMessengerRelayTest : NSObject
@end
@implementation FlutterBinaryMessengerRelayTest
- (void)testCreate {
id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
FlutterBinaryMessengerRelay* relay =
[[FlutterBinaryMessengerRelay alloc] initWithParent:messenger];
EXPECT_NE(relay, nil);
EXPECT_EQ(messenger, relay.parent);
}
- (void)testPassesCallOn {
id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
FlutterBinaryMessengerRelay* relay =
[[FlutterBinaryMessengerRelay alloc] initWithParent:messenger];
char messageData[] = {'a', 'a', 'r', 'o', 'n'};
NSData* message = [NSData dataWithBytes:messageData length:sizeof(messageData)];
NSString* channel = @"foobar";
[relay sendOnChannel:channel message:message binaryReply:nil];
OCMVerify([messenger sendOnChannel:channel message:message binaryReply:nil]);
}
- (void)testDoesntPassCallOn {
id messenger = OCMStrictProtocolMock(@protocol(FlutterBinaryMessenger));
FlutterBinaryMessengerRelay* relay =
[[FlutterBinaryMessengerRelay alloc] initWithParent:messenger];
char messageData[] = {'a', 'a', 'r', 'o', 'n'};
NSData* message = [NSData dataWithBytes:messageData length:sizeof(messageData)];
NSString* channel = @"foobar";
relay.parent = nil;
[relay sendOnChannel:channel message:message binaryReply:nil];
}
- (void)testSetMessageHandlerWithTaskQueue {
id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
FlutterBinaryMessengerRelay* relay =
[[FlutterBinaryMessengerRelay alloc] initWithParent:messenger];
NSString* channel = @"foobar";
NSObject<FlutterTaskQueue>* taskQueue = OCMProtocolMock(@protocol(FlutterTaskQueueDispatch));
FlutterBinaryMessageHandler handler = ^(NSData* _Nullable, FlutterBinaryReply _Nonnull) {
};
[relay setMessageHandlerOnChannel:channel binaryMessageHandler:handler taskQueue:taskQueue];
OCMVerify([messenger setMessageHandlerOnChannel:channel
binaryMessageHandler:handler
taskQueue:taskQueue]);
}
- (void)testMakeBackgroundTaskQueue {
id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger));
FlutterBinaryMessengerRelay* relay =
[[FlutterBinaryMessengerRelay alloc] initWithParent:messenger];
[relay makeBackgroundTaskQueue];
OCMVerify([messenger makeBackgroundTaskQueue]);
}
@end
TEST(FlutterBinaryMessengerRelayTest, Create) {
ASSERT_FALSE(FLTThrowsObjcException(^{
[[FlutterBinaryMessengerRelayTest alloc] testCreate];
}));
}
TEST(FlutterBinaryMessengerRelayTest, PassesCallOn) {
ASSERT_FALSE(FLTThrowsObjcException(^{
[[FlutterBinaryMessengerRelayTest alloc] testPassesCallOn];
}));
}
TEST(FlutterBinaryMessengerRelayTest, DoesntPassCallOn) {
ASSERT_FALSE(FLTThrowsObjcException(^{
[[FlutterBinaryMessengerRelayTest alloc] testDoesntPassCallOn];
}));
}
TEST(FlutterBinaryMessengerRelayTest, SetMessageHandlerWithTaskQueue) {
ASSERT_FALSE(FLTThrowsObjcException(^{
[[FlutterBinaryMessengerRelayTest alloc] testSetMessageHandlerWithTaskQueue];
}));
}
TEST(FlutterBinaryMessengerRelayTest, SetMakeBackgroundTaskQueue) {
ASSERT_FALSE(FLTThrowsObjcException(^{
[[FlutterBinaryMessengerRelayTest alloc] testMakeBackgroundTaskQueue];
}));
}