@@ -56,6 +56,33 @@ class CodableLambdaTest: XCTestCase {
5656 XCTAssertNil ( outputBuffer)
5757 }
5858
59+ func testCodableEventLoopFutureHandler( ) {
60+ let request = Request ( requestId: UUID ( ) . uuidString)
61+ var inputBuffer : ByteBuffer ?
62+ var outputBuffer : ByteBuffer ?
63+ var response : Response ?
64+
65+ struct Handler : EventLoopLambdaHandler {
66+ typealias In = Request
67+ typealias Out = Response
68+
69+ let expected : Request
70+
71+ func handle( context: Lambda . Context , event: Request ) -> EventLoopFuture < Response > {
72+ XCTAssertEqual ( event, self . expected)
73+ return context. eventLoop. makeSucceededFuture ( Response ( requestId: event. requestId) )
74+ }
75+ }
76+
77+ let handler = Handler ( expected: request)
78+
79+ XCTAssertNoThrow ( inputBuffer = try JSONEncoder ( ) . encode ( request, using: self . allocator) )
80+ XCTAssertNoThrow ( outputBuffer = try handler. handle ( context: self . newContext ( ) , event: XCTUnwrap ( inputBuffer) ) . wait ( ) )
81+ XCTAssertNoThrow ( response = try JSONDecoder ( ) . decode ( Response . self, from: XCTUnwrap ( outputBuffer) ) )
82+ XCTAssertEqual ( response? . requestId, request. requestId)
83+ }
84+
85+ #if swift(>=5.5)
5986 @available ( macOS 12 , iOS 15 , tvOS 15 , watchOS 8 , * )
6087 func testCodableVoidHandler( ) {
6188 struct Handler : LambdaHandler {
@@ -84,33 +111,7 @@ class CodableLambdaTest: XCTestCase {
84111 XCTAssertNil ( outputBuffer)
85112 }
86113 }
87-
88- func testCodableEventLoopFutureHandler( ) {
89- let request = Request ( requestId: UUID ( ) . uuidString)
90- var inputBuffer : ByteBuffer ?
91- var outputBuffer : ByteBuffer ?
92- var response : Response ?
93-
94- struct Handler : EventLoopLambdaHandler {
95- typealias In = Request
96- typealias Out = Response
97-
98- let expected : Request
99-
100- func handle( context: Lambda . Context , event: Request ) -> EventLoopFuture < Response > {
101- XCTAssertEqual ( event, self . expected)
102- return context. eventLoop. makeSucceededFuture ( Response ( requestId: event. requestId) )
103- }
104- }
105-
106- let handler = Handler ( expected: request)
107-
108- XCTAssertNoThrow ( inputBuffer = try JSONEncoder ( ) . encode ( request, using: self . allocator) )
109- XCTAssertNoThrow ( outputBuffer = try handler. handle ( context: self . newContext ( ) , event: XCTUnwrap ( inputBuffer) ) . wait ( ) )
110- XCTAssertNoThrow ( response = try JSONDecoder ( ) . decode ( Response . self, from: XCTUnwrap ( outputBuffer) ) )
111- XCTAssertEqual ( response? . requestId, request. requestId)
112- }
113-
114+
114115 @available ( macOS 12 , iOS 15 , tvOS 15 , watchOS 8 , * )
115116 func testCodableHandler( ) {
116117 struct Handler : LambdaHandler {
@@ -142,6 +143,7 @@ class CodableLambdaTest: XCTestCase {
142143 XCTAssertEqual ( response? . requestId, request. requestId)
143144 }
144145 }
146+ #endif
145147
146148 // convencience method
147149 func newContext( ) -> Lambda . Context {
@@ -177,6 +179,9 @@ private struct Response: Codable, Equatable {
177179 }
178180}
179181
182+ #if swift(>=5.5)
183+ // NOTE: workaround until we have async test support on linux
184+ // https://github.com/apple/swift-corelibs-xctest/pull/326
180185extension XCTestCase {
181186 @available ( macOS 12 , iOS 15 , tvOS 15 , watchOS 8 , * )
182187 public func XCTAsyncTest(
@@ -198,3 +203,4 @@ extension XCTestCase {
198203 self . wait ( for: [ expectation] , timeout: timeout)
199204 }
200205}
206+ #endif
0 commit comments