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)