public void EnttiyEntering_TargetedTrap_ChangesHealth(EntityType entityType, TrapTargetType trapTargetType, int expectedHealthChange) { //Arrange var trap = new Trap(); var player = Substitute.For <IEntity>(); player.entityType.Returns(entityType); var startingHealth = player.health; //Act trap.HandleCharacterEntered(player, trapTargetType); //Assert Assert.AreEqual(expectedHealthChange, player.health - startingHealth); }
public void HandleCharacterEntered(IEntity target, TrapTargetType trapTargetType) { switch (trapTargetType) { case TrapTargetType.Player: if (target.entityType == EntityType.Player) { Debug.Log("Damaged player"); target.health--; } break; case TrapTargetType.Npc: if (target.entityType == EntityType.Npc) { Debug.Log("Damaged npc"); target.health--; } break; case TrapTargetType.Animal: if (target.entityType == EntityType.Animal) { Debug.Log("Damaged Animal"); target.health++; } break; case TrapTargetType.Any: Debug.Log("Damaged Anonymous"); target.health--; break; default: throw new ArgumentOutOfRangeException(nameof(trapTargetType), trapTargetType, null); } }