"""HARD LIMIT exportu (CLAUDE.md §4.19): reg 143 nikdy nad limit ulice.

Pokuta v řádu desítek tisíc Kč za každou kW překročení rezervovaného
exportního výkonu na fakturačním elektroměru. Terminálový limit (reg 143)
nesmí přesáhnout max_export_power_w za žádných okolností — žádný
feed-forward o měřenou spotřebu mezi střídačem a CT.
"""

from __future__ import annotations

import unittest

from services.control.setpoints import _deye_reg143_export_w


class ExportHardLimitTests(unittest.TestCase):
    def test_reg143_never_exceeds_street_limit(self) -> None:
        street_limit = 13_500
        self.assertLessEqual(
            _deye_reg143_export_w(False, street_limit), street_limit
        )

    def test_no_export_is_zero(self) -> None:
        self.assertEqual(_deye_reg143_export_w(True, 13_500), 0)

    def test_plan_export_limit_caps_not_raises(self) -> None:
        # vzor z write_inverter_setpoints: export_lim = min(hw, plan) — plán
        # smí limit jen SNÍŽIT, nikdy zvýšit
        hw = _deye_reg143_export_w(False, 13_500)
        plan_limit = 20_000
        self.assertLessEqual(min(hw, plan_limit), 13_500)


if __name__ == "__main__":
    unittest.main()
