public void CorrectlyPrintsMessage_StatBonusAdded([Values] StatType statType, [Values(1, 3)] int bonusAmount)
        {
            StatBonusAppliedEventArgs e = new StatBonusAppliedEventArgs(statType, bonusAmount, false);

            _fighter.OnStatBonusApplied(e);

            MockOutputMessage[] outputs = _output.GetOutputs();

            Assert.AreEqual(1, outputs.Length);

            MockOutputMessage output = outputs[0];

            Assert.AreEqual($"{_fighter.DisplayName} gained +{bonusAmount} {statType.ToString().ToLower()}\n", output.Message);
        }
        public void CorrectlySubscribesToMultipleFighters()
        {
            _output = new MockOutput();
            EventHandlerPrinter printer = new EventHandlerPrinter(_output);

            HumanFighter fighter2 = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1);
            HumanFighter fighter3 = (HumanFighter)FighterFactory.GetFighter(FighterType.HumanControlledPlayer, 1);

            printer.Subscribe(_fighter, fighter2, fighter3);

            StatBonusAppliedEventArgs e = new StatBonusAppliedEventArgs(StatType.Defense, 2, false);

            _fighter.OnStatBonusApplied(e);
            fighter2.OnStatBonusApplied(e);
            fighter3.OnStatBonusApplied(e);

            MockOutputMessage[] outputs = _output.GetOutputs();

            Assert.AreEqual(3, outputs.Length);
        }