Repair divisional dignity context handling
This commit is contained in:
+46
-2
@@ -126,7 +126,7 @@ def test_chart_accepts_second_and_preserves_birth_time_precision() -> None:
|
||||
assert with_seconds["birth_info"]["julian_day"] > without_seconds["birth_info"]["julian_day"]
|
||||
|
||||
|
||||
def test_chart_reports_friend_and_enemy_sign_dignity_for_user_case() -> None:
|
||||
def test_chart_reports_richer_d1_dignity_labels_for_user_case() -> None:
|
||||
result = run_engine(
|
||||
"chart",
|
||||
"--year", "REDACTED_YEAR",
|
||||
@@ -141,7 +141,7 @@ def test_chart_reports_friend_and_enemy_sign_dignity_for_user_case() -> None:
|
||||
)
|
||||
|
||||
assert result["planets"]["Jupiter"]["sign"] == "Virgo"
|
||||
assert result["planets"]["Jupiter"]["status"] == "入敌(Enemy Sign)"
|
||||
assert result["planets"]["Jupiter"]["status"] == "极敌(Great Enemy)"
|
||||
|
||||
|
||||
def test_chart_table_mode_prints_readable_ascii_table() -> None:
|
||||
@@ -330,6 +330,50 @@ def test_full_reading_exposes_sensitive_point_modules() -> None:
|
||||
assert payload["is_sarpa_drekkana"] is True
|
||||
|
||||
|
||||
def test_full_reading_uses_d9_context_for_navamsa_dignity() -> None:
|
||||
result = run_engine("full-reading", *BASE_BIRTH_ARGS)
|
||||
|
||||
d9_jupiter = result["modules"]["d9_navamsa_expanded"]["Jupiter"]
|
||||
assert d9_jupiter["sign"] == "Capricorn"
|
||||
assert d9_jupiter["dignity"] == "NEECHA_BHANGA"
|
||||
|
||||
|
||||
def test_full_reading_uses_d9_context_for_darakaraka_dignity() -> None:
|
||||
result = run_engine(
|
||||
"full-reading",
|
||||
"--year", "1992",
|
||||
"--month", "8",
|
||||
"--day", "25",
|
||||
"--hour", "23",
|
||||
"--minute", "10",
|
||||
"--lat", "35.6895",
|
||||
"--lon", "139.6917",
|
||||
"--tz", "9",
|
||||
)
|
||||
|
||||
darakaraka = result["modules"]["jaimini"]["darakaraka"]
|
||||
assert darakaraka["dk_planet"] == "Sun"
|
||||
assert darakaraka["d9_sign"] == "Gemini"
|
||||
assert darakaraka["d9_dignity"] == "ENEMY"
|
||||
|
||||
|
||||
def test_full_reading_uses_d9_context_for_vimsopaka_navamsa_dignity() -> None:
|
||||
result = run_engine(
|
||||
"full-reading",
|
||||
"--year", "1992",
|
||||
"--month", "8",
|
||||
"--day", "25",
|
||||
"--hour", "23",
|
||||
"--minute", "10",
|
||||
"--lat", "35.6895",
|
||||
"--lon", "139.6917",
|
||||
"--tz", "9",
|
||||
)
|
||||
|
||||
navamsa = result["modules"]["vimsopaka"]["Sun"]["varga_scores"]["Navamsa"]
|
||||
assert navamsa["dignity"] == "Enemy"
|
||||
|
||||
|
||||
def test_varga_cli_outputs_d9_and_d10() -> None:
|
||||
result = run_engine("varga", *BASE_BIRTH_ARGS, "--d9", "--d10")
|
||||
charts = result.get("divisional_charts", {})
|
||||
|
||||
@@ -91,6 +91,43 @@ class TestDignityLevel(unittest.TestCase):
|
||||
result = _get_dignity_level(planet, sign)
|
||||
self.assertEqual(result, 'DEBILITATED', f"{planet} in {sign} should be DEBILITATED, got {result}")
|
||||
|
||||
def test_temporary_relationship_depends_on_passed_chart_context(self):
|
||||
"""同一落位若误用 D1 planets_data,会改变分盘 dignity 结果。"""
|
||||
d1_like_context = {
|
||||
'Jupiter': {'sign': 'Virgo'},
|
||||
'Mercury': {'sign': 'Libra'},
|
||||
}
|
||||
d9_like_context = {
|
||||
'Jupiter': {'sign': 'Virgo'},
|
||||
'Mercury': {'sign': 'Capricorn'},
|
||||
}
|
||||
d1_result = _get_dignity_level('Jupiter', 'Virgo', 10.0, d1_like_context)
|
||||
d9_result = _get_dignity_level('Jupiter', 'Virgo', 10.0, d9_like_context)
|
||||
|
||||
self.assertEqual(d1_result, 'NEUTRAL')
|
||||
self.assertEqual(d9_result, 'GREAT_ENEMY')
|
||||
|
||||
def test_neecha_bhanga_depends_on_passed_chart_context(self):
|
||||
"""落陷取消必须依赖当前分盘上下文,而不是借用 D1 planets_data。"""
|
||||
with_cancelling_dispositor = {
|
||||
'Mercury': {'sign': 'Pisces'},
|
||||
'Jupiter': {'sign': 'Cancer'},
|
||||
'Venus': {'sign': 'Aries'},
|
||||
}
|
||||
without_cancelling_dispositor = {
|
||||
'Mercury': {'sign': 'Pisces'},
|
||||
'Jupiter': {'sign': 'Capricorn'},
|
||||
'Venus': {'sign': 'Aries'},
|
||||
}
|
||||
self.assertEqual(
|
||||
_get_dignity_level('Mercury', 'Pisces', 12.0, with_cancelling_dispositor),
|
||||
'NEECHA_BHANGA',
|
||||
)
|
||||
self.assertEqual(
|
||||
_get_dignity_level('Mercury', 'Pisces', 12.0, without_cancelling_dispositor),
|
||||
'DEBILITATED',
|
||||
)
|
||||
|
||||
|
||||
class TestDashaCalculation(unittest.TestCase):
|
||||
"""测试 Dasha 时间线计算"""
|
||||
|
||||
Reference in New Issue
Block a user