""" 单元测试:图片配置验证器 测试 validators/image_config.py 中的验证函数。 """ import pytest from validators.image_config import ( validate_fit_value, validate_background_color, validate_dpi_value, ) class TestValidateFitValue: """测试 fit 值验证""" def test_valid_fit_values(self): """测试有效的 fit 值""" assert validate_fit_value("stretch") == [] assert validate_fit_value("contain") == [] assert validate_fit_value("cover") == [] assert validate_fit_value("center") == [] def test_none_fit_value(self): """测试 None 值(默认)""" # None 是无效的,应该返回错误 issues = validate_fit_value(None) assert len(issues) > 0 def test_invalid_fit_value(self): """测试无效的 fit 值""" issues = validate_fit_value("invalid") assert len(issues) > 0 assert issues[0].level == "ERROR" issues = validate_fit_value("fill") assert len(issues) > 0 issues = validate_fit_value("scale") assert len(issues) > 0 def test_case_sensitive(self): """测试大小写敏感""" issues = validate_fit_value("STRETCH") assert len(issues) > 0 issues = validate_fit_value("Contain") assert len(issues) > 0 class TestValidateBackgroundColor: """测试背景色验证""" def test_valid_hex_colors(self): """测试有效的十六进制颜色""" assert validate_background_color("#ffffff") == [] assert validate_background_color("#000000") == [] assert validate_background_color("#ff0000") == [] assert validate_background_color("#4a90e2") == [] def test_valid_short_hex_colors(self): """测试有效的短格式十六进制颜色""" assert validate_background_color("#fff") == [] assert validate_background_color("#000") == [] assert validate_background_color("#f00") == [] def test_none_background(self): """测试 None 值(透明)""" # None 会导致 TypeError,应该返回错误 issues = validate_background_color(None) assert len(issues) > 0 def test_invalid_colors(self): """测试无效的颜色格式""" issues = validate_background_color("white") assert len(issues) > 0 issues = validate_background_color("rgb(255,255,255)") assert len(issues) > 0 issues = validate_background_color("#gggggg") assert len(issues) > 0 issues = validate_background_color("#ff") assert len(issues) > 0 issues = validate_background_color("ffffff") assert len(issues) > 0 class TestValidateDpiValue: """测试 DPI 值验证""" def test_valid_dpi_values(self): """测试有效的 DPI 值""" assert validate_dpi_value(72) == [] assert validate_dpi_value(96) == [] assert validate_dpi_value(150) == [] assert validate_dpi_value(300) == [] def test_boundary_dpi_values(self): """测试边界 DPI 值""" # 1 和 1200 超出建议范围,会返回 WARNING issues = validate_dpi_value(1) assert len(issues) > 0 assert issues[0].level == "WARNING" issues = validate_dpi_value(1200) assert len(issues) > 0 assert issues[0].level == "WARNING" def test_invalid_dpi_values(self): """测试无效的 DPI 值""" # 0 和负数会返回 WARNING issues = validate_dpi_value(0) assert len(issues) > 0 issues = validate_dpi_value(-1) assert len(issues) > 0 issues = validate_dpi_value(1201) assert len(issues) > 0 issues = validate_dpi_value(2000) assert len(issues) > 0 def test_non_integer_dpi(self): """测试非整数 DPI 值""" # 浮点数 DPI 可能被接受(取决于实现) # 字符串和 None 应该返回错误 issues = validate_dpi_value("96") assert len(issues) > 0 issues = validate_dpi_value(None) assert len(issues) > 0