62 lines
No EOL
2.4 KiB
C#
62 lines
No EOL
2.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using Paca.Mobile.Core;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.Core;
|
|
|
|
public class AudioEqualizerProfileManagerGateTests
|
|
{
|
|
[Fact]
|
|
public void Gate417_AudioEqualizerProfileManager_ProvidesStandardPresets()
|
|
{
|
|
var bass = AudioEqualizerProfileManager.GetPreset(EqualizerPresetType.BassBoost);
|
|
Assert.True(bass.Gains[0] > 0); // 31 Hz
|
|
Assert.True(bass.Gains[1] > 0); // 62 Hz
|
|
|
|
var podcast = AudioEqualizerProfileManager.GetPreset(EqualizerPresetType.PodcastVoice);
|
|
Assert.True(podcast.Gains[0] < 0); // cut sub-bass
|
|
Assert.True(podcast.Gains[5] > 0); // 1 kHz boost
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate418_AudioEqualizerProfileManager_ClampsGains_WithinSafeLimits()
|
|
{
|
|
var rawGains = new double[] { -30.0, 50.0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
|
var profile = AudioEqualizerProfileManager.CreateCustomProfile("Test", rawGains);
|
|
|
|
Assert.Equal(-15.0, profile.Gains[0]);
|
|
Assert.Equal(15.0, profile.Gains[1]);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate419_AudioEqualizerProfileManager_GeneratesFfmpegEqualizerFilter_Correctly()
|
|
{
|
|
// Flat preset (all 0s) returns "anull"
|
|
var flat = AudioEqualizerProfileManager.GetPreset(EqualizerPresetType.Flat);
|
|
var flatFilter = AudioEqualizerProfileManager.BuildFfmpegFilter(flat);
|
|
Assert.Equal("anull", flatFilter);
|
|
|
|
// Bass boost generates equalizer filters only for non-zero bands
|
|
var bass = AudioEqualizerProfileManager.GetPreset(EqualizerPresetType.BassBoost);
|
|
var bassFilter = AudioEqualizerProfileManager.BuildFfmpegFilter(bass);
|
|
Assert.Contains("equalizer=f=31:width_type=o:width=1:g=", bassFilter);
|
|
Assert.Contains("equalizer=f=62:width_type=o:width=1:g=", bassFilter);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate420_AudioEqualizerProfileManager_SerializesAndDeserializes_CustomProfileJson()
|
|
{
|
|
var original = AudioEqualizerProfileManager.GetPreset(EqualizerPresetType.VocalEnhance);
|
|
var json = AudioEqualizerProfileManager.ToJson(original);
|
|
var restored = AudioEqualizerProfileManager.FromJson(json);
|
|
|
|
Assert.NotNull(restored);
|
|
Assert.Equal(original.Name, restored.Name);
|
|
Assert.Equal(original.Gains.Length, restored.Gains.Length);
|
|
for (int i = 0; i < original.Gains.Length; i++)
|
|
{
|
|
Assert.Equal(original.Gains[i], restored.Gains[i], 2);
|
|
}
|
|
}
|
|
} |