This repository has been archived by the owner. It is now read-only.
Permalink
Cannot retrieve contributors at this time
30 lines (25 sloc)
1021 Bytes
| /* 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) | |
| } | |
| } | |
| } |