Files
iOS/Tests/Shared/WatchBackgroundRefreshScheduler.test.swift
Zac West 640cca884b Add SwiftFormat to project (#1463)
Adds new fastlane lanes:
- `fastlane lint` which checks the linters
- `fastlane autocorrect` which applies the linters which can autocorrect (Rubocop, SwiftFormat)

Adds a build step to the Codegen abstract target which runs SwiftFormat in lint mode, pointing out what it's going to change when run.

Applies SwiftFormat to nearly all code -- exempts a few externally-sourced files and generated code.
2021-02-05 22:06:25 -08:00

64 lines
1.7 KiB
Swift

import Foundation
@testable import Shared
import XCTest
class WatchBackgroundRefreshSchedulerTests: XCTestCase {
private var scheduler: WatchBackgroundRefreshScheduler!
override func setUp() {
super.setUp()
scheduler = WatchBackgroundRefreshScheduler()
}
private struct TestCase {
let currentMinute: Int
let expectedMinute: Int
}
private var testCases: [TestCase] {
var testCases = [TestCase]()
for minute in 0 ..< 15 {
testCases.append(.init(currentMinute: minute, expectedMinute: 15))
}
for minute in 15 ..< 30 {
testCases.append(.init(currentMinute: minute, expectedMinute: 30))
}
for minute in 30 ..< 45 {
testCases.append(.init(currentMinute: minute, expectedMinute: 45))
}
for minute in 45 ..< 60 {
testCases.append(.init(currentMinute: minute, expectedMinute: 60))
}
return testCases
}
func testTestCases() {
// 2020-10-10 @ 10:00:00 UTC
let baseDate = Date(timeIntervalSince1970: 1_602_324_000)
let calendar = Calendar.current
let baseComponents = calendar.dateComponents(
[.year, .month, .day, .hour, .minute, .second],
from: baseDate
)
func with(minute: Int) -> Date {
var components = baseComponents
components.minute = minute
return calendar.date(from: components)!
}
for testCase in testCases {
Current.date = { with(minute: testCase.currentMinute) }
let date = scheduler.nextFireDate()
XCTAssertEqual(date, with(minute: testCase.expectedMinute))
}
}
}