diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml
index 3757cbe2..251c182b 100644
--- a/.gitea/workflows/main.yaml
+++ b/.gitea/workflows/main.yaml
@@ -55,10 +55,9 @@ jobs:
dotnet-version: 'net9.0'
paths: |
res://tests/
- timeout: 1
publish-report: false
upload-report: false
- arguments: "--verbose --headless --import"
+ arguments: "--verbose --headless"
- name: Upload test report
uses: actions/upload-artifact@v3-node20
diff --git a/Movement tests.sln.DotSettings.user b/Movement tests.sln.DotSettings.user
index f3230b19..f6ec7833 100644
--- a/Movement tests.sln.DotSettings.user
+++ b/Movement tests.sln.DotSettings.user
@@ -6,6 +6,7 @@
ForceIncluded
ForceIncluded
+
<SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
<Solution />
</SessionState>
diff --git a/tests/components/DamageComponentUnitTest.cs b/tests/components/DamageComponentUnitTest.cs
index 7baeaabd..984a78c0 100644
--- a/tests/components/DamageComponentUnitTest.cs
+++ b/tests/components/DamageComponentUnitTest.cs
@@ -10,50 +10,92 @@ namespace Movementtests.tests;
public class DamageComponentUnitTest
{
[TestCase]
- public void DamageModifier_Applies_WhenTypeMatches()
+ public void DamageModifierAppliesWhenTypeMatches()
{
+ var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
var modifier = new RDamageModifier(EDamageTypes.Normal, 2.0f);
- var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
-
+ 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 DamageModifier_Ignores_WhenTypeDifferent()
+ public void DamageModifierIgnoresWhenTypeDifferent()
{
- var modifier = new RDamageModifier(EDamageTypes.Fire, 3.0f);
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 CDamageable_Sums_All_Modifiers()
+ 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.TakeDamage(input);
-
- // 10*1.0 + 10*0.5 = 15
- AssertFloat(result.Damage.DamageDealt).IsEqual(15.0f);
- }
-
- [TestCase]
- public void CDamageable_ComputeDamage_DoesNotEmit()
- {
- var mod = new RDamageModifier(EDamageTypes.Normal, 2.0f);
- var cDamageable = new CDamageable();
- cDamageable.DamageModifiers = new[] { mod };
-
- var input = new DamageRecord(Vector3.Zero, new RDamage(5.0f, EDamageTypes.Normal));
var result = cDamageable.ComputeDamage(input);
- AssertFloat(result.Damage.DamageDealt).IsEqual(10.0f);
+
+ AssertFloat(result.Damage.DamageDealt).IsEqual(15.0f);
+ AssertBool(signalTriggered).IsFalse();
}
}
diff --git a/tests/components/HealthComponentUnitTest.cs b/tests/components/HealthComponentUnitTest.cs
index c054ccd9..63d1cb0e 100644
--- a/tests/components/HealthComponentUnitTest.cs
+++ b/tests/components/HealthComponentUnitTest.cs
@@ -14,7 +14,6 @@ public class HealthComponentUnitTest
{
var cHealth = new CHealth();
cHealth.RHealth = new RHealth(150.0f);
- // Simulate Godot ready
cHealth._Ready();
AssertFloat(cHealth.CurrentHealth).IsEqual(150.0f);
}
diff --git a/tests/components/KnockbackComponentUnitTest.cs b/tests/components/KnockbackComponentUnitTest.cs
index 71ed316d..605d7f75 100644
--- a/tests/components/KnockbackComponentUnitTest.cs
+++ b/tests/components/KnockbackComponentUnitTest.cs
@@ -2,6 +2,7 @@ using Godot;
using GdUnit4;
using static GdUnit4.Assertions;
using Movementtests.interfaces;
+using Movementtests.systems.damage;
namespace Movementtests.tests;
@@ -9,13 +10,13 @@ namespace Movementtests.tests;
public class KnockbackComponentUnitTest
{
[TestCase]
- public void RegisterAndComputeKnockback_Works_And_Resets()
+ public void RegisterAndComputeKnockback()
{
var cKnock = new CKnockback();
cKnock.RKnockback = new RKnockback(2.0f);
cKnock.GlobalPosition = Vector3.Zero;
- var damage = new DamageRecord(new Vector3(10, 0, 0), new RDamage(0, Movementtests.systems.damage.EDamageTypes.Normal));
+ var damage = new DamageRecord(new Vector3(10, 0, 0), new RDamage(0, EDamageTypes.Normal));
var record = new KnockbackRecord(damage, 1.5f);
cKnock.RegisterKnockback(record);
diff --git a/tests/components/MovementSystemUnitTest.cs b/tests/components/MovementSystemUnitTest.cs
index fc172e23..4e075eef 100644
--- a/tests/components/MovementSystemUnitTest.cs
+++ b/tests/components/MovementSystemUnitTest.cs
@@ -10,12 +10,12 @@ namespace Movementtests.tests;
public class MovementSystemUnitTest
{
[TestCase]
- public void GroundedMovement_Accelerates_And_Applies_Gravity()
+ public void GroundedMovementAcceleratesAndAppliesGravity()
{
var move = new CGroundedMovement();
move.RMovement = new RMovement(speed: 10.0f, acceleration: 1.0f, gravityModifier: 0.5f, targetHeight: 0.0f);
move.WallInFrontRayCast = new RayCast3D();
- move.GlobalPosition = Vector3.Zero;
+ //move.GlobalPosition = Vector3.Zero;
var inputs = new MovementInputs(
Velocity: Vector3.Zero,
@@ -27,6 +27,6 @@ public class MovementSystemUnitTest
var v = move.ComputeVelocity(inputs);
- AssertVector(v).IsEqualApprox(new Vector3(10, -4.9f, 0), new Vector3(0.0001f, 0.0001f, 0.0001f));
+ AssertVector(v).IsEqualApprox(new Vector3(10, -4.9f, 0), new Vector3(0.001f, 0.001f, 0.001f));
}
}
diff --git a/tests/enemies/EnemyUnitTest.cs b/tests/enemies/EnemyUnitTest.cs
index dcdcc598..cbd73410 100644
--- a/tests/enemies/EnemyUnitTest.cs
+++ b/tests/enemies/EnemyUnitTest.cs
@@ -10,7 +10,7 @@ namespace Movementtests.tests;
public class EnemyUnitTest
{
[TestCase]
- public void ComputeDamage_NoComponent_ReturnsZero()
+ public void ComputeDamageNoComponent()
{
var enemy = new Enemy();
var input = new DamageRecord(Vector3.Zero, new RDamage(10.0f, EDamageTypes.Normal));
@@ -20,55 +20,7 @@ public class EnemyUnitTest
}
[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()
+ public void Unstun()
{
var enemy = new Enemy();
enemy.IsStunned = true;