Revision control

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import Foundation
import XCTest
extension XCTestCase {
func wait(_ time: TimeInterval) {
let expectation = self.expectation(description: "Wait")
let delayTime = DispatchTime.now() + Double(Int64(time * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: delayTime) {
expectation.fulfill()
}
waitForExpectations(timeout: time + 1, handler: nil)
}
func waitForCondition(timeout: TimeInterval = 10, condition: () -> Bool) {
let timeoutTime = Date.timeIntervalSinceReferenceDate + timeout
while !condition() {
if Date.timeIntervalSinceReferenceDate > timeoutTime {
XCTFail("Condition timed out")
return
}
wait(0.1)
}
}
}