""" 缩略图生成器纯函数测试. 覆盖 _format_seek_time 等纯逻辑. FFmpeg 抽帧与 OSS 上传由集成测试覆盖. """ from __future__ import annotations import pytest from video_processing.thumbnail_generator import _format_seek_time class TestFormatSeekTime: """_format_seek_time 时间格式化.""" def test_zero(self): assert _format_seek_time(0.0) == "00:00:00.00" def test_seconds_only(self): assert _format_seek_time(5.5) == "00:00:05.50" def test_minutes(self): assert _format_seek_time(65.25) == "00:01:05.25" def test_hours(self): assert _format_seek_time(3661.5) == "01:01:01.50" def test_exact_minute(self): assert _format_seek_time(60.0) == "00:01:00.00" def test_exact_hour(self): assert _format_seek_time(3600.0) == "01:00:00.00" def test_very_short(self): assert _format_seek_time(0.1) == "00:00:00.10" def test_long_video(self): # 超过1小时 assert _format_seek_time(7200.0) == "02:00:00.00" def test_sub_second_precision(self): result = _format_seek_time(1.234) parts = result.split(":") assert len(parts) == 3 sec_part = parts[2] assert "." in sec_part decimals = sec_part.split(".")[1] assert len(decimals) == 2 def test_zero_padded_hours(self): # 小时始终是2位 result = _format_seek_time(5.0) assert result.startswith("00:") def test_zero_padded_minutes(self): # 分钟始终是2位 result = _format_seek_time(5.0) parts = result.split(":") assert len(parts[1]) == 2