"""Tests for Nij calculation.""" import pytest from impakt.channel.model import DummyInfo from impakt.criteria.nij import NIJ_INTERCEPTS, nij class TestNij: def test_nij_computation(self, neck_fz_channel, neck_my_channel): result = nij(fz_channel=neck_fz_channel, my_channel=neck_my_channel) assert result.criterion == "Nij" assert result.value > 0 assert result.body_region == "Neck" def test_nij_with_channels_dict(self, neck_fz_channel, neck_my_channel): result = nij(channels={"fz": neck_fz_channel, "my": neck_my_channel}) assert result.value > 0 def test_nij_mode_detail(self, neck_fz_channel, neck_my_channel): result = nij(fz_channel=neck_fz_channel, my_channel=neck_my_channel) assert "mode" in result.details assert result.details["mode"] in ("NTE", "NTF", "NCE", "NCF") def test_nij_with_dummy_info(self, neck_fz_channel, neck_my_channel): dummy = DummyInfo(dummy_type="H3-50M") result = nij( fz_channel=neck_fz_channel, my_channel=neck_my_channel, dummy=dummy, ) assert result.value > 0 def test_nij_different_dummies_give_different_results(self, neck_fz_channel, neck_my_channel): result_50m = nij( fz_channel=neck_fz_channel, my_channel=neck_my_channel, dummy=DummyInfo(dummy_type="H3-50M"), ) result_5f = nij( fz_channel=neck_fz_channel, my_channel=neck_my_channel, dummy=DummyInfo(dummy_type="H3-05F"), ) # 5th female has lower intercepts, so Nij should be higher assert result_5f.value > result_50m.value def test_nij_requires_both_channels(self): with pytest.raises(ValueError, match="required"): nij(fz_channel=None, my_channel=None)