30 lines
753 B
Swift
30 lines
753 B
Swift
import Foundation
|
|
import XCTest
|
|
|
|
class DevMenuLooper {
|
|
static func runMainLoop(for sec: Double) {
|
|
RunLoop.main.run(mode: .default, before: Date(timeIntervalSinceNow: sec))
|
|
RunLoop.main.run(mode: .common, before: Date(timeIntervalSinceNow: sec))
|
|
RunLoop.main.run(mode: .tracking, before: Date(timeIntervalSinceNow: sec))
|
|
}
|
|
|
|
static func runMainLoopUntilEmpty() {
|
|
var isEmpty = false
|
|
|
|
DispatchQueue.main.async {
|
|
isEmpty = true
|
|
}
|
|
|
|
let timout = Date(timeIntervalSinceNow: DevMenuTestOptions.defaultTimeout)
|
|
while timout.timeIntervalSinceNow > 0 {
|
|
if isEmpty {
|
|
return
|
|
}
|
|
|
|
DevMenuLooper.runMainLoop(for: DevMenuTestOptions.loopTime)
|
|
}
|
|
|
|
XCTFail("Wait for main thread timeout.")
|
|
}
|
|
}
|