"""Tests for IIHS and US NCAP scoring.""" import pytest from impakt.criteria.base import CriterionResult from impakt.protocol.iihs import IIHS, evaluate as iihs_evaluate from impakt.protocol.us_ncap import USNCAP, evaluate as us_evaluate @pytest.fixture def sample_criteria(): return { "HIC15": CriterionResult(criterion="HIC15", value=400, body_region="Head"), "Nij": CriterionResult(criterion="Nij", value=0.4, body_region="Neck"), "Chest Deflection": CriterionResult( criterion="Chest Deflection", value=35, unit="mm", body_region="Chest" ), "Femur Load Left": CriterionResult( criterion="Femur Load Left", value=4.0, unit="kN", body_region="Femur Left" ), "Femur Load Right": CriterionResult( criterion="Femur Load Right", value=4.5, unit="kN", body_region="Femur Right" ), } class TestIIHS: def test_good_results(self, sample_criteria): result = iihs_evaluate(sample_criteria) assert result.protocol == "IIHS" assert result.overall_rating in ("GOOD", "ACCEPTABLE", "MARGINAL", "POOR") def test_region_scores(self, sample_criteria): result = iihs_evaluate(sample_criteria) assert len(result.region_scores) > 0 for rs in result.region_scores: assert rs.rating is not None def test_poor_hic(self): result = iihs_evaluate( { "HIC15": CriterionResult(criterion="HIC15", value=1500, body_region="Head"), } ) assert result.overall_rating == "POOR" def test_summary(self, sample_criteria): result = iihs_evaluate(sample_criteria) summary = result.summary() assert "IIHS" in summary class TestUSNCAP: def test_basic(self, sample_criteria): result = us_evaluate(sample_criteria) assert result.protocol == "US NCAP" assert result.stars is not None assert 1 <= result.stars <= 5 def test_injury_probabilities(self, sample_criteria): result = us_evaluate(sample_criteria) assert "combined_injury_probability" in result.details p = result.details["combined_injury_probability"] assert 0.0 <= p <= 1.0 def test_region_scores(self, sample_criteria): result = us_evaluate(sample_criteria) assert len(result.region_scores) > 0