@@ -42,29 +42,28 @@ public FlowSelectAsyncSpec(ITestOutputHelper helper) : base(helper)
42
42
}
43
43
44
44
[ Fact ]
45
- public void A_Flow_with_SelectAsync_must_produce_task_elements ( )
45
+ public async Task A_Flow_with_SelectAsync_must_produce_task_elements ( )
46
46
{
47
- this . AssertAllStagesStopped ( ( ) =>
48
- {
47
+ await this . AssertAllStagesStoppedAsync ( async ( ) => {
49
48
var c = this . CreateManualSubscriberProbe < int > ( ) ;
50
49
Source . From ( Enumerable . Range ( 1 , 3 ) )
51
50
. SelectAsync ( 4 , Task . FromResult )
52
51
. RunWith ( Sink . FromSubscriber ( c ) , Materializer ) ;
53
- var sub = c . ExpectSubscription ( ) ;
52
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
54
53
55
54
sub . Request ( 2 ) ;
56
- c . ExpectNext ( 1 )
55
+ await c . ExpectNext ( 1 )
57
56
. ExpectNext ( 2 )
58
- . ExpectNoMsg ( TimeSpan . FromMilliseconds ( 200 ) ) ;
57
+ . ExpectNoMsgAsync ( TimeSpan . FromMilliseconds ( 200 ) ) ;
59
58
sub . Request ( 2 ) ;
60
59
61
- c . ExpectNext ( 3 )
62
- . ExpectComplete ( ) ;
60
+ await c . ExpectNext ( 3 )
61
+ . ExpectCompleteAsync ( ) ;
63
62
} , Materializer ) ;
64
63
}
65
64
66
65
[ Fact ]
67
- public void A_Flow_with_SelectAsync_must_produce_task_elements_in_order ( )
66
+ public async void A_Flow_with_SelectAsync_must_produce_task_elements_in_order ( )
68
67
{
69
68
var c = this . CreateManualSubscriberProbe < int > ( ) ;
70
69
Source . From ( Enumerable . Range ( 1 , 50 ) )
@@ -80,14 +79,16 @@ public void A_Flow_with_SelectAsync_must_produce_task_elements_in_order()
80
79
} ) ;
81
80
} )
82
81
. RunWith ( Sink . FromSubscriber ( c ) , Materializer ) ;
83
- var sub = c . ExpectSubscription ( ) ;
82
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
84
83
sub . Request ( 1000 ) ;
85
- Enumerable . Range ( 1 , 50 ) . ForEach ( n => c . ExpectNext ( n ) ) ;
86
- c . ExpectComplete ( ) ;
84
+ foreach ( var n in Enumerable . Range ( 1 , 50 ) )
85
+ await c . ExpectNextAsync ( n ) ;
86
+ //Enumerable.Range(1, 50).ForEach(n => c.ExpectNext(n));
87
+ await c . ExpectCompleteAsync ( ) ;
87
88
}
88
89
89
90
[ LocalFact ( SkipLocal = "Racy on Azure DevOps" ) ]
90
- public void A_Flow_with_SelectAsync_must_not_run_more_futures_than_requested_parallelism ( )
91
+ public async Task A_Flow_with_SelectAsync_must_not_run_more_futures_than_requested_parallelism ( )
91
92
{
92
93
var probe = CreateTestProbe ( ) ;
93
94
var c = this . CreateManualSubscriberProbe < int > ( ) ;
@@ -98,27 +99,28 @@ public void A_Flow_with_SelectAsync_must_not_run_more_futures_than_requested_par
98
99
return n ;
99
100
} ) )
100
101
. RunWith ( Sink . FromSubscriber ( c ) , Materializer ) ;
101
- var sub = c . ExpectSubscription ( ) ;
102
- probe . ExpectNoMsg ( TimeSpan . FromMilliseconds ( 500 ) ) ;
102
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
103
+ await probe . ExpectNoMsgAsync ( TimeSpan . FromMilliseconds ( 500 ) ) ;
103
104
sub . Request ( 1 ) ;
104
105
probe . ReceiveN ( 9 ) . Should ( ) . BeEquivalentTo ( Enumerable . Range ( 1 , 9 ) ) ;
105
- probe . ExpectNoMsg ( TimeSpan . FromMilliseconds ( 500 ) ) ;
106
+ await probe . ExpectNoMsgAsync ( TimeSpan . FromMilliseconds ( 500 ) ) ;
106
107
sub . Request ( 2 ) ;
107
108
probe . ReceiveN ( 2 ) . Should ( ) . BeEquivalentTo ( Enumerable . Range ( 10 , 2 ) ) ;
108
- probe . ExpectNoMsg ( TimeSpan . FromMilliseconds ( 500 ) ) ;
109
+ await probe . ExpectNoMsgAsync ( TimeSpan . FromMilliseconds ( 500 ) ) ;
109
110
sub . Request ( 10 ) ;
110
111
probe . ReceiveN ( 9 ) . Should ( ) . BeEquivalentTo ( Enumerable . Range ( 12 , 9 ) ) ;
111
- probe . ExpectNoMsg ( TimeSpan . FromMilliseconds ( 200 ) ) ;
112
+ await probe . ExpectNoMsgAsync ( TimeSpan . FromMilliseconds ( 200 ) ) ;
112
113
113
- Enumerable . Range ( 1 , 13 ) . ForEach ( n => c . ExpectNext ( n ) ) ;
114
- c . ExpectNoMsg ( TimeSpan . FromMilliseconds ( 200 ) ) ;
114
+ foreach ( var n in Enumerable . Range ( 1 , 13 ) )
115
+ await c . ExpectNextAsync ( n ) ;
116
+ //Enumerable.Range(1, 13).ForEach(n => c.ExpectNext(n));
117
+ await c . ExpectNoMsgAsync ( TimeSpan . FromMilliseconds ( 200 ) ) ;
115
118
}
116
119
117
120
[ LocalFact ( SkipLocal = "Racy on Azure DevOps" ) ]
118
- public void A_Flow_with_SelectAsync_must_signal_task_failure ( )
121
+ public async Task A_Flow_with_SelectAsync_must_signal_task_failure ( )
119
122
{
120
- this . AssertAllStagesStopped ( ( ) =>
121
- {
123
+ await this . AssertAllStagesStoppedAsync ( async ( ) => {
122
124
var latch = new TestLatch ( 1 ) ;
123
125
var c = this . CreateManualSubscriberProbe < int > ( ) ;
124
126
Source . From ( Enumerable . Range ( 1 , 5 ) )
@@ -131,18 +133,17 @@ public void A_Flow_with_SelectAsync_must_signal_task_failure()
131
133
return n ;
132
134
} ) )
133
135
. To ( Sink . FromSubscriber ( c ) ) . Run ( Materializer ) ;
134
- var sub = c . ExpectSubscription ( ) ;
136
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
135
137
sub . Request ( 10 ) ;
136
138
c . ExpectError ( ) . InnerException . Message . Should ( ) . Be ( "err1" ) ;
137
139
latch . CountDown ( ) ;
138
140
} , Materializer ) ;
139
141
}
140
142
141
143
[ Fact ]
142
- public void A_Flow_with_SelectAsync_must_signal_task_failure_asap ( )
144
+ public async Task A_Flow_with_SelectAsync_must_signal_task_failure_asap ( )
143
145
{
144
- this . AssertAllStagesStopped ( ( ) =>
145
- {
146
+ await this . AssertAllStagesStoppedAsync ( ( ) => {
146
147
var latch = CreateTestLatch ( ) ;
147
148
var done = Source . From ( Enumerable . Range ( 1 , 5 ) )
148
149
. Select ( n =>
@@ -155,7 +156,7 @@ public void A_Flow_with_SelectAsync_must_signal_task_failure_asap()
155
156
} )
156
157
. SelectAsync ( 4 , n =>
157
158
{
158
- if ( n == 1 )
159
+ if ( n == 1 )
159
160
{
160
161
var c = new TaskCompletionSource < int > ( ) ;
161
162
c . SetException ( new Exception ( "err1" ) ) ;
@@ -166,14 +167,14 @@ public void A_Flow_with_SelectAsync_must_signal_task_failure_asap()
166
167
167
168
done . Invoking ( d => d . Wait ( RemainingOrDefault ) ) . Should ( ) . Throw < Exception > ( ) . WithMessage ( "err1" ) ;
168
169
latch . CountDown ( ) ;
170
+ return Task . CompletedTask ;
169
171
} , Materializer ) ;
170
172
}
171
173
172
174
[ Fact ]
173
- public void A_Flow_with_SelectAsync_must_signal_error_from_SelectAsync ( )
175
+ public async Task A_Flow_with_SelectAsync_must_signal_error_from_SelectAsync ( )
174
176
{
175
- this . AssertAllStagesStopped ( ( ) =>
176
- {
177
+ await this . AssertAllStagesStoppedAsync ( async ( ) => {
177
178
var latch = new TestLatch ( 1 ) ;
178
179
var c = this . CreateManualSubscriberProbe < int > ( ) ;
179
180
Source . From ( Enumerable . Range ( 1 , 5 ) )
@@ -189,20 +190,19 @@ public void A_Flow_with_SelectAsync_must_signal_error_from_SelectAsync()
189
190
} ) ;
190
191
} )
191
192
. RunWith ( Sink . FromSubscriber ( c ) , Materializer ) ;
192
- var sub = c . ExpectSubscription ( ) ;
193
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
193
194
sub . Request ( 10 ) ;
194
195
c . ExpectError ( ) . Message . Should ( ) . Be ( "err2" ) ;
195
196
latch . CountDown ( ) ;
196
197
} , Materializer ) ;
197
198
}
198
199
199
200
[ Fact ]
200
- public void A_Flow_with_SelectAsync_must_resume_after_task_failure ( )
201
+ public async Task A_Flow_with_SelectAsync_must_resume_after_task_failure ( )
201
202
{
202
- this . AssertAllStagesStopped ( ( ) =>
203
+ await this . AssertAllStagesStoppedAsync ( async ( ) =>
203
204
{
204
- this . AssertAllStagesStopped ( ( ) =>
205
- {
205
+ await this . AssertAllStagesStoppedAsync ( async ( ) => {
206
206
var c = this . CreateManualSubscriberProbe < int > ( ) ;
207
207
Source . From ( Enumerable . Range ( 1 , 5 ) )
208
208
. SelectAsync ( 4 , n => Task . Run ( ( ) =>
@@ -213,21 +213,21 @@ public void A_Flow_with_SelectAsync_must_resume_after_task_failure()
213
213
} ) )
214
214
. WithAttributes ( ActorAttributes . CreateSupervisionStrategy ( Deciders . ResumingDecider ) )
215
215
. RunWith ( Sink . FromSubscriber ( c ) , Materializer ) ;
216
- var sub = c . ExpectSubscription ( ) ;
216
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
217
217
sub . Request ( 10 ) ;
218
- new [ ] { 1 , 2 , 4 , 5 } . ForEach ( i => c . ExpectNext ( i ) ) ;
219
- c . ExpectComplete ( ) ;
218
+ foreach ( var i in new [ ] { 1 , 2 , 4 , 5 } )
219
+ await c . ExpectNextAsync ( i ) ;
220
+ await c . ExpectCompleteAsync ( ) ;
220
221
} , Materializer ) ;
221
222
} , Materializer ) ;
222
223
}
223
224
224
225
[ Fact ]
225
- public void A_Flow_with_SelectAsync_must_resume_after_multiple_failures ( )
226
+ public async Task A_Flow_with_SelectAsync_must_resume_after_multiple_failures ( )
226
227
{
227
- this . AssertAllStagesStopped ( ( ) =>
228
- {
228
+ await this . AssertAllStagesStoppedAsync ( ( ) => {
229
229
var futures = new [ ]
230
- {
230
+ {
231
231
Task . Run ( ( ) => { throw new TestException ( "failure1" ) ; return "" ; } ) ,
232
232
Task . Run ( ( ) => { throw new TestException ( "failure2" ) ; return "" ; } ) ,
233
233
Task . Run ( ( ) => { throw new TestException ( "failure3" ) ; return "" ; } ) ,
@@ -243,6 +243,7 @@ public void A_Flow_with_SelectAsync_must_resume_after_multiple_failures()
243
243
244
244
t . Wait ( TimeSpan . FromSeconds ( 3 ) ) . Should ( ) . BeTrue ( ) ;
245
245
t . Result . Should ( ) . Be ( "happy" ) ;
246
+ return Task . CompletedTask ;
246
247
} , Materializer ) ;
247
248
}
248
249
@@ -268,7 +269,7 @@ await this.AssertAllStagesStoppedAsync(async() =>
268
269
}
269
270
270
271
[ Fact ]
271
- public void A_Flow_with_SelectAsync_must_resume_when_SelectAsync_throws ( )
272
+ public async Task A_Flow_with_SelectAsync_must_resume_when_SelectAsync_throws ( )
272
273
{
273
274
var c = this . CreateManualSubscriberProbe < int > ( ) ;
274
275
Source . From ( Enumerable . Range ( 1 , 5 ) )
@@ -280,59 +281,59 @@ public void A_Flow_with_SelectAsync_must_resume_when_SelectAsync_throws()
280
281
} )
281
282
. WithAttributes ( ActorAttributes . CreateSupervisionStrategy ( Deciders . ResumingDecider ) )
282
283
. RunWith ( Sink . FromSubscriber ( c ) , Materializer ) ;
283
- var sub = c . ExpectSubscription ( ) ;
284
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
284
285
sub . Request ( 10 ) ;
285
- new [ ] { 1 , 2 , 4 , 5 } . ForEach ( i => c . ExpectNext ( i ) ) ;
286
- c . ExpectComplete ( ) ;
286
+ foreach ( var i in new [ ] { 1 , 2 , 4 , 5 } )
287
+ await c . ExpectNextAsync ( i ) ;
288
+ await c . ExpectCompleteAsync ( ) ;
287
289
}
288
290
289
291
[ Fact ]
290
- public void A_Flow_with_SelectAsync_must_signal_NPE_when_task_is_completed_with_null ( )
292
+ public async Task A_Flow_with_SelectAsync_must_signal_NPE_when_task_is_completed_with_null ( )
291
293
{
292
294
var c = this . CreateManualSubscriberProbe < string > ( ) ;
293
295
294
296
Source . From ( new [ ] { "a" , "b" } )
295
297
. SelectAsync ( 4 , _ => Task . FromResult ( null as string ) )
296
298
. To ( Sink . FromSubscriber ( c ) ) . Run ( Materializer ) ;
297
299
298
- var sub = c . ExpectSubscription ( ) ;
300
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
299
301
sub . Request ( 10 ) ;
300
302
c . ExpectError ( ) . Message . Should ( ) . StartWith ( ReactiveStreamsCompliance . ElementMustNotBeNullMsg ) ;
301
303
}
302
304
303
305
[ Fact ]
304
- public void A_Flow_with_SelectAsync_must_resume_when_task_is_completed_with_null ( )
306
+ public async Task A_Flow_with_SelectAsync_must_resume_when_task_is_completed_with_null ( )
305
307
{
306
308
var c = this . CreateManualSubscriberProbe < string > ( ) ;
307
309
Source . From ( new [ ] { "a" , "b" , "c" } )
308
310
. SelectAsync ( 4 , s => s . Equals ( "b" ) ? Task . FromResult ( null as string ) : Task . FromResult ( s ) )
309
311
. WithAttributes ( ActorAttributes . CreateSupervisionStrategy ( Deciders . ResumingDecider ) )
310
312
. To ( Sink . FromSubscriber ( c ) ) . Run ( Materializer ) ;
311
- var sub = c . ExpectSubscription ( ) ;
313
+ var sub = await c . ExpectSubscriptionAsync ( ) ;
312
314
sub . Request ( 10 ) ;
313
- c . ExpectNext ( "a" ) ;
314
- c . ExpectNext ( "c" ) ;
315
- c . ExpectComplete ( ) ;
315
+ await c . ExpectNextAsync ( "a" ) ;
316
+ await c . ExpectNextAsync ( "c" ) ;
317
+ await c . ExpectCompleteAsync ( ) ;
316
318
}
317
319
318
320
[ Fact ]
319
- public void A_Flow_with_SelectAsync_must_handle_cancel_properly ( )
321
+ public async Task A_Flow_with_SelectAsync_must_handle_cancel_properly ( )
320
322
{
321
- this . AssertAllStagesStopped ( ( ) =>
322
- {
323
+ await this . AssertAllStagesStoppedAsync ( async ( ) => {
323
324
var pub = this . CreateManualPublisherProbe < int > ( ) ;
324
325
var sub = this . CreateManualSubscriberProbe < int > ( ) ;
325
326
326
327
Source . FromPublisher ( pub )
327
328
. SelectAsync ( 4 , _ => Task . FromResult ( 0 ) )
328
329
. RunWith ( Sink . FromSubscriber ( sub ) , Materializer ) ;
329
330
330
- var upstream = pub . ExpectSubscription ( ) ;
331
- upstream . ExpectRequest ( ) ;
331
+ var upstream = await pub . ExpectSubscriptionAsync ( ) ;
332
+ await upstream . ExpectRequestAsync ( ) ;
332
333
333
- sub . ExpectSubscription ( ) . Cancel ( ) ;
334
+ ( await sub . ExpectSubscriptionAsync ( ) ) . Cancel ( ) ;
334
335
335
- upstream . ExpectCancellation ( ) ;
336
+ await upstream . ExpectCancellationAsync ( ) ;
336
337
} , Materializer ) ;
337
338
}
338
339
0 commit comments