添加 ShopForm 下的 StatForm,展示玩家属性
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
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}'");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user