from scripts.argala import calc_argala_for_reference def test_pvr_ketu_virgo_example_reverses_with_nodes_excluded(): # PVR source p118: Virgo containing Ketu gets 2/4/11/5 from # Leo/Gemini/Scorpio/Taurus, even if nodes are omitted as occupants. result = calc_argala_for_reference(5, { 'Ketu': 5, 'Sun': 4, 'Moon': 2, 'Mars': 7, 'Venus': 1, }) assert [result['primary'][h]['sign'] for h in ('H2', 'H4', 'H11')] == ['Leo', 'Gemini', 'Scorpio'] assert result['secondary']['H5']['sign'] == 'Taurus' assert result['counting_direction'] == 'antizodiacal' def test_ninth_obstructs_fifth_not_another_secondary_argala(): result = calc_argala_for_reference(0, {'Jupiter': 4, 'Saturn': 8, 'Mars': 8}) assert result['secondary']['H9']['role'] == 'virodhargala' assert result['secondary']['H5']['blockers'] == ['Saturn', 'Mars'] assert result['secondary']['H5']['effective'] is False def test_equal_numbers_need_strength_not_automatic_obstruction(): result = calc_argala_for_reference(0, {'Moon': 1, 'Mars': 11}) assert result['primary']['H2']['effective'] is None assert result['net_result'] == 'strength_comparison_required' assert result['verdict_label'] == '待定' def test_occupied_house_totals_cannot_override_actual_pair(): result = calc_argala_for_reference(0, {'Moon': 1, 'Venus': 1, 'Mars': 11}) assert result['argala_count'] == result['virodhargala_count'] == 1 assert result['net_result'] == 'supported'