diff --git a/Content.IntegrationTests/Tests/Damageable/DamageTest.cs b/Content.IntegrationTests/Tests/Damage/DamageTest.cs similarity index 77% rename from Content.IntegrationTests/Tests/Damageable/DamageTest.cs rename to Content.IntegrationTests/Tests/Damage/DamageTest.cs index 3cc065aac4..caeea3865a 100644 --- a/Content.IntegrationTests/Tests/Damageable/DamageTest.cs +++ b/Content.IntegrationTests/Tests/Damage/DamageTest.cs @@ -147,5 +147,53 @@ namespace Content.IntegrationTests.Tests.Damageable } }); } + + [Test] + public async Task TotalDamageTest() + { + var server = StartServerDummyTicker(new ServerContentIntegrationOption + { + ExtraPrototypes = Prototypes + }); + + await server.WaitIdleAsync(); + + var sEntityManager = server.ResolveDependency(); + var sMapManager = server.ResolveDependency(); + + IEntity sDamageableEntity; + IDamageableComponent sDamageableComponent = null; + + await server.WaitPost(() => + { + var mapId = sMapManager.NextMapId(); + var coordinates = new MapCoordinates(0, 0, mapId); + sMapManager.CreateMap(mapId); + + sDamageableEntity = sEntityManager.SpawnEntity(DamageableEntityId, coordinates); + sDamageableComponent = sDamageableEntity.GetComponent(); + }); + + await server.WaitAssertion(() => + { + var damageType = DamageClass.Brute; + var damage = 10; + + Assert.True(sDamageableComponent.ChangeDamage(DamageClass.Brute, damage, true)); + Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(10)); + + var totalTypeDamage = 0; + + foreach (var type in damageType.ToTypes()) + { + Assert.True(sDamageableComponent.TryGetDamage(type, out var typeDamage)); + Assert.That(typeDamage, Is.LessThanOrEqualTo(damage)); + + totalTypeDamage += typeDamage; + } + + Assert.That(totalTypeDamage, Is.EqualTo(damage)); + }); + } } }