33 lines
973 B
Python
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)
|