95 lines
2.9 KiB
Python
Executable File
95 lines
2.9 KiB
Python
Executable File
"""
|
|
EditingMode 剪辑模式枚举单元测试
|
|
"""
|
|
|
|
from packages.domain.editing_mode import EditingMode
|
|
|
|
|
|
class TestEditingMode:
|
|
"""EditingMode 枚举测试"""
|
|
|
|
def test_all_modes_exist(self):
|
|
assert EditingMode.ONE_TAKE == "one_take"
|
|
assert EditingMode.PIP == "pip"
|
|
assert EditingMode.VOICE_OVER == "voice_over"
|
|
assert EditingMode.VOICE_PIP == "voice_pip"
|
|
|
|
def test_total_count(self):
|
|
assert len(EditingMode) == 4
|
|
|
|
def test_is_string_type(self):
|
|
for mode in EditingMode:
|
|
assert isinstance(mode.value, str)
|
|
assert isinstance(mode, str)
|
|
|
|
def test_mode_descriptions(self):
|
|
"""验证模式值有意义"""
|
|
assert "one" in EditingMode.ONE_TAKE
|
|
assert "pip" in EditingMode.PIP
|
|
assert "voice" in EditingMode.VOICE_OVER
|
|
assert "voice" in EditingMode.VOICE_PIP
|
|
|
|
def test_usage_in_comparison(self):
|
|
mode = EditingMode.ONE_TAKE
|
|
assert mode == "one_take"
|
|
assert mode != "pip"
|
|
|
|
def test_iterable(self):
|
|
modes = list(EditingMode)
|
|
assert len(modes) == 4
|
|
assert EditingMode.ONE_TAKE in modes
|
|
|
|
|
|
class TestEditingModeExtended:
|
|
"""EditingMode 深度补充测试"""
|
|
|
|
def test_from_string_value(self):
|
|
"""可以从字符串值构造枚举"""
|
|
assert EditingMode("one_take") == EditingMode.ONE_TAKE
|
|
assert EditingMode("pip") == EditingMode.PIP
|
|
assert EditingMode("voice_over") == EditingMode.VOICE_OVER
|
|
assert EditingMode("voice_pip") == EditingMode.VOICE_PIP
|
|
|
|
def test_invalid_string_raises(self):
|
|
import pytest
|
|
|
|
with pytest.raises(ValueError):
|
|
EditingMode("invalid_mode")
|
|
|
|
def test_string_concatenation(self):
|
|
"""StrEnum 支持字符串拼接"""
|
|
result = "mode_" + EditingMode.ONE_TAKE
|
|
assert result == "mode_one_take"
|
|
|
|
def test_dict_key_usage(self):
|
|
"""可以作为字典 key 使用"""
|
|
mapping = {
|
|
EditingMode.ONE_TAKE: "顺序拼接",
|
|
EditingMode.PIP: "画中画",
|
|
}
|
|
assert mapping[EditingMode.ONE_TAKE] == "顺序拼接"
|
|
assert mapping[EditingMode.PIP] == "画中画"
|
|
assert len(mapping) == 2
|
|
|
|
def test_value_lowercase(self):
|
|
"""所有枚举值都是小写字母+下划线"""
|
|
for mode in EditingMode:
|
|
assert mode.value == mode.value.lower()
|
|
assert " " not in mode.value
|
|
|
|
def test_unique_values(self):
|
|
"""所有枚举值唯一"""
|
|
values = [m.value for m in EditingMode]
|
|
assert len(values) == len(set(values))
|
|
|
|
def test_membership_test(self):
|
|
assert EditingMode.ONE_TAKE in EditingMode
|
|
assert "one_take" in [m.value for m in EditingMode]
|
|
|
|
def test_comparison_with_string(self):
|
|
"""和字符串直接比较"""
|
|
mode = EditingMode.VOICE_OVER
|
|
assert mode == "voice_over"
|
|
assert mode != "pip"
|
|
assert "voice_over" == mode
|