public void Construction_GivenTwoArmiesEngageInWarArmyWithLastManStandingWins() { // army1 var soldiers1 = new[] { new Soldier("soldier1", Weapon.BareFist), new Soldier("soldier2", Weapon.Axe) }; var attacker = new Army(hqMock.Object); foreach (var soldier in soldiers1) { attacker.Enroll(soldier); } // army2 var soldiers2 = new[] { new Soldier("soldier2", Weapon.Spear), new Soldier("soldier3", Weapon.BareFist) }; var defender = new Army(hqMock.Object); foreach (var soldier in soldiers2) { defender.Enroll(soldier); } var war = new War(attacker, defender, hqMock.Object); var winner = war.GetWinner(); winner.Should().Be(attacker); }
public void Construction_GivenAnArmyWinsNumberOfRemainingSoldiersIsReported() { // army1 var soldiers1 = new[] { new Soldier("soldier1", Weapon.BareFist), new Soldier("soldier2", Weapon.Axe) }; var attacker = new Army(hqMock.Object); foreach (var soldier in soldiers1) { attacker.Enroll(soldier); } // army2 var soldiers2 = new[] { new Soldier("soldier1", Weapon.Sword), new Soldier("soldier2", Weapon.Spear), new Soldier("soldier3", Weapon.BareFist) }; var defender = new Army(hqMock.Object); foreach (var soldier in soldiers2) { defender.Enroll(soldier); } var war = new War(attacker, defender, hqMock.Object); var winner = war.GetWinner(); hqMock.Verify(x => x.ReportVictory(winner.Soldiers.Count), Times.Once); }