File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -213,4 +213,34 @@ struct DefaultsKitTests {
213213 let actual = defaults. get ( for: . personMockKey)
214214 #expect( expected == actual)
215215 }
216+
217+ @Test
218+ func testThreadSafe( ) async throws {
219+ // Given
220+ let defaults = Defaults . shared
221+ let iterations = 10000
222+
223+ // When
224+ var expected = 0
225+ var actual = 0
226+
227+ await withTaskGroup ( of: Void . self) { taskGroup in
228+ for i in 1 ... iterations {
229+ taskGroup. addTask {
230+ defaults. set ( i, for: . integerKey) // Write a value
231+ if let value = defaults. get ( for: . integerKey) {
232+ Task . detached {
233+ actual += value
234+ }
235+ }
236+ Task . detached {
237+ expected += i
238+ }
239+ }
240+ }
241+ }
242+
243+ // Then
244+ #expect( expected == actual)
245+ }
216246}
You can’t perform that action at this time.
0 commit comments