krz/moonrise

Night-sky companion for iPhone, Apple Watch and Vision Pro: what's up tonight, the Moon, planets, launches and missions, and a Library of the solar system. SwiftUI app with a Cloudflare Workers backend. astronomy cloudflare-workers ios night-sky space swiftui visionos watchos

Packages/MoonriseKit/Tests/SkyEngineTests/PassActivityTests.swift

b327e0d6e7ab67511c5bade3f3c3a93834f6e9ca
moonrise/Packages/MoonriseKit/Tests/SkyEngineTests/PassActivityTests.swift history · blame · raw

33 lines · 1343 bytes

 1import Foundation
 2import Testing
 3@testable import SkyEngine
 4
 5private let now = Date(timeIntervalSince1970: 1_792_364_400)
 6
 7private func pass(risingIn seconds: TimeInterval) -> SatellitePass {
 8    SatellitePass(name: "ISS (ZARYA)", rise: now.addingTimeInterval(seconds), set: now.addingTimeInterval(seconds + 360), peak: now.addingTimeInterval(seconds + 180),
 9                  maxAltitude: 62, riseAzimuth: 240, setAzimuth: 60, visible: true, featured: true)
10}
11
12@Test func activityStartsTenMinutesBeforeRise() {
13    #expect(pass(risingIn: 3600).activityStart(now: now) == now.addingTimeInterval(3000))
14    #expect(pass(risingIn: 24 * 3600).activityStart(now: now) == now.addingTimeInterval(24 * 3600 - 600))
15}
16
17@Test func activityStartsNowWithinTenMinutesOrDuringThePass() {
18    #expect(pass(risingIn: 300).activityStart(now: now) == now)
19    #expect(pass(risingIn: -120).activityStart(now: now) == now)
20}
21
22@Test func noActivityAfterSetOrBeyondADay() {
23    #expect(pass(risingIn: -360).activityStart(now: now) == nil)
24    #expect(pass(risingIn: 24 * 3600 + 1).activityStart(now: now) == nil)
25}
26
27@Test func compassPoints() {
28    #expect(SkyEngine.compass(0) == "N")
29    #expect(SkyEngine.compass(22.4) == "N")
30    #expect(SkyEngine.compass(22.5) == "NE")
31    #expect(SkyEngine.compass(240) == "SW")
32    #expect(SkyEngine.compass(359) == "N")
33}