in AmazonChimeSDK/AmazonChimeSDKTests/internal/utils/ConcurrentMutableSetTests.swift [50:80]
func testThreadSafety() {
set.add(1)
set.add(10)
var count = 0
var sum = 0
let backgroundThreadEndedExpectation = XCTestExpectation(
description: "The background thread was ended")
let mainThreadEndedExpectation = XCTestExpectation(
description: "The main thread was ended")
DispatchQueue.global(qos: .userInteractive).async {
self.set.forEach { item in
sleep(2)
guard let value = item as? Int, self.set.contains(item) else { return }
count += 1
sum += value
}
backgroundThreadEndedExpectation.fulfill()
}
DispatchQueue.main.async {
sleep(1)
self.set.remove(10)
mainThreadEndedExpectation.fulfill()
}
wait(for: [backgroundThreadEndedExpectation, mainThreadEndedExpectation], timeout: 5)
XCTAssertEqual(count, 2)
XCTAssertEqual(sum, 11)
XCTAssertEqual(set.count, 1)
XCTAssert(set.contains(1))
}