Files
Jyotisha/tests/test_gulika_ayanamsa_mode.py
T
Jesse_Chen c1e3f32a0f
Independent Staging Quality Gate / validate (push) Successful in 21m34s
Independent Staging Quality Gate / publish (push) Successful in 2m1s
fix: restore ayanamsa state and keep tests hermetic
2026-09-03 23:22:50 +08:00

33 lines
973 B
Python

from datetime import datetime
import pytest
import swisseph as swe
from scripts.gulika import calculate_gulika
from ayanamsa_utils import DEFAULT_AYANAMSA_NAME, apply_ayanamsa
def _moon_longitude() -> float:
jd = swe.julday(2000, 1, 1, 12.0)
return float(swe.calc_ut(jd, swe.MOON, swe.FLG_SWIEPH | swe.FLG_SIDEREAL)[0][0])
@pytest.mark.parametrize(("previous", "requested"), [("lahiri", "raman"), ("raman", "lahiri")])
def test_gulika_restores_process_ayanamsa(previous: str, requested: str) -> None:
try:
assert apply_ayanamsa(previous, swe)
before = _moon_longitude()
result = calculate_gulika(
datetime(1990, 1, 1, 12, 0),
lat=39.9042,
lon=116.4074,
tz=8,
ayanamsa=requested,
)
assert result["ayanamsa"] == requested
assert _moon_longitude() == pytest.approx(before, abs=1e-10)
finally:
apply_ayanamsa(DEFAULT_AYANAMSA_NAME, swe)