This commit is contained in:
2025-09-24 10:50:34 +08:00
parent c055a68592
commit ec1705769c
18 changed files with 348 additions and 330 deletions

View File

@@ -1,4 +1,5 @@
"""测试特效基础类和注册表"""
import pytest
from unittest.mock import Mock
@@ -50,9 +51,7 @@ class TestEffectProcessor:
def test_get_pos_json_valid(self):
"""测试获取有效位置JSON"""
ext_data = {
"posJson": '{"ltX": 100, "ltY": 200, "rbX": 300, "rbY": 400}'
}
ext_data = {"posJson": '{"ltX": 100, "ltY": 200, "rbX": 300, "rbY": 400}'}
processor = EffectProcessor("", ext_data)
result = processor.get_pos_json()
@@ -185,4 +184,4 @@ class TestEffectRegistry:
name, params = registry.parse_effect_string("effect:param1:param2")
assert name == "effect"
assert params == "param1:param2"
assert params == "param1:param2"

View File

@@ -1,4 +1,5 @@
"""测试变速特效"""
import pytest
from entity.effects.speed import SpeedEffect
from tests.utils.test_helpers import EffectTestHelper
@@ -10,31 +11,11 @@ class TestSpeedEffect:
def test_validate_params_valid_cases(self):
"""测试有效参数验证"""
test_cases = [
{
"params": "2.0",
"expected": True,
"description": "2倍速"
},
{
"params": "0.5",
"expected": True,
"description": "0.5倍速(慢速)"
},
{
"params": "1.0",
"expected": True,
"description": "正常速度"
},
{
"params": "10.0",
"expected": True,
"description": "10倍速"
},
{
"params": "",
"expected": True,
"description": "空参数(默认不变速)"
}
{"params": "2.0", "expected": True, "description": "2倍速"},
{"params": "0.5", "expected": True, "description": "0.5倍速(慢速)"},
{"params": "1.0", "expected": True, "description": "正常速度"},
{"params": "10.0", "expected": True, "description": "10倍速"},
{"params": "", "expected": True, "description": "空参数(默认不变速)"},
]
effect = SpeedEffect()
@@ -46,26 +27,10 @@ class TestSpeedEffect:
def test_validate_params_invalid_cases(self):
"""测试无效参数验证"""
test_cases = [
{
"params": "0",
"expected": False,
"description": "零速度"
},
{
"params": "-1.0",
"expected": False,
"description": "负速度"
},
{
"params": "abc",
"expected": False,
"description": "非数字参数"
},
{
"params": "1.0,2.0",
"expected": False,
"description": "多余参数"
}
{"params": "0", "expected": False, "description": "零速度"},
{"params": "-1.0", "expected": False, "description": "负速度"},
{"params": "abc", "expected": False, "description": "非数字参数"},
{"params": "1.0,2.0", "expected": False, "description": "多余参数"},
]
effect = SpeedEffect()
@@ -110,7 +75,7 @@ class TestSpeedEffect:
test_cases = [
{"params": "", "description": "空参数"},
{"params": "1", "description": "1倍速"},
{"params": "1.0", "description": "1.0倍速"}
{"params": "1.0", "description": "1.0倍速"},
]
for case in test_cases:
@@ -118,8 +83,12 @@ class TestSpeedEffect:
result = EffectTestHelper.test_filter_generation(effect, "[0:v]", 1)
assert result["success"], f"Failed for {case['description']}"
assert result["filter_count"] == 0, f"Should not generate filter for {case['description']}"
assert result["output_stream"] == "[0:v]", f"Output should equal input for {case['description']}"
assert (
result["filter_count"] == 0
), f"Should not generate filter for {case['description']}"
assert (
result["output_stream"] == "[0:v]"
), f"Output should equal input for {case['description']}"
def test_generate_filter_args_invalid_params(self):
"""测试无效参数的滤镜生成"""
@@ -166,4 +135,4 @@ class TestSpeedEffect:
# 作为链中的第二个特效
result2 = EffectTestHelper.test_filter_generation(effect, "[v_eff1]", 2)
assert result2["output_stream"] == "[v_eff2]"
assert "[v_eff1]" in result2["filters"][0]
assert "[v_eff1]" in result2["filters"][0]

View File

@@ -1,4 +1,5 @@
"""测试缩放特效"""
import pytest
from entity.effects.zoom import ZoomEffect
from tests.utils.test_helpers import EffectTestHelper, FFmpegValidator
@@ -10,26 +11,18 @@ class TestZoomEffect:
def test_validate_params_valid_cases(self):
"""测试有效参数验证"""
test_cases = [
{
"params": "0,2.0,3.0",
"expected": True,
"description": "标准缩放参数"
},
{"params": "0,2.0,3.0", "expected": True, "description": "标准缩放参数"},
{
"params": "1.5,1.5,0",
"expected": True,
"description": "静态缩放(duration=0)"
"description": "静态缩放(duration=0)",
},
{
"params": "0,1.0,5.0",
"expected": True,
"description": "无缩放效果(factor=1.0)"
"description": "无缩放效果(factor=1.0)",
},
{
"params": "10,0.5,2.0",
"expected": True,
"description": "缩小效果"
}
{"params": "10,0.5,2.0", "expected": True, "description": "缩小效果"},
]
effect = ZoomEffect()
@@ -41,41 +34,13 @@ class TestZoomEffect:
def test_validate_params_invalid_cases(self):
"""测试无效参数验证"""
test_cases = [
{
"params": "",
"expected": False,
"description": "空参数"
},
{
"params": "1,2",
"expected": False,
"description": "参数不足"
},
{
"params": "-1,2.0,3.0",
"expected": False,
"description": "负开始时间"
},
{
"params": "0,0,3.0",
"expected": False,
"description": "零缩放因子"
},
{
"params": "0,-2.0,3.0",
"expected": False,
"description": "负缩放因子"
},
{
"params": "0,2.0,-1.0",
"expected": False,
"description": "负持续时间"
},
{
"params": "abc,2.0,3.0",
"expected": False,
"description": "非数字参数"
}
{"params": "", "expected": False, "description": "空参数"},
{"params": "1,2", "expected": False, "description": "参数不足"},
{"params": "-1,2.0,3.0", "expected": False, "description": "负开始时间"},
{"params": "0,0,3.0", "expected": False, "description": "零缩放因子"},
{"params": "0,-2.0,3.0", "expected": False, "description": "负缩放因子"},
{"params": "0,2.0,-1.0", "expected": False, "description": "负持续时间"},
{"params": "abc,2.0,3.0", "expected": False, "description": "非数字参数"},
]
effect = ZoomEffect()
@@ -158,9 +123,7 @@ class TestZoomEffect:
def test_get_zoom_center_invalid_pos_json(self):
"""测试无效posJson时的缩放中心点"""
ext_data = {
"posJson": '{"imgWidth": 0, "imgHeight": 0}' # 无效尺寸
}
ext_data = {"posJson": '{"imgWidth": 0, "imgHeight": 0}'} # 无效尺寸
effect = ZoomEffect("0,2.0,3.0", ext_data)
center_x, center_y = effect._get_zoom_center()
@@ -191,4 +154,4 @@ class TestZoomEffect:
assert "zoompan=z=" in filter_str
assert "between(t\\\\,2.5\\\\,4.0)" in filter_str # 2.5 + 1.5 = 4.0
assert "[input]" in filter_str
assert "[v_eff5]" in filter_str
assert "[v_eff5]" in filter_str