Files
Libation/Source/_Tests/LibationFileManager.Tests/MaxSampleRateTests.cs
T
Cursor Agentandrmcrackan 10c1cc2a60 Restore MaxSampleRate clamping lost with migrate_to_v11_6_5
Commit 065118cf also deleted migrate_to_v11_6_5, which clamped
MaxSampleRate into LAME's supported [Hz_8000, Hz_48000] range on every
startup (the fix for #1116). Its replacement, ValidateEnumSettings, only
rejects values that fail to parse - but AAXClean.SampleRate defines
Hz_7350, Hz_64000, Hz_88200 and Hz_96000, so a hand-edited or
pre-v11.6.5 Settings.json could carry a valid-but-unsupported rate
straight into the encoder.

Clamp in the property getter and setter instead of a startup hook,
following the DailyDownloadLimitQuantity pattern.

Co-authored-by: rmcrackan <rmcrackan@gmail.com>
2026-08-19 20:12:44 +00:00

72 lines
1.9 KiB
C#

using AAXClean;
using AssertionHelper;
using LibationFileManager;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MaxSampleRateTests;
[TestClass]
[DoNotParallelize]
public class MaxSampleRateTests
{
[TestCleanup]
public void Cleanup() => Configuration.RestoreSingletonInstance();
[TestMethod]
public void Default_when_missing_is_Hz_44100()
{
var config = Configuration.CreateMockInstance();
config.Exists(nameof(Configuration.MaxSampleRate)).Should().BeFalse();
Assert.AreEqual(SampleRate.Hz_44100, config.MaxSampleRate);
}
[TestMethod]
public void In_range_values_round_trip_unchanged()
{
var config = Configuration.CreateMockInstance();
config.MaxSampleRate = SampleRate.Hz_8000;
Assert.AreEqual(SampleRate.Hz_8000, config.MaxSampleRate);
config.MaxSampleRate = SampleRate.Hz_22050;
Assert.AreEqual(SampleRate.Hz_22050, config.MaxSampleRate);
config.MaxSampleRate = SampleRate.Hz_48000;
Assert.AreEqual(SampleRate.Hz_48000, config.MaxSampleRate);
}
[TestMethod]
public void Setter_clamps_out_of_range_values()
{
var config = Configuration.CreateMockInstance();
config.MaxSampleRate = SampleRate.Hz_7350;
Assert.AreEqual(SampleRate.Hz_8000, config.MaxSampleRate);
config.MaxSampleRate = SampleRate.Hz_96000;
Assert.AreEqual(SampleRate.Hz_48000, config.MaxSampleRate);
}
[TestMethod]
public void Getter_clamps_a_hand_edited_low_rate()
{
var config = Configuration.CreateMockInstance();
// Bypass the property setter, as a hand-edited Settings.json or a pre-v11.6.5 install would
config.SetNonString(nameof(SampleRate.Hz_7350), nameof(Configuration.MaxSampleRate));
Assert.AreEqual(SampleRate.Hz_8000, config.MaxSampleRate);
}
[TestMethod]
public void Getter_clamps_a_hand_edited_high_rate()
{
var config = Configuration.CreateMockInstance();
config.SetNonString(nameof(SampleRate.Hz_96000), nameof(Configuration.MaxSampleRate));
Assert.AreEqual(SampleRate.Hz_48000, config.MaxSampleRate);
}
}