in AmazonChimeSDK/AmazonChimeSDKTests/internal/utils/ConcurrentMutableSetTests.swift [82:113]
func testThreadSafetyShouldFailForNormalSet() {
let normalSet = NSMutableSet()
normalSet.add(1)
normalSet.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: .background).async {
normalSet.forEach { item in
sleep(2)
guard let value = item as? Int, normalSet.contains(item) else { return }
count += 1
sum += value
}
backgroundThreadEndedExpectation.fulfill()
}
DispatchQueue.main.async {
sleep(1)
normalSet.remove(10)
mainThreadEndedExpectation.fulfill()
}
wait(for: [backgroundThreadEndedExpectation, mainThreadEndedExpectation], timeout: 7)
XCTAssertEqual(count, 1)
XCTAssertEqual(sum, 1)
XCTAssertEqual(normalSet.count, 1)
XCTAssert(normalSet.contains(1))
}