using System; using Paca.Core; using Xunit; namespace Paca.Tests.Core; public class AudioChannelDownmixerGateTests { [Fact] public void Gate329_AudioChannelDownmixer_BuildsStandardItuR775Filter() { var filter = AudioChannelDownmixer.BuildDownmixFilterArgs(DownmixMode.StandardItuR775); Assert.Contains("pan=stereo|FL=0.7071*FL+0.5*FC+0.7071*BL|FR=0.7071*FR+0.5*FC+0.7071*BR", filter); } [Fact] public void Gate330_AudioChannelDownmixer_BuildsNightDialogBoostFilter() { var filter = AudioChannelDownmixer.BuildDownmixFilterArgs(DownmixMode.NightDialogBoost); // Center channel (FC) boosted to 1.0, side noise attenuated Assert.Contains("pan=stereo|FL=0.5*FL+1.0*FC+0.3*BL|FR=0.5*FR+1.0*FC+0.3*BR", filter); } [Fact] public void Gate331_AudioChannelDownmixer_BuildsMonoCompatibilityFilter() { var filter = AudioChannelDownmixer.BuildDownmixFilterArgs(DownmixMode.MonoCompatibility); Assert.Contains("pan=mono|c0=0.5*FL+0.5*FR", filter); } [Fact] public void Gate332_AudioChannelDownmixer_BuildsFullCommandLine_WithVideoCopy() { var cmd = AudioChannelDownmixer.BuildDownmixCommandLine( inputPath: "C:\\movies\\surround51.mp4", outputPath: "C:\\movies\\stereo_dialog.mp4", mode: DownmixMode.NightDialogBoost, copyVideo: true ); Assert.Contains("-i \"C:\\movies\\surround51.mp4\"", cmd); Assert.Contains("-c:v copy", cmd); Assert.Contains("-filter:a \"pan=stereo|FL=0.5*FL+1.0*FC+0.3*BL|FR=0.5*FR+1.0*FC+0.3*BR\"", cmd); Assert.Contains("-c:a aac -b:a 192k", cmd); Assert.EndsWith("\"C:\\movies\\stereo_dialog.mp4\" -y", cmd); } }