# tests/test_utils.py """Tests for core/utils.py utilities.""" from core.utils import derive_part_name class TestDerivePartName: def test_basic_text(self): assert derive_part_name("servo bracket") == "servo_bracket" def test_strips_special_chars(self): assert derive_part_name("my part! @#$%") == "my_part_" def test_truncates_to_max_chars(self): result = derive_part_name("a" * 100, max_chars=10) assert len(result) <= 10 def test_empty_string_returns_part(self): assert derive_part_name("") == "part" def test_special_chars_only_returns_part(self): assert derive_part_name("@#$%^&*") == "part" def test_lowercases(self): assert derive_part_name("My Bracket") == "my_bracket" def test_preserves_underscores(self): assert derive_part_name("servo_bracket_v2") == "servo_bracket_v2"