initial commit
This commit is contained in:
98
tests/test_channel/test_code.py
Normal file
98
tests/test_channel/test_code.py
Normal file
@@ -0,0 +1,98 @@
|
||||
"""Tests for ISO channel code parsing."""
|
||||
|
||||
import pytest
|
||||
|
||||
from impakt.channel.code import ChannelCode, parse_channel_code
|
||||
|
||||
|
||||
class TestChannelCodeParsing:
|
||||
"""Test the 16-character ISO channel code parser."""
|
||||
|
||||
def test_parse_full_code(self):
|
||||
code = ChannelCode.parse("11HEAD0000ACXA")
|
||||
assert code.is_valid
|
||||
assert code.test_object == "11"
|
||||
assert code.main_location == "HEAD"
|
||||
assert code.fine_location == "0000"
|
||||
assert code.measurement == "AC"
|
||||
assert code.direction == "X"
|
||||
assert code.sense == "A"
|
||||
|
||||
def test_parse_with_filter_class(self):
|
||||
code = ChannelCode.parse("11HEAD0000ACXA60")
|
||||
assert code.is_valid
|
||||
assert code.filter_class == "60"
|
||||
|
||||
def test_parse_neck_channel(self):
|
||||
code = ChannelCode.parse("11NECKUP00FOZA")
|
||||
assert code.test_object == "11"
|
||||
assert code.main_location == "NECK"
|
||||
assert code.fine_location == "UP00"
|
||||
assert code.measurement == "FO"
|
||||
assert code.direction == "Z"
|
||||
|
||||
def test_parse_femur_channel(self):
|
||||
code = ChannelCode.parse("11FEMRLE00FOZA")
|
||||
assert code.main_location == "FEMR"
|
||||
assert code.fine_location == "LE00"
|
||||
assert code.measurement == "FO"
|
||||
|
||||
def test_invalid_short_code(self):
|
||||
code = ChannelCode.parse("SHORT")
|
||||
assert not code.is_valid
|
||||
|
||||
def test_group_key(self):
|
||||
cx = ChannelCode.parse("11HEAD0000ACXA")
|
||||
cy = ChannelCode.parse("11HEAD0000ACYA")
|
||||
cz = ChannelCode.parse("11HEAD0000ACZA")
|
||||
assert cx.group_key() == cy.group_key() == cz.group_key()
|
||||
|
||||
def test_group_key_differs_for_different_locations(self):
|
||||
head = ChannelCode.parse("11HEAD0000ACXA")
|
||||
chest = ChannelCode.parse("11CHST0000ACXA")
|
||||
assert head.group_key() != chest.group_key()
|
||||
|
||||
def test_is_component(self):
|
||||
assert ChannelCode.parse("11HEAD0000ACXA").is_component()
|
||||
assert ChannelCode.parse("11HEAD0000ACYA").is_component()
|
||||
assert ChannelCode.parse("11HEAD0000ACZA").is_component()
|
||||
assert not ChannelCode.parse("11HEAD0000ACRA").is_resultant() is False
|
||||
|
||||
def test_is_resultant(self):
|
||||
assert ChannelCode.parse("11HEAD0000ACRA").is_resultant()
|
||||
|
||||
def test_description(self):
|
||||
code = ChannelCode.parse("11HEAD0000ACXA")
|
||||
desc = code.description
|
||||
assert "Head" in desc
|
||||
assert "Acceleration" in desc
|
||||
assert "X" in desc
|
||||
|
||||
def test_short_label(self):
|
||||
code = ChannelCode.parse("11HEAD0000ACXA")
|
||||
label = code.short_label
|
||||
assert "Head" in label
|
||||
assert "Accel" in label
|
||||
assert "X" in label
|
||||
|
||||
def test_measurement_unit(self):
|
||||
code = ChannelCode.parse("11HEAD0000ACXA")
|
||||
assert code.measurement_unit == "m/s²"
|
||||
|
||||
def test_matches_wildcard(self):
|
||||
code = ChannelCode.parse("11HEAD0000ACXA")
|
||||
assert code.matches("11HEAD0000AC*")
|
||||
assert code.matches("11HEAD*")
|
||||
assert code.matches("*ACXA")
|
||||
assert not code.matches("12HEAD*")
|
||||
|
||||
def test_matches_set_notation(self):
|
||||
code = ChannelCode.parse("11HEAD0000ACXA")
|
||||
assert code.matches("11HEAD0000AC{X,Y,Z}A")
|
||||
code_y = ChannelCode.parse("11HEAD0000ACYA")
|
||||
assert code_y.matches("11HEAD0000AC{X,Y,Z}A")
|
||||
|
||||
def test_convenience_function(self):
|
||||
code = parse_channel_code("11HEAD0000ACXA")
|
||||
assert code.is_valid
|
||||
assert code.test_object == "11"
|
||||
Reference in New Issue
Block a user