"""Testy osi i domów — czysta matematyka (LOG-05, bez efemeryd).""" from app.engine import houses as H # RAMC i ε policzone Skyfieldem dla horoskopu referencyjnego (30.04.1984, Warszawa) RAMC, EPS, LAT = 353.1968, 23.44133, 52.2333 def _near(a, b, tol=0.05): return abs(((a - b + 180) % 360) - 180) < tol def test_asc_mc_match_reference(): asc = H.compute_asc(RAMC, EPS, LAT) mc = H.compute_mc(RAMC, EPS) assert _near(asc, 112.18) # Cancer 22°10' (astro.com) assert _near(mc, 352.59) # Pisces 22°35' def test_whole_sign_starts_on_sign_boundary(): cusps = H.cusps(112.18, 352.59, H.WHOLE_SIGN) assert cusps[0] == 90.0 # dom 1 = 0° Raka assert cusps[1] == 120.0 def test_equal_cusps_are_30_apart_from_asc(): cusps = H.cusps(112.18, 352.59, H.EQUAL) assert abs(cusps[0] - 112.18) < 1e-9 assert abs(cusps[1] - 142.18) < 1e-9 def test_porphyry_angles_on_cusps(): cusps = H.cusps(112.18, 352.59, H.PORPHYRY) assert abs(cusps[0] - 112.18) < 1e-9 # Asc = dom 1 assert abs(cusps[9] - 352.59) < 1e-9 # MC = dom 10 assert abs(cusps[6] - (112.18 + 180) % 360) < 1e-9 # Dsc = dom 7 def test_assign_house_whole_sign(): cusps = H.cusps(112.18, 352.59, H.WHOLE_SIGN) # dom 1 = Rak (90–120°) assert H.assign_house(100.0, cusps) == 1 # w Raku assert H.assign_house(40.0, cusps) == 11 # Byk -> 11. dom