using NUnit.Framework; using SepCore.Definition; using SepCore.UI; namespace VampireLike.Tests.Gameplay.EditMode { [TestFixture] public class StatPresentationTests { [Test] public void StatRawData_StoresAndRetrievesValues() { var rawData = new StatRawData(); rawData.SetValue(StatType.MaxHp, 150f); rawData[StatType.MeleeDamage] = 12f; Assert.AreEqual(150f, rawData.GetValue(StatType.MaxHp)); Assert.AreEqual(12f, rawData[StatType.MeleeDamage]); Assert.AreEqual(0f, rawData.GetValue(StatType.Armor)); } [Test] public void StatContext_FormatsDamagePercentAndAttackSpeedAsBonus() { var rawData = new StatRawData(); rawData.SetValue(StatType.DamagePercent, 1.05f); rawData.SetValue(StatType.AttackSpeed, 1.19f); var context = new StatContext(rawData); string damageStr = context.GetFormattedValue(StatType.DamagePercent); string attackSpeedStr = context.GetFormattedValue(StatType.AttackSpeed); Assert.IsTrue(damageStr.Contains("+5%"), $"Expected '+5%' in '{damageStr}'"); Assert.IsTrue(attackSpeedStr.Contains("+19%"), $"Expected '+19%' in '{attackSpeedStr}'"); } [Test] public void StatContext_FormatsProbabilityStatsAsPercent() { var rawData = new StatRawData(); rawData.SetValue(StatType.CritChance, 0.25f); rawData.SetValue(StatType.Dodge, 0.15f); rawData.SetValue(StatType.LifeSteal, 0.05f); var context = new StatContext(rawData); string critStr = context.GetFormattedValue(StatType.CritChance); string dodgeStr = context.GetFormattedValue(StatType.Dodge); string lifeStealStr = context.GetFormattedValue(StatType.LifeSteal); Assert.IsTrue(critStr.Contains("25%"), $"Expected '25%' in '{critStr}'"); Assert.IsTrue(dodgeStr.Contains("15%"), $"Expected '15%' in '{dodgeStr}'"); Assert.IsTrue(lifeStealStr.Contains("5%"), $"Expected '5%' in '{lifeStealStr}'"); } [Test] public void StatContext_FormatsScalarStatsAccurately() { var rawData = new StatRawData(); rawData.SetValue(StatType.MaxHp, 120f); rawData.SetValue(StatType.Armor, 8f); var context = new StatContext(rawData); string hpStr = context.GetFormattedValue(StatType.MaxHp); string armorStr = context.GetFormattedValue(StatType.Armor); Assert.IsTrue(hpStr.Contains("120"), $"Expected '120' in '{hpStr}'"); Assert.IsTrue(armorStr.Contains("8"), $"Expected '8' in '{armorStr}'"); } } }