31 lines
882 B
Python
31 lines
882 B
Python
# tests/test_julian.py
|
|
|
|
from datetime import datetime, timezone, timedelta
|
|
from freezegun import freeze_time
|
|
from tools.julian import julian_date, epoch_days
|
|
|
|
|
|
# Freeze time to exactly Jan 1, 2000, 12:00:00 UTC (The J2000 epoch)
|
|
@freeze_time("2000-01-01 12:00:00", tz_offset=0)
|
|
def test_julian_date_j2000():
|
|
# J2000 should be exactly Julian Date 2451545.0
|
|
jd = julian_date()
|
|
assert jd == 2451545.0
|
|
|
|
|
|
@freeze_time("2000-01-01 12:00:00", tz_offset=0)
|
|
def test_epoch_days():
|
|
# Since we are exactly on the epoch, days should be 0
|
|
days = epoch_days()
|
|
assert days == 0.0
|
|
|
|
|
|
def test_julian_date_with_timezone():
|
|
# Create a timezone-aware datetime
|
|
tz = timezone(timedelta(hours=2))
|
|
dt = datetime(2023, 10, 15, 12, 0, 0, tzinfo=tz)
|
|
|
|
jd = julian_date(dt)
|
|
# 2023-10-15 12:00 GMT+2 is exactly 2460232.91666...
|
|
assert round(jd, 4) == 2460232.9167
|