initial commit
This commit is contained in:
55
tests/test_criteria/test_hic.py
Normal file
55
tests/test_criteria/test_hic.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""Tests for HIC calculation."""
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from impakt.criteria.hic import hic, hic15, hic36
|
||||
|
||||
|
||||
class TestHIC:
|
||||
def test_hic15_computation(self, head_group):
|
||||
result = hic(head_group, window_ms=15)
|
||||
assert result.criterion == "HIC15"
|
||||
assert result.value > 0
|
||||
assert result.window is not None
|
||||
t1, t2 = result.window
|
||||
assert 0 <= (t2 - t1) <= 0.015 + 1e-6 # Window <= 15ms
|
||||
|
||||
def test_hic36_computation(self, head_group):
|
||||
result = hic(head_group, window_ms=36)
|
||||
assert result.criterion == "HIC36"
|
||||
assert result.value > 0
|
||||
|
||||
def test_hic36_gte_hic15(self, head_group):
|
||||
"""HIC36 should always be >= HIC15 (larger search window)."""
|
||||
h15 = hic(head_group, window_ms=15)
|
||||
h36 = hic(head_group, window_ms=36)
|
||||
assert h36.value >= h15.value - 1e-6 # Small tolerance for numerical issues
|
||||
|
||||
def test_hic_from_single_channel(self, head_accel_x):
|
||||
# Just X component as a simple test
|
||||
result = hic(head_accel_x, window_ms=15)
|
||||
assert result.value > 0
|
||||
|
||||
def test_hic_body_region(self, head_group):
|
||||
result = hic(head_group, window_ms=15)
|
||||
assert result.body_region == "Head"
|
||||
|
||||
def test_hic_details(self, head_group):
|
||||
result = hic(head_group, window_ms=15)
|
||||
assert "t1" in result.details
|
||||
assert "t2" in result.details
|
||||
assert "window_ms" in result.details
|
||||
assert result.details["window_ms"] == 15
|
||||
|
||||
def test_hic15_convenience(self, head_group):
|
||||
result = hic15(head_group)
|
||||
assert result.criterion == "HIC15"
|
||||
|
||||
def test_hic36_convenience(self, head_group):
|
||||
result = hic36(head_group)
|
||||
assert result.criterion == "HIC36"
|
||||
|
||||
def test_invalid_window(self, head_group):
|
||||
with pytest.raises(ValueError, match="15 or 36"):
|
||||
hic(head_group, window_ms=20)
|
||||
Reference in New Issue
Block a user