2929//  SOFTWARE.
3030//
3131
32+ #if canImport(Testing) 
3233@testable   import  Mutex
33- import  XCTest 
34+ import  Testing 
3435
35- final   class   AllocatedLockTests :   XCTestCase  { 
36+ struct   AllocatedLockTests  { 
3637
37-     func  testLockState_IsProtected( )  async  { 
38+     @Test  
39+     func  lockState_IsProtected( )  async  { 
3840        let  state  =  AllocatedLock < Int > ( initialState:  0 ) 
3941
4042        let  total  =  await  withTaskGroup ( of:  Void . self)  {  group in 
@@ -47,17 +49,18 @@ final class AllocatedLockTests: XCTestCase {
4749            return  state. withLock  {  $0 } 
4850        } 
4951
50-         XCTAssertEqual ( total,  500500 ) 
52+         #expect ( total  ==  500500 ) 
5153    } 
5254
53-     func  testLock_ReturnsValue( )  async  { 
55+     @Test  
56+     func  lock_ReturnsValue( )  async  { 
5457        let  lock  =  AllocatedLock ( ) 
5558        let  value  =  lock. withLock  {  true  } 
56-         XCTAssertTrue ( value) 
59+         #expect ( value) 
5760    } 
5861
59- 
60-     func  testLock_Blocks ( )  async  { 
62+      @ Test 
63+     func  lock_Blocks ( )  async  { 
6164        let  lock  =  AllocatedLock ( ) 
6265        await  MainActor . run  { 
6366            lock. unsafeLock ( ) 
@@ -82,99 +85,95 @@ final class AllocatedLockTests: XCTestCase {
8285            let  second  =  await  group. next ( ) !
8386            return  [ first,  second] 
8487        } 
85-         XCTAssertEqual ( results,  [ true ,  false ] ) 
88+         #expect ( results  ==  [ true ,  false ] ) 
8689    } 
8790
88-     func  testTryLock( )  { 
91+     @Test  
92+     func  tryLock( )  { 
8993        let  lock  =  AllocatedLock ( ) 
9094        let  value  =  lock. withLock  {  true  } 
91-         XCTAssertTrue ( value) 
95+         #expect ( value) 
9296    } 
9397
94-     func  testIfAvailable( )  { 
98+     @Test  
99+     func  ifAvailable( )  { 
95100        let  lock  =  AllocatedLock ( uncheckedState:  5 ) 
96-         XCTAssertEqual ( 
97-             lock. withLock  {  _ in  " fish "  } , 
98-             " fish " 
101+         #expect( 
102+             lock. withLock  {  _ in  " fish "  }  ==  " fish " 
99103        ) 
100104
101105        lock. unsafeLock ( ) 
102-         XCTAssertEqual ( 
103-             lock. withLockIfAvailable  {  _ in  " fish "  } , 
104-             String ? . none
106+         #expect( 
107+             lock. withLockIfAvailable  {  _ in  " fish "  }  ==  nil 
105108        ) 
106109
107110        lock. unsafeUnlock ( ) 
108-         XCTAssertEqual ( 
109-             lock. withLockIfAvailable  {  _ in  " fish "  } , 
110-             " fish " 
111+         #expect( 
112+             lock. withLockIfAvailable  {  _ in  " fish "  }  ==  " fish " 
111113        ) 
112114    } 
113115
114-     func  testIfAvailableUnchecked( )  { 
116+     @Test  
117+     func  ifAvailableUnchecked( )  { 
115118        let  lock  =  AllocatedLock ( uncheckedState:  NonSendable ( " fish " ) ) 
116-         XCTAssertEqual ( 
117-             lock. withLockUnchecked  {  $0 } . name, 
118-             " fish " 
119+         #expect( 
120+             lock. withLockUnchecked  {  $0 } . name ==  " fish " 
119121        ) 
120122
121123        lock. unsafeLock ( ) 
122-         XCTAssertNil ( 
123-             lock. withLockIfAvailableUnchecked  {  $0 } ? . name
124+         #expect ( 
125+             lock. withLockIfAvailableUnchecked  {  $0 } ? . name  ==   nil 
124126        ) 
125127
126128        lock. unsafeUnlock ( ) 
127-         XCTAssertEqual ( 
128-             lock. withLockIfAvailableUnchecked  {  $0 } ? . name, 
129-             " fish " 
129+         #expect( 
130+             lock. withLockIfAvailableUnchecked  {  $0 } ? . name ==  " fish " 
130131        ) 
131132    } 
132133
133-     func  testVoidIfAvailable( )  { 
134+     @Test  
135+     func  voidIfAvailable( )  { 
134136        let  lock  =  AllocatedLock ( ) 
135-         XCTAssertEqual ( 
136-             lock. withLock  {  " fish "  } , 
137-             " fish " 
137+         #expect( 
138+             lock. withLock  {  " fish "  }  ==  " fish " 
138139        ) 
139140
140141        lock. unsafeLock ( ) 
141-         XCTAssertEqual ( 
142-             lock. withLockIfAvailable  {  " fish "  } , 
143-             String ? . none
142+         #expect( 
143+             lock. withLockIfAvailable  {  " fish "  }  ==  nil 
144144        ) 
145145
146146        lock. unsafeUnlock ( ) 
147-         XCTAssertEqual ( 
148-             lock. withLockIfAvailable  {  " fish "  } , 
149-             " fish " 
147+         #expect( 
148+             lock. withLockIfAvailable  {  " fish "  }  ==  " fish " 
150149        ) 
151150    } 
152151
153-     func  testVoidIfAvailableUnchecked( )  { 
152+     @Test  
153+     func  voidIfAvailableUnchecked( )  { 
154154        let  lock  =  AllocatedLock ( ) 
155-         XCTAssertEqual ( 
156-             lock. withLockUnchecked  {  NonSendable ( " fish " )  } . name, 
157-             " fish " 
155+         #expect( 
156+             lock. withLockUnchecked  {  NonSendable ( " fish " )  } . name ==  " fish " 
158157        ) 
159158
160159        lock. lock ( ) 
161-         XCTAssertNil ( 
162-             lock. withLockIfAvailableUnchecked  {  NonSendable ( " fish " )  } 
160+         #expect ( 
161+             lock. withLockIfAvailableUnchecked  {  NonSendable ( " fish " )  }   ==   nil 
163162        ) 
164163
165164        lock. unlock ( ) 
166-         XCTAssertEqual ( 
167-             lock. withLockIfAvailableUnchecked  {  NonSendable ( " chips " )  } ? . name, 
168-             " chips " 
165+         #expect( 
166+             lock. withLockIfAvailableUnchecked  {  NonSendable ( " chips " )  } ? . name ==  " chips " 
169167        ) 
170168    } 
171169
172-     func  testVoidLock( )  { 
170+     @Test  
171+     func  voidLock( )  { 
173172        let  lock  =  AllocatedLock ( ) 
174173        lock. lock ( ) 
175-         XCTAssertFalse ( lock. lockIfAvailable ( ) ) 
174+         #expect ( lock. lockIfAvailable ( )   ==   false ) 
176175        lock. unlock ( ) 
177-         XCTAssertTrue ( lock. lockIfAvailable ( ) ) 
176+         #expect ( lock. lockIfAvailable ( ) ) 
178177        lock. unlock ( ) 
179178    } 
180179} 
@@ -187,9 +186,4 @@ public final class NonSendable {
187186        self . name =  name
188187    } 
189188} 
190- 
191- // sidestep warning: unavailable from asynchronous contexts
192- extension  AllocatedLock  { 
193-     func  unsafeLock( )  {  storage. lock ( )  } 
194-     func  unsafeUnlock( )  {  storage. unlock ( )  } 
195- } 
189+ #endif 
0 commit comments