From 5a6d9a4e5d0d8a0fb6441bf1cb1736cfe2567294 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 19 Jun 2026 13:38:07 +0000 Subject: [PATCH] =?UTF-8?q?Guarantee=20every=20classifier=20glazing=20valu?= =?UTF-8?q?e=20maps=20to=20an=20overlay=20code=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- tests/domain/epc/test_glazing_overlay.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/domain/epc/test_glazing_overlay.py b/tests/domain/epc/test_glazing_overlay.py index d65220e7..c7ba72a8 100644 --- a/tests/domain/epc/test_glazing_overlay.py +++ b/tests/domain/epc/test_glazing_overlay.py @@ -9,6 +9,7 @@ from __future__ import annotations import pytest +from domain.epc.glazing_type import GlazingType from domain.epc.property_overlays.glazing_overlay import glazing_overlay_for from domain.modelling.scoring.overlay_applicator import apply_simulations from tests.domain.sap10_calculator.worksheet._elmhurst_worksheet_000490 import ( @@ -71,3 +72,19 @@ def test_glazing_override_remaps_every_window_and_clears_lodged_u() -> None: # U is cleared so the Table-24 cascade re-derives U from the new type. assert all(w.glazing_type == 1 for w in result.sap_windows) assert all(w.window_transmission_details is None for w in result.sap_windows) + + +@pytest.mark.parametrize( + "member", [m for m in GlazingType if m is not GlazingType.UNKNOWN] +) +def test_every_resolvable_glazing_value_decodes_to_a_code( + member: GlazingType, +) -> None: + # A classifier emits a GlazingType value; if the overlay can't decode it the + # override silently no-ops. Every non-UNKNOWN member must resolve. + + # Act + simulation = glazing_overlay_for(member.value, 0) + + # Assert + assert simulation is not None