"""Source-bounded regression tests for Tribhagi Dasha.""" from __future__ import annotations import json from datetime import datetime from pathlib import Path from scripts.tribhagi_dasha import calculate_tribhagi_dasha ROOT = Path(__file__).resolve().parents[1] def test_tribhagi_full_cycle_divides_vimshottari_lord_years_across_nakshatras() -> None: result = calculate_tribhagi_dasha({ "birth_datetime": datetime(2000, 1, 1, 12, 0), "moon_longitude": 1.0, }) assert result["execution_status"] == "executed" assert result["mode"] == "full_120" assert result["total_cycle"] == 120 assert len(result["major"]) == 27 assert result["major"][0]["lord"] == "Ketu" assert result["major"][0]["full_years"] == 7 / 3 assert result["major"][1]["lord"] == "Venus" assert result["period_depth_status"] == "mahadasha_executed_ad_pd_blocked_pending_row_level_replay" assert "antardasha" not in result["major"][0] def test_tribhagi_40_mode_returns_one_bhaga_without_promoting_pl9_semantics() -> None: result = calculate_tribhagi_dasha({ "birth_datetime": "2000-01-01T12:00:00", "moon_longitude": 1.0, "mode": "single_bhaga_40", }) assert result["execution_status"] == "executed" assert result["mode"] == "single_bhaga_40" assert result["total_cycle"] == 40 assert len(result["major"]) == 9 def test_tribhagi_rejects_unknown_mode() -> None: result = calculate_tribhagi_dasha({ "birth_datetime": "2000-01-01T12:00:00", "moon_longitude": 1.0, "mode": "pl9_unknown", }) assert result["execution_status"] == "blocked" assert "mode must be" in result["reason"]