@@ -24,47 +24,64 @@ final class InProcessServerTransportTest: XCTestCase {
2424 let stream = RPCStream < RPCAsyncSequence < RPCRequestPart > , RPCWriter < RPCResponsePart > . Closable > (
2525 descriptor: . init( service: " testService " , method: " testMethod " ) ,
2626 inbound: . elements( [ . message( [ 42 ] ) ] ) ,
27- outbound: . init( wrapping: BufferedStream . Source ( storage: . init( backPressureStrategy: . watermark( . init( low: 1 , high: 1 ) ) ) ) )
27+ outbound: . init(
28+ wrapping: BufferedStream . Source (
29+ storage: . init( backPressureStrategy: . watermark( . init( low: 1 , high: 1 ) ) )
30+ )
31+ )
2832 )
29-
33+
3034 let streamSequence = transport. listen ( )
3135 var streamSequenceInterator = streamSequence. makeAsyncIterator ( )
32-
33- transport. acceptStream ( stream)
34-
36+
37+ try transport. acceptStream ( stream)
38+
3539 let testStream = try await streamSequenceInterator. next ( )
36- var inboundIterator = testStream? . inbound. makeAsyncIterator ( )
37- let rpcRequestPart = try await inboundIterator? . next ( )
38- XCTAssertEqual ( rpcRequestPart, . message( [ 42 ] ) )
40+ let messages = try await testStream? . inbound. collect ( )
41+ XCTAssertEqual ( messages, [ . message( [ 42 ] ) ] )
3942 }
40-
43+
4144 func testStopListening( ) async throws {
4245 let transport = InProcessServerTransport ( )
43- let firstStream = RPCStream < RPCAsyncSequence < RPCRequestPart > , RPCWriter < RPCResponsePart > . Closable > (
46+ let firstStream = RPCStream <
47+ RPCAsyncSequence < RPCRequestPart > , RPCWriter < RPCResponsePart > . Closable
48+ > (
4449 descriptor: . init( service: " testService1 " , method: " testMethod1 " ) ,
4550 inbound: . elements( [ . message( [ 42 ] ) ] ) ,
46- outbound: . init( wrapping: BufferedStream . Source ( storage: . init( backPressureStrategy: . watermark( . init( low: 1 , high: 1 ) ) ) ) )
51+ outbound: . init(
52+ wrapping: BufferedStream . Source (
53+ storage: . init( backPressureStrategy: . watermark( . init( low: 1 , high: 1 ) ) )
54+ )
55+ )
4756 )
48-
57+
4958 let streamSequence = transport. listen ( )
5059 var streamSequenceInterator = streamSequence. makeAsyncIterator ( )
51-
52- transport. acceptStream ( firstStream)
53-
60+
61+ try transport. acceptStream ( firstStream)
62+
5463 let firstTestStream = try await streamSequenceInterator. next ( )
55- var inboundIterator = firstTestStream? . inbound. makeAsyncIterator ( )
56- let rpcRequestPart = try await inboundIterator? . next ( )
57- XCTAssertEqual ( rpcRequestPart, . message( [ 42 ] ) )
58-
64+ let firstStreamMessages = try await firstTestStream? . inbound. collect ( )
65+ XCTAssertEqual ( firstStreamMessages, [ . message( [ 42 ] ) ] )
66+
5967 transport. stopListening ( )
60-
61- let secondStream = RPCStream < RPCAsyncSequence < RPCRequestPart > , RPCWriter < RPCResponsePart > . Closable > (
68+
69+ let secondStream = RPCStream <
70+ RPCAsyncSequence < RPCRequestPart > , RPCWriter < RPCResponsePart > . Closable
71+ > (
6272 descriptor: . init( service: " testService1 " , method: " testMethod1 " ) ,
6373 inbound: . elements( [ . message( [ 42 ] ) ] ) ,
64- outbound: . init( wrapping: BufferedStream . Source ( storage: . init( backPressureStrategy: . watermark( . init( low: 1 , high: 1 ) ) ) ) )
74+ outbound: . init(
75+ wrapping: BufferedStream . Source (
76+ storage: . init( backPressureStrategy: . watermark( . init( low: 1 , high: 1 ) ) )
77+ )
78+ )
6579 )
80+
81+ XCTAssertThrowsRPCError ( try transport. acceptStream ( secondStream) ) { error in
82+ XCTAssertEqual ( error. code, . failedPrecondition)
83+ }
6684
67- transport. acceptStream ( secondStream)
6885 let secondTestStream = try await streamSequenceInterator. next ( )
6986 XCTAssertNil ( secondTestStream)
7087 }
0 commit comments