using System; using Paca.Core; using Xunit; namespace Paca.Tests.Core; public class VideoDenoiseEnhancerGateTests { [Fact] public void Gate401_VideoDenoiseEnhancer_BuildsFastHqdn3dFilter() { var filter = VideoDenoiseEnhancer.BuildEnhanceFilterChain(denoise: true, sharpen: false, DenoisePreset.FastTemporalSpatial); Assert.Equal("hqdn3d=4:3:6:4.5", filter); } [Fact] public void Gate402_VideoDenoiseEnhancer_BuildsHighQualityNlmeansFilter() { var filter = VideoDenoiseEnhancer.BuildEnhanceFilterChain(denoise: true, sharpen: false, DenoisePreset.HighQualityNonLocalMeans); Assert.Contains("nlmeans=s=1.0:p=7:r=15", filter); } [Fact] public void Gate403_VideoDenoiseEnhancer_ChainsDenoiseAndSharpenFilters() { var filter = VideoDenoiseEnhancer.BuildEnhanceFilterChain(denoise: true, sharpen: true, DenoisePreset.FastTemporalSpatial); Assert.Contains("hqdn3d=4:3:6:4.5", filter); Assert.Contains("unsharp=5:5:0.8:5:5:0.4", filter); } [Fact] public void Gate404_VideoDenoiseEnhancer_BuildsFullCommandLine_WithAudioCopy() { var cmd = VideoDenoiseEnhancer.BuildDenoiseCommandLine( inputPath: "C:\\videos\\grainy.mp4", outputPath: "C:\\videos\\enhanced.mp4", denoise: true, sharpen: true ); Assert.Contains("-i \"C:\\videos\\grainy.mp4\"", cmd); Assert.Contains("-vf \"hqdn3d=4:3:6:4.5,unsharp=5:5:0.8:5:5:0.4\"", cmd); Assert.Contains("-c:v libx264 -crf 20 -preset fast -c:a copy", cmd); Assert.EndsWith("\"C:\\videos\\enhanced.mp4\" -y", cmd); } }