using NUnit.Framework; namespace AibisDream.SystemEditor.Tests { public sealed class TextSpeedSettingsTests { [SetUp] public void SetUp() { TextSpeedSettings.Reset(); } [TearDown] public void TearDown() { TextSpeedSettings.Reset(); } [Test] public void Normalize_MapsEverySupportedValueToCanonicalForm() { AssertNormalized( "0.5", TextSpeedSettings.SlowMultiplier, TextSpeedSettings.SlowValue); AssertNormalized( "1.0", TextSpeedSettings.DefaultMultiplier, TextSpeedSettings.DefaultValue); AssertNormalized( "3", TextSpeedSettings.FastMultiplier, TextSpeedSettings.FastValue); } [Test] public void Normalize_RejectsInvalidAndUnsupportedValues() { foreach (var rawValue in new[] { null, string.Empty, "invalid", "NaN", "Infinity", "0", "2", "4" }) { Assert.That( TextSpeedSettings.TryNormalize( rawValue, out var multiplier, out var canonicalValue), Is.False, rawValue); Assert.That(multiplier, Is.EqualTo(TextSpeedSettings.DefaultMultiplier)); Assert.That(canonicalValue, Is.EqualTo(TextSpeedSettings.DefaultValue)); } } [Test] public void Reset_RestoresDefaultAfterRuntimeChange() { Assert.That(TextSpeedSettings.ApplyStoredValue("3"), Is.True); TextSpeedSettings.Reset(); Assert.That( TextSpeedSettings.CurrentMultiplier, Is.EqualTo(TextSpeedSettings.DefaultMultiplier)); Assert.That( TextSpeedSettings.CurrentCanonicalValue, Is.EqualTo(TextSpeedSettings.DefaultValue)); } private static void AssertNormalized( string rawValue, float expectedMultiplier, string expectedCanonicalValue) { Assert.That( TextSpeedSettings.TryNormalize( rawValue, out var multiplier, out var canonicalValue), Is.True, rawValue); Assert.That(multiplier, Is.EqualTo(expectedMultiplier)); Assert.That(canonicalValue, Is.EqualTo(expectedCanonicalValue)); } } }