releases/tests/Paca.Tests/Core/AudioDynamicRangeCompressorGateTests.cs

57 lines
No EOL
1.8 KiB
C#

using System;
using Paca.Core;
using Xunit;
namespace Paca.Tests.Core;
public class AudioDynamicRangeCompressorGateTests
{
[Fact]
public void Gate429_AudioDynamicRangeCompressor_BuildsPresetFilter_Accurately()
{
var filter = AudioDynamicRangeCompressor.BuildFilter(CompressorPreset.NightListening);
Assert.Contains("threshold=-24dB", filter);
Assert.Contains("ratio=6", filter);
Assert.Contains("alimiter=limit=-1dB", filter);
}
[Fact]
public void Gate430_AudioDynamicRangeCompressor_BuildsCustomCompressorFilter()
{
var filter = AudioDynamicRangeCompressor.BuildCustomFilter(
thresholdDb: -22.0,
ratio: 5.0,
attackMs: 8.0,
releaseMs: 120.0,
makeupDb: 5.0,
limitPeakDb: -0.5
);
Assert.Contains("threshold=-22dB", filter);
Assert.Contains("ratio=5", filter);
Assert.Contains("attack=8", filter);
Assert.Contains("release=120", filter);
Assert.Contains("makeup=5dB", filter);
Assert.Contains("alimiter=limit=-0.5dB", filter);
}
[Fact]
public void Gate431_AudioDynamicRangeCompressor_HandlesPassthrough()
{
var filter = AudioDynamicRangeCompressor.BuildFilter(CompressorPreset.None);
Assert.Equal("anull", filter);
}
[Fact]
public void Gate432_AudioDynamicRangeCompressor_BuildsFfmpegArgs_Properly()
{
var args = AudioDynamicRangeCompressor.BuildFfmpegArgs("in.mp4", "out.mp4", CompressorPreset.NightListening, copyVideo: true);
Assert.Contains("-i \"in.mp4\"", args);
Assert.Contains("-c:v copy", args);
Assert.Contains("-af \"acompressor=", args);
Assert.Contains("-c:a aac -b:a 192k", args);
Assert.Contains("\"out.mp4\"", args);
}
}