16c62a97d5
- 新增时标、ΔT 模型、质心时间与 UT1 支持 - 改进日月食、月掩、行星事件及路径边界计算 - 完善恒星三维自行与动态距离传播 - 扩展 SVG、GeoJSON、KML 输出与底层距离换算工具 - 整理中英文手册、示例资源及回归测试
41 lines
1.5 KiB
Go
41 lines
1.5 KiB
Go
package basic
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func mercuryTTJDJST(year int, month time.Month, day, hour, minute, second int) float64 {
|
|
loc := time.FixedZone("JST", 9*3600)
|
|
return UTC2TT(Date2JD(time.Date(year, month, day, hour, minute, second, 0, loc).UTC()))
|
|
}
|
|
|
|
func TestMercuryTypedStationRegression1929(t *testing.T) {
|
|
loc := time.FixedZone("JST", 9*3600)
|
|
const tolerance = 30.0 / 86400.0
|
|
|
|
query := mercuryTTJDJST(1929, time.September, 20, 0, 0, 0)
|
|
wantP2R := mercuryTTJDJST(1929, time.September, 26, 1, 58, 0)
|
|
wantR2P := mercuryTTJDJST(1929, time.October, 16, 23, 32, 33)
|
|
|
|
nextP2R := NextMercuryProgradeToRetrograde(query)
|
|
nextR2P := NextMercuryRetrogradeToPrograde(query)
|
|
if math.Abs(nextP2R-wantP2R) > tolerance {
|
|
t.Fatalf("next P2R mismatch: got %s want %s", JD2DateByZone(nextP2R, loc, false), JD2DateByZone(wantP2R, loc, false))
|
|
}
|
|
if math.Abs(nextR2P-wantR2P) > tolerance {
|
|
t.Fatalf("next R2P mismatch: got %s want %s", JD2DateByZone(nextR2P, loc, false), JD2DateByZone(wantR2P, loc, false))
|
|
}
|
|
|
|
query = mercuryTTJDJST(1929, time.October, 20, 0, 0, 0)
|
|
lastP2R := LastMercuryProgradeToRetrograde(query)
|
|
lastR2P := LastMercuryRetrogradeToPrograde(query)
|
|
if math.Abs(lastP2R-wantP2R) > tolerance {
|
|
t.Fatalf("last P2R mismatch: got %s want %s", JD2DateByZone(lastP2R, loc, false), JD2DateByZone(wantP2R, loc, false))
|
|
}
|
|
if math.Abs(lastR2P-wantR2P) > tolerance {
|
|
t.Fatalf("last R2P mismatch: got %s want %s", JD2DateByZone(lastR2P, loc, false), JD2DateByZone(wantR2P, loc, false))
|
|
}
|
|
}
|