using System; using Paca.Core; using Xunit; namespace Paca.Tests.Core; public class VideoFrameRateConverterGateTests { [Fact] public void Gate421_VideoFrameRateConverter_BuildsSimpleFpsFilter() { var filter = VideoFrameRateConverter.BuildFpsFilter(60, FrameRateConversionMode.Simple); Assert.Equal("fps=60", filter); } [Fact] public void Gate422_VideoFrameRateConverter_BuildsMotionInterpolationFilter() { var filter = VideoFrameRateConverter.BuildFpsFilter(60, FrameRateConversionMode.MotionCompensated); Assert.Contains("minterpolate=", filter); Assert.Contains("fps=60", filter); Assert.Contains("mi_mode=mci", filter); } [Fact] public void Gate423_VideoFrameRateConverter_BuildsBlendFilter() { var filter = VideoFrameRateConverter.BuildFpsFilter(60, FrameRateConversionMode.FrameBlend); Assert.Contains("tblend=all_mode=average", filter); Assert.Contains("framerate=fps=60", filter); } [Fact] public void Gate424_VideoFrameRateConverter_BuildsFullFfmpegCli() { var args = VideoFrameRateConverter.BuildFfmpegArgs("in.mp4", "out.mp4", 60, FrameRateConversionMode.MotionCompensated, crf: 18); Assert.Contains("-i \"in.mp4\"", args); Assert.Contains("-vf \"minterpolate=", args); Assert.Contains("-c:v libx264 -crf 18", args); Assert.Contains("-c:a copy", args); Assert.Contains("\"out.mp4\"", args); } }