66
77namespace ThunderDesign . Net_PCL . Threading . UnitTests . Locks
88{
9- public class MethodThreadLockTests
9+ public class MethodThreadLocksTests
1010 {
11- private async Task MethodA ( MethodThreadLock methodLock , int delayMs )
11+ private async Task MethodA ( MethodThreadLocks methodLocks , int delayMs )
1212 {
13- await methodLock . LockAsync ( ) ;
13+ await methodLocks . LockAsync ( ) ;
1414 try
1515 {
1616 await Task . Delay ( delayMs ) ;
1717 }
1818 finally
1919 {
20- methodLock . Unlock ( ) ;
20+ methodLocks . Unlock ( ) ;
2121 }
2222 }
2323
24- private async Task MethodB ( MethodThreadLock methodLock , int delayMs )
24+ private async Task MethodB ( MethodThreadLocks methodLocks , int delayMs )
2525 {
26- await methodLock . LockAsync ( ) ;
26+ await methodLocks . LockAsync ( ) ;
2727 try
2828 {
2929 await Task . Delay ( delayMs ) ;
3030 }
3131 finally
3232 {
33- methodLock . Unlock ( ) ;
33+ methodLocks . Unlock ( ) ;
3434 }
3535 }
3636
3737 [ Fact ]
3838 public async Task LockAsync_ShouldUseCallerMemberName_ToScopeLock ( )
3939 {
40- using var methodLock = new MethodThreadLock ( ) ;
40+ using var methodLocks = new MethodThreadLocks ( ) ;
4141
42- var firstCall = MethodA ( methodLock , 200 ) ;
42+ var firstCall = MethodA ( methodLocks , 200 ) ;
4343
4444 await Task . Delay ( 20 ) ; // allow first call to acquire lock
4545
46- var secondCall = MethodA ( methodLock , 20 ) ;
46+ var secondCall = MethodA ( methodLocks , 20 ) ;
4747
4848 var completedEarly = await Task . WhenAny ( secondCall , Task . Delay ( 50 ) ) == secondCall ;
4949 Assert . False ( completedEarly ) ;
@@ -54,10 +54,10 @@ public async Task LockAsync_ShouldUseCallerMemberName_ToScopeLock()
5454 [ Fact ]
5555 public async Task LockAsync_ShouldNotBlock_DifferentMethods ( )
5656 {
57- using var methodLock = new MethodThreadLock ( ) ;
57+ using var methodLocks = new MethodThreadLocks ( ) ;
5858
59- var callA = MethodA ( methodLock , 200 ) ;
60- var callB = MethodB ( methodLock , 200 ) ;
59+ var callA = MethodA ( methodLocks , 200 ) ;
60+ var callB = MethodB ( methodLocks , 200 ) ;
6161
6262 var completed = await Task . WhenAny ( Task . WhenAll ( callA , callB ) , Task . Delay ( 500 ) ) ;
6363
@@ -67,44 +67,44 @@ public async Task LockAsync_ShouldNotBlock_DifferentMethods()
6767 [ Fact ]
6868 public async Task LockAsync_WithExplicitMethodName_ShouldScopeIndependently ( )
6969 {
70- using var methodLock = new MethodThreadLock ( ) ;
70+ using var methodLocks = new MethodThreadLocks ( ) ;
7171
72- await methodLock . LockAsync ( "CustomKey1" ) ;
72+ await methodLocks . LockAsync ( "CustomKey1" ) ;
7373
74- var otherKeyTask = methodLock . LockAsync ( "CustomKey2" ) ;
74+ var otherKeyTask = methodLocks . LockAsync ( "CustomKey2" ) ;
7575 var completed = await Task . WhenAny ( otherKeyTask , Task . Delay ( 500 ) ) == otherKeyTask ;
7676
7777 Assert . True ( completed ) ;
7878
79- methodLock . Unlock ( "CustomKey1" ) ;
80- methodLock . Unlock ( "CustomKey2" ) ;
79+ methodLocks . Unlock ( "CustomKey1" ) ;
80+ methodLocks . Unlock ( "CustomKey2" ) ;
8181 }
8282
8383 [ Fact ]
8484 public async Task LockAsync_ShouldThrowArgumentNullException_WhenMethodNameIsNullOrWhiteSpace ( )
8585 {
86- using var methodLock = new MethodThreadLock ( ) ;
86+ using var methodLocks = new MethodThreadLocks ( ) ;
8787
88- await Assert . ThrowsAsync < ArgumentNullException > ( ( ) => methodLock . LockAsync ( " " ) ) ;
88+ await Assert . ThrowsAsync < ArgumentNullException > ( ( ) => methodLocks . LockAsync ( " " ) ) ;
8989 }
9090
9191 [ Fact ]
9292 public void Unlock_ShouldThrowArgumentNullException_WhenMethodNameIsNullOrWhiteSpace ( )
9393 {
94- using var methodLock = new MethodThreadLock ( ) ;
94+ using var methodLocks = new MethodThreadLocks ( ) ;
9595
96- Assert . Throws < ArgumentNullException > ( ( ) => methodLock . Unlock ( " " ) ) ;
96+ Assert . Throws < ArgumentNullException > ( ( ) => methodLocks . Unlock ( " " ) ) ;
9797 }
9898
9999 [ Fact ]
100100 public async Task LockAsync_ShouldThrowOperationCanceledException_WhenCancelled ( )
101101 {
102- using var methodLock = new MethodThreadLock ( ) ;
102+ using var methodLocks = new MethodThreadLocks ( ) ;
103103
104- await methodLock . LockAsync ( nameof ( LockAsync_ShouldThrowOperationCanceledException_WhenCancelled ) ) ;
104+ await methodLocks . LockAsync ( nameof ( LockAsync_ShouldThrowOperationCanceledException_WhenCancelled ) ) ;
105105
106106 using var cts = new CancellationTokenSource ( ) ;
107- var waitingTask = methodLock . LockAsync ( nameof ( LockAsync_ShouldThrowOperationCanceledException_WhenCancelled ) , cts . Token ) ;
107+ var waitingTask = methodLocks . LockAsync ( nameof ( LockAsync_ShouldThrowOperationCanceledException_WhenCancelled ) , cts . Token ) ;
108108
109109 cts . Cancel ( ) ;
110110
@@ -114,27 +114,27 @@ public async Task LockAsync_ShouldThrowOperationCanceledException_WhenCancelled(
114114 [ Fact ]
115115 public async Task LockAsync_ShouldThrowObjectDisposedException_WhenDisposedWhileWaiting ( )
116116 {
117- var methodLock = new MethodThreadLock ( ) ;
117+ var methodLocks = new MethodThreadLocks ( ) ;
118118
119- await methodLock . LockAsync ( "SharedMethod" ) ;
119+ await methodLocks . LockAsync ( "SharedMethod" ) ;
120120
121- var waitingTask = methodLock . LockAsync ( "SharedMethod" ) ;
122- methodLock . Dispose ( ) ;
121+ var waitingTask = methodLocks . LockAsync ( "SharedMethod" ) ;
122+ methodLocks . Dispose ( ) ;
123123
124124 await Assert . ThrowsAsync < ObjectDisposedException > ( ( ) => waitingTask ) ;
125125 }
126126
127127 [ Fact ]
128128 public async Task LockAsync_ShouldOnlyAllowOneCaller_PerMethodName_UnderConcurrentAccess ( )
129129 {
130- using var methodLock = new MethodThreadLock ( ) ;
130+ using var methodLocks = new MethodThreadLocks ( ) ;
131131 var counter = 0 ;
132132 var maxObservedConcurrency = 0 ;
133133 var gate = new object ( ) ;
134134
135135 async Task Worker ( )
136136 {
137- await methodLock . LockAsync ( nameof ( Worker ) ) ;
137+ await methodLocks . LockAsync ( nameof ( Worker ) ) ;
138138 try
139139 {
140140 lock ( gate )
@@ -152,7 +152,7 @@ async Task Worker()
152152 }
153153 finally
154154 {
155- methodLock . Unlock ( nameof ( Worker ) ) ;
155+ methodLocks . Unlock ( nameof ( Worker ) ) ;
156156 }
157157 }
158158
0 commit comments