using NUnit.Framework; namespace AibisDream.SystemEditor.Tests { public sealed class TextSpeedSettingsTests { [SetUp] public void SetUp() { TextSpeedSettings.Reset(); } [TearDown] public void TearDown() { TextSpeedSettings.Reset(); } [TestCase("0.5", TextSpeedSettings.SlowMultiplier, TextSpeedSettings.SlowValue)] [TestCase("0.50", TextSpeedSettings.SlowMultiplier, TextSpeedSettings.SlowValue)] [TestCase("1", TextSpeedSettings.DefaultMultiplier, TextSpeedSettings.DefaultValue)] [TestCase("1.0", TextSpeedSettings.DefaultMultiplier, TextSpeedSettings.DefaultValue)] [TestCase("3", TextSpeedSettings.FastMultiplier, TextSpeedSettings.FastValue)] [TestCase("3.0", TextSpeedSettings.FastMultiplier, TextSpeedSettings.FastValue)] public void TryNormalize_SupportedNumericValue_ReturnsCanonicalValue( string rawValue, float expectedMultiplier, string expectedCanonicalValue) { var result = TextSpeedSettings.TryNormalize( rawValue, out var multiplier, out var canonicalValue); Assert.That(result, Is.True); Assert.That(multiplier, Is.EqualTo(expectedMultiplier)); Assert.That(canonicalValue, Is.EqualTo(expectedCanonicalValue)); } [TestCase(null)] [TestCase("")] [TestCase(" ")] [TestCase("invalid")] [TestCase("NaN")] [TestCase("Infinity")] [TestCase("-1")] [TestCase("0")] [TestCase("2")] [TestCase("4")] public void TryNormalize_InvalidOrUnsupportedValue_ReturnsDefault( string rawValue) { var result = TextSpeedSettings.TryNormalize( rawValue, out var multiplier, out var canonicalValue); Assert.That(result, Is.False); Assert.That(multiplier, Is.EqualTo(TextSpeedSettings.DefaultMultiplier)); Assert.That(canonicalValue, Is.EqualTo(TextSpeedSettings.DefaultValue)); } [Test] public void Reset_AfterApplyingFastValue_RestoresDefault() { Assert.That(TextSpeedSettings.ApplyStoredValue("3"), Is.True); Assert.That(TextSpeedSettings.CurrentMultiplier, Is.EqualTo(TextSpeedSettings.FastMultiplier)); TextSpeedSettings.Reset(); Assert.That(TextSpeedSettings.CurrentMultiplier, Is.EqualTo(TextSpeedSettings.DefaultMultiplier)); Assert.That(TextSpeedSettings.CurrentCanonicalValue, Is.EqualTo(TextSpeedSettings.DefaultValue)); } } }