bis
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 20s
Create tag and build when new code gets to main / Export (push) Successful in 6m8s
Create tag and build when new code gets to main / Test (push) Failing after 8m43s

This commit is contained in:
2026-02-22 16:49:58 +01:00
parent f3eea3f171
commit c9738d9c61
21 changed files with 3 additions and 612 deletions

View File

@@ -1,101 +0,0 @@
using Godot;
using GdUnit4;
using static GdUnit4.Assertions;
using Movementtests.interfaces;
using Movementtests.systems.damage;
namespace Movementtests.tests;
[TestSuite, RequireGodotRuntime]
public class DamageComponentUnitTest
{
[TestCase]
public void DamageModifierAppliesWhenTypeMatches()
{
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
var modifier = new RDamageModifier(EDamageTypes.Normal, 2.0f);
var signalTriggered = false;
modifier.DamageTaken += (_, _) => signalTriggered = true;
var result = modifier.TakeDamage(input);
AssertFloat(result.Damage.DamageDealt).IsEqual(20.0f);
AssertBool(signalTriggered).IsTrue();
}
[TestCase]
public void DamageModifierIgnoresWhenTypeDifferent()
{
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
var modifier = new RDamageModifier(EDamageTypes.Fire, 3.0f);
var signalTriggered = false;
modifier.DamageTaken += (_, _) => signalTriggered = true;
var result = modifier.TakeDamage(input);
AssertFloat(result.Damage.DamageDealt).IsEqual(0.0f);
AssertBool(signalTriggered).IsFalse(); // No damage actually taken
}
[TestCase]
public void DamageableSumsAllModifiers()
{
var mod1 = new RDamageModifier(EDamageTypes.Normal, 1.0f);
var mod2 = new RDamageModifier(EDamageTypes.Normal, 0.5f);
var damageable = new CDamageable();
damageable.DamageModifiers = new[] { mod1, mod2 };
var signalTriggered = false;
damageable.DamageTaken += (_, _) => signalTriggered = true;
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
var result = damageable.TakeDamage(input);
AssertFloat(result.Damage.DamageDealt).IsEqual(15.0f);
AssertBool(signalTriggered).IsTrue();
}
[TestCase]
public void ComputeDamageModifierAppliesWhenTypeMatches()
{
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
var modifier = new RDamageModifier(EDamageTypes.Normal, 2.0f);
var signalTriggered = false;
modifier.DamageTaken += (_, _) => signalTriggered = true;
var result = modifier.ComputeDamage(input);
AssertFloat(result.Damage.DamageDealt).IsEqual(20.0f);
AssertBool(signalTriggered).IsFalse();
}
[TestCase]
public void ComputeDamageModifierIgnoresWhenTypeDifferent()
{
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
var modifier = new RDamageModifier(EDamageTypes.Fire, 3.0f);
var signalTriggered = false;
modifier.DamageTaken += (_, _) => signalTriggered = true;
var result = modifier.ComputeDamage(input);
AssertFloat(result.Damage.DamageDealt).IsEqual(0.0f);
AssertBool(signalTriggered).IsFalse();
}
[TestCase]
public void ComputeDamageableSumsAllModifiers()
{
var mod1 = new RDamageModifier(EDamageTypes.Normal, 1.0f);
var mod2 = new RDamageModifier(EDamageTypes.Normal, 0.5f);
var cDamageable = new CDamageable();
cDamageable.DamageModifiers = new[] { mod1, mod2 };
var signalTriggered = false;
cDamageable.DamageTaken += (_, _) => signalTriggered = true;
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
var result = cDamageable.ComputeDamage(input);
AssertFloat(result.Damage.DamageDealt).IsEqual(15.0f);
AssertBool(signalTriggered).IsFalse();
}
}