@@ -7,10 +7,7 @@ namespace Caliburn.Micro.Core.Tests
77{
88 public class EventAggregatorExtensionsTests
99 {
10-
11-
12-
13-
10+ const int NumberOfMockTargets = 20 ;
1411 [ Fact ]
1512 public void SubscribeOnUIThread_CallsSubscribeWithUIThreadMarshaller ( )
1613 {
@@ -24,9 +21,9 @@ public void SubscribeOnUIThread_CallsSubscribeWithUIThreadMarshaller()
2421 mockAggregator . Object . SubscribeOnUIThread ( subscriber ) ;
2522
2623 Assert . NotNull ( capturedMarshaller ) ;
27- // UI thread marshaller returns a Task
28- var tcs = new TaskCompletionSource < bool > ( ) ;
29- var task = capturedMarshaller ( ( ) => { tcs . SetResult ( true ) ; return tcs . Task ; } ) ;
24+ // UI thread marshaler returns a Task
25+ var taskSource = new TaskCompletionSource < bool > ( ) ;
26+ var task = capturedMarshaller ( ( ) => { taskSource . SetResult ( true ) ; return taskSource . Task ; } ) ;
3027 Assert . IsAssignableFrom < Task > ( task ) ;
3128 }
3229
@@ -35,15 +32,18 @@ public async Task PublishOnCurrentThreadAsync_CallsPublishAsyncWithDirectMarshal
3532 {
3633 var eventAggregator = new EventAggregator ( ) ;
3734 string message = "Test" ;
38- var cancellationToken = new CancellationTokenSource ( ) . Token ;
39- var mockTarget1 = new Mock < IHandle < string > > ( ) ;
40- var mockTarget2 = new Mock < IHandle < string > > ( ) ;
41- eventAggregator . SubscribeOnPublishedThread ( mockTarget1 . Object ) ;
42- eventAggregator . SubscribeOnPublishedThread ( mockTarget2 . Object ) ;
43- await eventAggregator . PublishOnCurrentThreadAsync ( message , cancellationToken ) ;
44-
45- mockTarget1 . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
46- mockTarget2 . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
35+ using ( var tokenSource = new CancellationTokenSource ( ) )
36+ {
37+ var cancellationToken = tokenSource . Token ;
38+ var mockTarget1 = new Mock < IHandle < string > > ( ) ;
39+ var mockTarget2 = new Mock < IHandle < string > > ( ) ;
40+ eventAggregator . SubscribeOnPublishedThread ( mockTarget1 . Object ) ;
41+ eventAggregator . SubscribeOnPublishedThread ( mockTarget2 . Object ) ;
42+ await eventAggregator . PublishOnCurrentThreadAsync ( message , cancellationToken ) ;
43+
44+ mockTarget1 . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
45+ mockTarget2 . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
46+ }
4747 }
4848
4949
@@ -52,40 +52,43 @@ public async Task PublishOnBackgroundThreadAsync_CallsPublishAsyncWithBackground
5252 {
5353 var eventAggregator = new EventAggregator ( ) ;
5454 var message = new object ( ) ;
55- var cancellationToken = new CancellationTokenSource ( ) . Token ;
56- var mockTarget1 = new Mock < IHandle < object > > ( ) ;
57- eventAggregator . SubscribeOnPublishedThread ( mockTarget1 . Object ) ;
55+ using ( var tokenSource = new CancellationTokenSource ( ) )
56+ {
57+ var cancellationToken = tokenSource . Token ;
58+ var mockTarget1 = new Mock < IHandle < object > > ( ) ;
59+ eventAggregator . SubscribeOnPublishedThread ( mockTarget1 . Object ) ;
5860
5961
60- await eventAggregator . PublishOnBackgroundThreadAsync ( message , cancellationToken ) ;
62+ await eventAggregator . PublishOnBackgroundThreadAsync ( message , cancellationToken ) ;
6163
62- mockTarget1 . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
64+ mockTarget1 . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
65+ }
6366 }
6467
6568 [ Fact ]
6669 public async Task PublishOnCurrentThreadAsync_CallsHandleAsyncOnAllSubscribedTargets ( )
6770 {
6871 var eventAggregator = new EventAggregator ( ) ;
6972 string message = "Test" ;
70- var cancellationToken = new CancellationTokenSource ( ) . Token ;
71-
72- // Create 20 mock targets
73- var mockTargets = new Mock < IHandle < object > > [ 20 ] ;
74- for ( int i = 0 ; i < mockTargets . Length ; i ++ )
75- {
76- var mockTargets = new Mock < IHandle < string > > [ 20 ] ;
77- for ( int i = 0 ; i < mockTargets . Length ; i ++ )
78- {
79- mockTargets [ i ] = new Mock < IHandle < string > > ( ) ;
80- eventAggregator . SubscribeOnPublishedThread ( mockTargets [ i ] . Object ) ;
81- }
82-
83- await eventAggregator . PublishOnCurrentThreadAsync ( message , cancellationToken ) ;
84-
85- // Verify HandleAsync was called on each
86- foreach ( var mockTarget in mockTargets )
73+ using ( var tokenSource = new CancellationTokenSource ( ) )
8774 {
88- mockTarget . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
75+ var cancellationToken = tokenSource . Token ;
76+
77+ // Create 20 mock targets
78+ var mockTargets = new Mock < IHandle < string > > [ NumberOfMockTargets ] ;
79+ for ( int i = 0 ; i < mockTargets . Length ; i ++ )
80+ {
81+ mockTargets [ i ] = new Mock < IHandle < string > > ( ) ;
82+ eventAggregator . SubscribeOnPublishedThread ( mockTargets [ i ] . Object ) ;
83+ }
84+
85+ await eventAggregator . PublishOnCurrentThreadAsync ( message , cancellationToken ) ;
86+
87+ // Verify HandleAsync was called on each
88+ foreach ( var mockTarget in mockTargets )
89+ {
90+ mockTarget . Verify ( x => x . HandleAsync ( message , cancellationToken ) , Times . Once ) ;
91+ }
8992 }
9093 }
9194 }
0 commit comments