Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }