| // 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 XCTest |
| @testable import test_plugin |
| |
| class MockEnumApi2Host: EnumApi2Host { |
| func echo(data: DataWithEnum) -> DataWithEnum { |
| return data |
| } |
| } |
| |
| extension DataWithEnum: Equatable { |
| public static func == (lhs: DataWithEnum, rhs: DataWithEnum) -> Bool { |
| lhs.state == rhs.state |
| } |
| } |
| |
| class EnumTests: XCTestCase { |
| |
| func testEchoHost() throws { |
| let binaryMessenger = MockBinaryMessenger<DataWithEnum>(codec: EnumApi2HostCodec.shared) |
| EnumApi2HostSetup.setUp(binaryMessenger: binaryMessenger, api: MockEnumApi2Host()) |
| let channelName = "dev.flutter.pigeon.EnumApi2Host.echo" |
| XCTAssertNotNil(binaryMessenger.handlers[channelName]) |
| |
| let input = DataWithEnum(state: .success) |
| let inputEncoded = binaryMessenger.codec.encode([input]) |
| |
| let expectation = XCTestExpectation(description: "echo") |
| binaryMessenger.handlers[channelName]?(inputEncoded) { data in |
| let outputMap = binaryMessenger.codec.decode(data) as? [Any] |
| XCTAssertNotNil(outputMap) |
| |
| let output = outputMap?.first as? DataWithEnum |
| XCTAssertEqual(output, input) |
| XCTAssertTrue(outputMap?.count == 1) |
| expectation.fulfill() |
| } |
| wait(for: [expectation], timeout: 1.0) |
| } |
| |
| func testEchoFlutter() throws { |
| let data = DataWithEnum(state: .error) |
| let binaryMessenger = EchoBinaryMessenger(codec: EnumApi2HostCodec.shared) |
| let api = EnumApi2Flutter(binaryMessenger: binaryMessenger) |
| |
| let expectation = XCTestExpectation(description: "callback") |
| api.echo(data: data) { result in |
| XCTAssertEqual(data.state, result.state) |
| expectation.fulfill() |
| } |
| wait(for: [expectation], timeout: 1.0) |
| } |
| |
| } |