from PIL import Image from app import estimate_gpu_duration, prepare_frame, seconds_to_frames def test_prepare_frame_uses_multiple_of_sixteen(): image = Image.new("RGB", (701, 509), "red") result, size = prepare_frame(image, 480 * 832) assert result.size == size assert size[0] % 16 == 0 assert size[1] % 16 == 0 def test_end_frame_matches_start_geometry(): start = Image.new("RGB", (900, 500), "red") end = Image.new("RGB", (500, 900), "blue") _, target_size = prepare_frame(start, 480 * 832) prepared_end, _ = prepare_frame(end, 480 * 832, target_size) assert prepared_end.size == target_size def test_duration_seconds_map_to_wan_frame_counts(): assert seconds_to_frames(1) == 17 assert seconds_to_frames(2) == 33 assert seconds_to_frames(3) == 49 def test_gpu_reservation_scales_with_duration(): one_second = estimate_gpu_duration(None, None, "", "", "480p (faster)", 1, 8, 1.0, -1) three_seconds = estimate_gpu_duration(None, None, "", "", "480p (faster)", 3, 8, 1.0, -1) assert one_second == 15 assert three_seconds == 29