mirror of
https://github.com/flutter/packages.git
synced 2025-06-29 22:33:11 +08:00
[Pigeon] enum ios unittest (#376)
This commit is contained in:
25
packages/pigeon/pigeons/enum.dart
Normal file
25
packages/pigeon/pigeons/enum.dart
Normal file
@ -0,0 +1,25 @@
|
||||
// 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 'package:pigeon/pigeon.dart';
|
||||
|
||||
enum State {
|
||||
Pending,
|
||||
Success,
|
||||
Error,
|
||||
}
|
||||
|
||||
class Data {
|
||||
State? state;
|
||||
}
|
||||
|
||||
@HostApi()
|
||||
abstract class EnumApi2Host {
|
||||
Data echo(Data data);
|
||||
}
|
||||
|
||||
@FlutterApi()
|
||||
abstract class EnumApi2Flutter {
|
||||
Data echo(Data data);
|
||||
}
|
@ -11,9 +11,11 @@
|
||||
0D50127523FF75B100CD5B95 /* RunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D50127423FF75B100CD5B95 /* RunnerTests.m */; };
|
||||
0D8C35E825D45A3000B76435 /* async_handlers.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D8C35E725D45A3000B76435 /* async_handlers.m */; };
|
||||
0D8C35EB25D45A7900B76435 /* AsyncHandlersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D8C35EA25D45A7900B76435 /* AsyncHandlersTest.m */; };
|
||||
0DD2E690266FDB7000A7D764 /* enum.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DD2E68F266FDB7000A7D764 /* enum.m */; };
|
||||
0DF4E5C3266ECF0400AEA855 /* all_datatypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DF4E5C2266ECF0400AEA855 /* all_datatypes.m */; };
|
||||
0DF4E5C5266ECF4A00AEA855 /* AllDatatypesTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DF4E5C4266ECF4A00AEA855 /* AllDatatypesTest.m */; };
|
||||
0DF4E5C8266ED80900AEA855 /* EchoMessenger.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DF4E5C7266ED80900AEA855 /* EchoMessenger.m */; };
|
||||
0DF4E5CB266FDAE300AEA855 /* EnumTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DF4E5CA266FDAE300AEA855 /* EnumTest.m */; };
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
|
||||
@ -55,11 +57,14 @@
|
||||
0D8C35E625D45A3000B76435 /* async_handlers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = async_handlers.h; sourceTree = "<group>"; };
|
||||
0D8C35E725D45A3000B76435 /* async_handlers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = async_handlers.m; sourceTree = "<group>"; };
|
||||
0D8C35EA25D45A7900B76435 /* AsyncHandlersTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AsyncHandlersTest.m; sourceTree = "<group>"; };
|
||||
0DD2E68E266FDB7000A7D764 /* enum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum.h; sourceTree = "<group>"; };
|
||||
0DD2E68F266FDB7000A7D764 /* enum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = enum.m; sourceTree = "<group>"; };
|
||||
0DF4E5C1266ECF0400AEA855 /* all_datatypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = all_datatypes.h; sourceTree = "<group>"; };
|
||||
0DF4E5C2266ECF0400AEA855 /* all_datatypes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = all_datatypes.m; sourceTree = "<group>"; };
|
||||
0DF4E5C4266ECF4A00AEA855 /* AllDatatypesTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AllDatatypesTest.m; sourceTree = "<group>"; };
|
||||
0DF4E5C6266ED80900AEA855 /* EchoMessenger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EchoMessenger.h; sourceTree = "<group>"; };
|
||||
0DF4E5C7266ED80900AEA855 /* EchoMessenger.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EchoMessenger.m; sourceTree = "<group>"; };
|
||||
0DF4E5CA266FDAE300AEA855 /* EnumTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EnumTest.m; sourceTree = "<group>"; };
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
@ -103,6 +108,7 @@
|
||||
0DF4E5C4266ECF4A00AEA855 /* AllDatatypesTest.m */,
|
||||
0DF4E5C6266ED80900AEA855 /* EchoMessenger.h */,
|
||||
0DF4E5C7266ED80900AEA855 /* EchoMessenger.m */,
|
||||
0DF4E5CA266FDAE300AEA855 /* EnumTest.m */,
|
||||
);
|
||||
path = RunnerTests;
|
||||
sourceTree = "<group>";
|
||||
@ -140,6 +146,8 @@
|
||||
97C146F01CF9000F007C117D /* Runner */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
0DD2E68E266FDB7000A7D764 /* enum.h */,
|
||||
0DD2E68F266FDB7000A7D764 /* enum.m */,
|
||||
0DF4E5C1266ECF0400AEA855 /* all_datatypes.h */,
|
||||
0DF4E5C2266ECF0400AEA855 /* all_datatypes.m */,
|
||||
0D8C35E625D45A3000B76435 /* async_handlers.h */,
|
||||
@ -306,6 +314,7 @@
|
||||
0D50127523FF75B100CD5B95 /* RunnerTests.m in Sources */,
|
||||
0DF4E5C5266ECF4A00AEA855 /* AllDatatypesTest.m in Sources */,
|
||||
0DF4E5C8266ED80900AEA855 /* EchoMessenger.m in Sources */,
|
||||
0DF4E5CB266FDAE300AEA855 /* EnumTest.m in Sources */,
|
||||
0D8C35EB25D45A7900B76435 /* AsyncHandlersTest.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@ -319,6 +328,7 @@
|
||||
97C146F31CF9000F007C117D /* main.m in Sources */,
|
||||
0DF4E5C3266ECF0400AEA855 /* all_datatypes.m in Sources */,
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
|
||||
0DD2E690266FDB7000A7D764 /* enum.m in Sources */,
|
||||
0D8C35E825D45A3000B76435 /* async_handlers.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
@ -0,0 +1,37 @@
|
||||
// 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.
|
||||
|
||||
// Autogenerated from Pigeon (v0.2.1), do not edit directly.
|
||||
// See also: https://pub.dev/packages/pigeon
|
||||
#import <Foundation/Foundation.h>
|
||||
@protocol FlutterBinaryMessenger;
|
||||
@class FlutterError;
|
||||
@class FlutterStandardTypedData;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSUInteger, ACState) {
|
||||
ACStatePending = 0,
|
||||
ACStateSuccess = 1,
|
||||
ACStateError = 2,
|
||||
};
|
||||
|
||||
@class ACData;
|
||||
|
||||
@interface ACData : NSObject
|
||||
@property(nonatomic, assign) ACState state;
|
||||
@end
|
||||
|
||||
@protocol ACEnumApi2Host
|
||||
- (nullable ACData *)echo:(ACData *)input error:(FlutterError *_Nullable *_Nonnull)error;
|
||||
@end
|
||||
|
||||
extern void ACEnumApi2HostSetup(id<FlutterBinaryMessenger> binaryMessenger,
|
||||
id<ACEnumApi2Host> _Nullable api);
|
||||
|
||||
@interface ACEnumApi2Flutter : NSObject
|
||||
- (instancetype)initWithBinaryMessenger:(id<FlutterBinaryMessenger>)binaryMessenger;
|
||||
- (void)echo:(ACData *)input completion:(void (^)(ACData *, NSError *_Nullable))completion;
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
@ -0,0 +1,87 @@
|
||||
// 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.
|
||||
|
||||
// Autogenerated from Pigeon (v0.2.1), do not edit directly.
|
||||
// See also: https://pub.dev/packages/pigeon
|
||||
#import "enum.h"
|
||||
#import <Flutter/Flutter.h>
|
||||
|
||||
#if !__has_feature(objc_arc)
|
||||
#error File requires ARC to be enabled.
|
||||
#endif
|
||||
|
||||
static NSDictionary<NSString *, id> *wrapResult(NSDictionary *result, FlutterError *error) {
|
||||
NSDictionary *errorDict = (NSDictionary *)[NSNull null];
|
||||
if (error) {
|
||||
errorDict = @{
|
||||
@"code" : (error.code ? error.code : [NSNull null]),
|
||||
@"message" : (error.message ? error.message : [NSNull null]),
|
||||
@"details" : (error.details ? error.details : [NSNull null]),
|
||||
};
|
||||
}
|
||||
return @{
|
||||
@"result" : (result ? result : [NSNull null]),
|
||||
@"error" : errorDict,
|
||||
};
|
||||
}
|
||||
|
||||
@interface ACData ()
|
||||
+ (ACData *)fromMap:(NSDictionary *)dict;
|
||||
- (NSDictionary *)toMap;
|
||||
@end
|
||||
|
||||
@implementation ACData
|
||||
+ (ACData *)fromMap:(NSDictionary *)dict {
|
||||
ACData *result = [[ACData alloc] init];
|
||||
result.state = [dict[@"state"] integerValue];
|
||||
return result;
|
||||
}
|
||||
- (NSDictionary *)toMap {
|
||||
return [NSDictionary dictionaryWithObjectsAndKeys:@(self.state), @"state", nil];
|
||||
}
|
||||
@end
|
||||
|
||||
void ACEnumApi2HostSetup(id<FlutterBinaryMessenger> binaryMessenger, id<ACEnumApi2Host> api) {
|
||||
{
|
||||
FlutterBasicMessageChannel *channel =
|
||||
[FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.EnumApi2Host.echo"
|
||||
binaryMessenger:binaryMessenger];
|
||||
if (api) {
|
||||
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
|
||||
ACData *input = [ACData fromMap:message];
|
||||
FlutterError *error;
|
||||
ACData *output = [api echo:input error:&error];
|
||||
callback(wrapResult([output toMap], error));
|
||||
}];
|
||||
} else {
|
||||
[channel setMessageHandler:nil];
|
||||
}
|
||||
}
|
||||
}
|
||||
@interface ACEnumApi2Flutter ()
|
||||
@property(nonatomic, strong) NSObject<FlutterBinaryMessenger> *binaryMessenger;
|
||||
@end
|
||||
|
||||
@implementation ACEnumApi2Flutter
|
||||
- (instancetype)initWithBinaryMessenger:(NSObject<FlutterBinaryMessenger> *)binaryMessenger {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_binaryMessenger = binaryMessenger;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)echo:(ACData *)input completion:(void (^)(ACData *, NSError *_Nullable))completion {
|
||||
FlutterBasicMessageChannel *channel =
|
||||
[FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.EnumApi2Flutter.echo"
|
||||
binaryMessenger:self.binaryMessenger];
|
||||
NSDictionary *inputMap = [input toMap];
|
||||
[channel sendMessage:inputMap
|
||||
reply:^(id reply) {
|
||||
NSDictionary *outputMap = reply;
|
||||
ACData *output = [ACData fromMap:outputMap];
|
||||
completion(output, nil);
|
||||
}];
|
||||
}
|
||||
@end
|
@ -0,0 +1,31 @@
|
||||
// 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/Flutter.h>
|
||||
#import <XCTest/XCTest.h>
|
||||
#import "EchoMessenger.h"
|
||||
#import "enum.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
@interface EnumTest : XCTestCase
|
||||
@end
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
@implementation EnumTest
|
||||
|
||||
- (void)testEcho {
|
||||
ACData* data = [[ACData alloc] init];
|
||||
data.state = ACStateError;
|
||||
EchoBinaryMessenger* binaryMessenger = [[EchoBinaryMessenger alloc] init];
|
||||
ACEnumApi2Flutter* api = [[ACEnumApi2Flutter alloc] initWithBinaryMessenger:binaryMessenger];
|
||||
XCTestExpectation* expectation = [self expectationWithDescription:@"callback"];
|
||||
[api echo:data
|
||||
completion:^(ACData* _Nonnull result, NSError* _Nullable error) {
|
||||
XCTAssertEqual(data.state, result.state);
|
||||
[expectation fulfill];
|
||||
}];
|
||||
[self waitForExpectations:@[ expectation ] timeout:1.0];
|
||||
}
|
||||
|
||||
@end
|
@ -302,6 +302,14 @@ run_ios_unittests() {
|
||||
--objc_source_out platform_tests/ios_unit_tests/ios/Runner/all_datatypes.m
|
||||
clang-format -i platform_tests/ios_unit_tests/ios/Runner/all_datatypes.h
|
||||
clang-format -i platform_tests/ios_unit_tests/ios/Runner/all_datatypes.m
|
||||
$run_pigeon \
|
||||
--input pigeons/enum.dart \
|
||||
--objc_prefix AC \
|
||||
--dart_out /dev/null \
|
||||
--objc_header_out platform_tests/ios_unit_tests/ios/Runner/enum.h \
|
||||
--objc_source_out platform_tests/ios_unit_tests/ios/Runner/enum.m
|
||||
clang-format -i platform_tests/ios_unit_tests/ios/Runner/enum.h
|
||||
clang-format -i platform_tests/ios_unit_tests/ios/Runner/enum.m
|
||||
pushd $PWD
|
||||
cd platform_tests/ios_unit_tests
|
||||
flutter build ios --simulator
|
||||
|
Reference in New Issue
Block a user