File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -213,4 +213,35 @@ 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+ // Add a task to the group
230+ taskGroup. addTask {
231+ defaults. set ( i, for: . integerKey) // Write a value
232+ if let value = defaults. get ( for: . integerKey) {
233+ Task . detached {
234+ actual += value
235+ }
236+ }
237+ Task . detached {
238+ expected += i
239+ }
240+ }
241+ }
242+ }
243+
244+ // Then
245+ #expect( expected == actual)
246+ }
216247}
You can’t perform that action at this time.
0 commit comments