79 lines
2.4 KiB
C#
79 lines
2.4 KiB
C#
using Godot;
|
|
using GdUnit4;
|
|
using static GdUnit4.Assertions;
|
|
using Movementtests.interfaces;
|
|
using Movementtests.systems.damage;
|
|
|
|
namespace Movementtests.tests;
|
|
|
|
[TestSuite, RequireGodotRuntime]
|
|
public class EnemyUnitTest
|
|
{
|
|
[TestCase]
|
|
public void ComputeDamage_NoComponent_ReturnsZero()
|
|
{
|
|
var enemy = new Enemy();
|
|
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
|
|
|
|
var result = enemy.ComputeDamage(input);
|
|
AssertFloat(result.Damage.DamageDealt).IsEqual(0.0f);
|
|
}
|
|
|
|
[TestCase]
|
|
public void TakeDamage_WithCDamageable_AggregatesDamage()
|
|
{
|
|
var enemy = new Enemy();
|
|
var cDamage = new CDamageable();
|
|
cDamage.DamageModifiers = new[]
|
|
{
|
|
new RDamageModifier(EDamageTypes.Normal, 1.0f),
|
|
new RDamageModifier(EDamageTypes.Normal, 2.0f)
|
|
};
|
|
enemy.CDamageable = cDamage;
|
|
|
|
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
|
|
var result = enemy.TakeDamage(input);
|
|
AssertFloat(result.Damage.DamageDealt).IsEqual(30.0f);
|
|
}
|
|
|
|
[TestCase]
|
|
public void ReduceHealth_WithCHealth_Decreases()
|
|
{
|
|
var enemy = new Enemy();
|
|
var health = new CHealth { RHealth = new RHealth(100.0f), CurrentHealth = 100.0f };
|
|
enemy.CHealth = health;
|
|
|
|
var input = new DamageRecord(Vector3.Zero, new RDamage(25.0f, EDamageTypes.Normal));
|
|
var record = enemy.ReduceHealth(enemy, input);
|
|
|
|
AssertFloat(health.CurrentHealth).IsEqual(75.0f);
|
|
AssertFloat(record.CurrentHealth).IsEqual(75.0f);
|
|
}
|
|
|
|
[TestCase]
|
|
public void Knockback_Register_And_Compute()
|
|
{
|
|
var enemy = new Enemy();
|
|
var cKnock = new CKnockback { RKnockback = new RKnockback(1.0f) };
|
|
enemy.CKnockback = cKnock;
|
|
enemy.GlobalPosition = Vector3.Zero;
|
|
cKnock.GlobalPosition = Vector3.Zero;
|
|
|
|
var dmg = new DamageRecord(new Vector3(5, 0, 0), new RDamage(0, EDamageTypes.Normal));
|
|
var krec = new KnockbackRecord(dmg, 2.0f);
|
|
enemy.RegisterKnockback(krec);
|
|
|
|
var k = enemy.ComputeKnockback();
|
|
AssertVector(k).IsEqual(new Vector3(-2, 0, 0));
|
|
}
|
|
|
|
[TestCase]
|
|
public void Unstun_ResetsFlag()
|
|
{
|
|
var enemy = new Enemy();
|
|
enemy.IsStunned = true;
|
|
enemy.Unstun();
|
|
AssertBool(enemy.IsStunned).IsFalse();
|
|
}
|
|
}
|