摄像机区域的架构改动
This commit is contained in:
@@ -129,5 +129,83 @@ namespace BaseGames.Tests.EditMode
|
||||
{
|
||||
Assert.AreEqual(StatusEffectType.Stagger, new StaggerEffect().EffectType);
|
||||
}
|
||||
|
||||
// ── 补充测试 ──────────────────────────────────────────────────────────
|
||||
|
||||
[Test]
|
||||
public void StatusEffect_StackCount_InitialValueIsOne()
|
||||
{
|
||||
var effect = new FireEffect();
|
||||
Assert.AreEqual(1, effect.StackCount, "新建 Effect 的初始 StackCount 应为 1");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void StatusEffect_Update_RemainingTime_Decreases()
|
||||
{
|
||||
var effect = new StaggerEffect(2.0f);
|
||||
effect.OnApply(null);
|
||||
float initialDuration = effect.Duration;
|
||||
|
||||
effect.Update(0.5f);
|
||||
|
||||
Assert.Less(effect.Duration, initialDuration, "Update 后剩余时间应减少");
|
||||
Assert.IsFalse(effect.IsExpired, "0.5s Update 后 2.0s 效果不应过期");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void StatusEffect_Update_ExactExpiry()
|
||||
{
|
||||
var effect = new StaggerEffect(1.0f);
|
||||
effect.OnApply(null);
|
||||
|
||||
effect.Update(1.0f); // 恰好耗尽
|
||||
|
||||
Assert.IsTrue(effect.IsExpired, "恰好耗尽 duration 后应 IsExpired == true");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MultipleEffects_IndependentTimers()
|
||||
{
|
||||
var fire = new FireEffect();
|
||||
var poison = new PoisonEffect();
|
||||
fire.OnApply(null);
|
||||
poison.OnApply(null);
|
||||
|
||||
float fireDuration = fire.Duration;
|
||||
float poisonDuration = poison.Duration;
|
||||
|
||||
fire.Update(0.5f);
|
||||
|
||||
// poison 未调用 Update,时间不应变化
|
||||
Assert.AreEqual(poisonDuration, poison.Duration, 0.0001f,
|
||||
"未 Update 的 Effect 持续时间不应减少");
|
||||
Assert.Less(fire.Duration, fireDuration, "已 Update 的 Effect 持续时间应减少");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PoisonEffect_OnStack_DoesNotExceedMaxStacks_EdgeCase()
|
||||
{
|
||||
var effect = new PoisonEffect();
|
||||
// MaxStacks = 3,初始 StackCount = 1,再叠加 2 次达到上限
|
||||
effect.OnStack();
|
||||
effect.OnStack();
|
||||
Assert.AreEqual(3, effect.StackCount);
|
||||
|
||||
// 再叠加,不应超过 3
|
||||
effect.OnStack();
|
||||
effect.OnStack();
|
||||
Assert.AreEqual(3, effect.StackCount, "StackCount 不应超过 MaxStacks");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void FireEffect_OnApply_ThenExpire_DoesNotThrow()
|
||||
{
|
||||
var effect = new FireEffect();
|
||||
Assert.DoesNotThrow(() =>
|
||||
{
|
||||
effect.OnApply(null);
|
||||
effect.OnExpire(); // 注意:实际 API 为 OnExpire(),文档中误写为 OnRemove()
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user