Packages/MoonriseKit/Tests/SkyEngineTests/GeomagneticTests.swift
36 lines · 1408 bytes
1import Testing
2@testable import SkyEngine
3
4@Test func chicagoIsAboutFiftyOneDegreesGeomagnetic() {
5 let m = Geomagnetic.latitude(chicago)
6 #expect(m > 49 && m < 53, "\(m)")
7 #expect(Geomagnetic.band(chicago) == 50)
8}
9
10@Test func southernBandsAreNegative() {
11 // Hobart, Tasmania: the dipole model gives about 49.6° S, so the 45–50° S band.
12 let hobart = Observer(latitude: -42.88, longitude: 147.33)
13 let m = Geomagnetic.latitude(hobart)
14 #expect(m < -45 && m > -55, "\(m)")
15 #expect(Geomagnetic.band(hobart) == -50)
16}
17
18@Test func poleIsNinety() {
19 let pole = Observer(latitude: Geomagnetic.poleLatitude, longitude: Geomagnetic.poleLongitude)
20 #expect(abs(Geomagnetic.latitude(pole) - 90) < 1e-6)
21}
22
23@Test func ovalMatchesServer() {
24 // server/src/aurora.ts: ovalEdge(5) = 56.3, visibleFrom(5) = 50.3.
25 #expect(abs(Geomagnetic.ovalEdge(kp: 5) - 56.3) < 1e-9)
26 #expect(abs(Geomagnetic.visibleFrom(kp: 5) - 50.3) < 1e-9)
27}
28
29@Test func kpNeeded() {
30 let kp = Geomagnetic.kpNeeded(chicago)
31 #expect(kp > 4 && kp < 5.5, "\(kp)")
32 #expect(abs(Geomagnetic.visibleFrom(kp: kp) - Geomagnetic.latitude(chicago)) < 1e-9)
33 #expect(Geomagnetic.kpNeeded(Observer(latitude: -42.88, longitude: 147.33)) < 6)
34 #expect(Geomagnetic.kpNeeded(Observer(latitude: 0, longitude: -80)) > 9)
35 #expect(Geomagnetic.kpNeeded(Observer(latitude: 69.6, longitude: 18.9)) == 0)
36}