tests.core.test_constants 源代码

"""
测试 constants 模块
"""
import pytest
from core.constants import (
    WindowMode,
    SpecialSpeaker,
    FileType,
    SheetName,
    ColumnName,
    Marker,
    DEFAULT_INDENT_SIZE,
    DEFAULT_BATCH_SIZE,
    DEFAULT_TRANSITION,
    EXCEL_EXTENSIONS,
    RENPY_EXTENSION,
    NANINOVEL_EXTENSION,
    TEMP_FILE_PREFIX
)


[文档] class TestEnumValues: """测试所有枚举的值和类型"""
[文档] @pytest.mark.parametrize("enum_member,expected_value", [ # WindowMode (WindowMode.SHOW, "显示"), (WindowMode.HIDE, "隐藏"), (WindowMode.SHOW_AND_HIDE, "显示和隐藏"), # SpecialSpeaker (SpecialSpeaker.RENPY_COMMAND, "renpy"), (SpecialSpeaker.NANINOVEL_COMMAND, "naninovel"), # FileType (FileType.BACKGROUND, "Background"), (FileType.CHARACTER, "Character"), (FileType.MUSIC, "Music"), (FileType.SOUND, "Sound"), (FileType.VOICE, "Voice"), (FileType.EVENT, "Event"), # SheetName (SheetName.PARAM_SHEET, "参数表"), # ColumnName (ColumnName.NOTE, "Note"), (ColumnName.IGNORE, "Ignore"), (ColumnName.SPEAKER, "Speaker"), (ColumnName.TEXT, "Text"), (ColumnName.CHARACTER, "Character"), (ColumnName.BACKGROUND, "Background"), # Marker (Marker.END, "END"), ]) def test_enum_values_and_types(self, enum_member, expected_value): """测试枚举成员的值和类型""" assert enum_member == expected_value assert isinstance(enum_member, str)
[文档] class TestEnumMembers: """测试枚举成员完整性"""
[文档] @pytest.mark.parametrize("enum_class,expected_values,expected_count", [ (WindowMode, ["显示", "隐藏", "显示和隐藏"], 3), (SpecialSpeaker, ["renpy", "naninovel"], 2), (FileType, ["Background", "Character", "Music", "Sound", "Voice", "Event"], 6), (SheetName, ["参数表"], 1), (ColumnName, ["Note", "Ignore", "Speaker", "Text", "Character", "Background"], 6), (Marker, ["END"], 1), ]) def test_enum_members(self, enum_class, expected_values, expected_count): """测试枚举包含所有预期成员""" members = [member.value for member in enum_class] assert len(members) == expected_count for expected_value in expected_values: assert expected_value in members
[文档] class TestDefaultConstants: """测试默认常量"""
[文档] @pytest.mark.parametrize("constant,expected_value,expected_type", [ (DEFAULT_INDENT_SIZE, 4, int), (DEFAULT_BATCH_SIZE, 100, int), (DEFAULT_TRANSITION, "dissolve", str), ]) def test_default_constants(self, constant, expected_value, expected_type): """测试默认常量的值和类型""" assert constant == expected_value assert isinstance(constant, expected_type)
[文档] class TestFileExtensions: """测试文件扩展名常量"""
[文档] def test_excel_extensions(self): """测试 Excel 文件扩展名""" assert EXCEL_EXTENSIONS == ['.xlsx', '.xls'] assert isinstance(EXCEL_EXTENSIONS, list) assert len(EXCEL_EXTENSIONS) == 2 assert '.xlsx' in EXCEL_EXTENSIONS assert '.xls' in EXCEL_EXTENSIONS
[文档] @pytest.mark.parametrize("extension,expected_value", [ (RENPY_EXTENSION, '.rpy'), (NANINOVEL_EXTENSION, '.nani'), ]) def test_engine_extensions(self, extension, expected_value): """测试引擎文件扩展名""" assert extension == expected_value assert isinstance(extension, str)
[文档] class TestTempFilePrefix: """测试临时文件前缀"""
[文档] def test_temp_file_prefix(self): """测试临时文件前缀""" assert TEMP_FILE_PREFIX == '~' assert isinstance(TEMP_FILE_PREFIX, str) assert len(TEMP_FILE_PREFIX) == 1
[文档] class TestEnumComparison: """测试枚举比较功能"""
[文档] @pytest.mark.parametrize("enum1,enum2,should_equal", [ # 相等比较 (WindowMode.SHOW, WindowMode.SHOW, True), (FileType.MUSIC, FileType.MUSIC, True), # 不相等比较 (WindowMode.SHOW, WindowMode.HIDE, False), (FileType.MUSIC, FileType.SOUND, False), ]) def test_enum_equality(self, enum1, enum2, should_equal): """测试枚举相等性比较""" if should_equal: assert enum1 == enum2 else: assert enum1 != enum2
[文档] @pytest.mark.parametrize("enum_member,string_value", [ (WindowMode.SHOW, "显示"), (SpecialSpeaker.RENPY_COMMAND, "renpy"), (FileType.MUSIC, "Music"), ]) def test_enum_string_comparison(self, enum_member, string_value): """测试枚举与字符串比较""" assert enum_member == string_value
[文档] class TestEnumIteration: """测试枚举迭代功能"""
[文档] @pytest.mark.parametrize("enum_class,expected_members,expected_count", [ (WindowMode, [WindowMode.SHOW, WindowMode.HIDE, WindowMode.SHOW_AND_HIDE], 3), (FileType, [FileType.BACKGROUND, FileType.MUSIC], 6), # 只检查部分成员 (ColumnName, [ColumnName.NOTE, ColumnName.SPEAKER], 6), # 只检查部分成员 ]) def test_enum_iteration(self, enum_class, expected_members, expected_count): """测试枚举迭代功能""" members = list(enum_class) assert len(members) == expected_count for expected_member in expected_members: assert expected_member in members