public void ShouldPerformMoveAction()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleStatus = BattleStatus.InBattle,
             BattleMode = BattleMode.PlayerVsComputer
         },
         Player = new Player()
     };
     g.Player.SetName("Player");
     g.CurrentBattleDetails.Participants.Add(new Participant
     {
         Character = g.Player,
         Status = ParticipantStatus.InBattle
     });
     var b = new Dumbass();
     b.SetName("Dumbass");
     g.CurrentBattleDetails.Participants.Add(new Participant
     {
         Character = b,
         Status = ParticipantStatus.InBattle
     });
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
     var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
     var actions = g.Player.TargetTileAndSelectActions(tile);
     g.PerformPlayerAction(actions.Find(i => i.Name == "Run"));
     Assert.IsTrue(g.Player.ArenaLocation == tile);
     Assert.IsTrue(g.Player.CurrentAvailableActions == null);
 }
 public void ShouldPurchaeItems()
 {
     var b = new Dumbass();
     b.LevelUp();
     b.SetCash(100);
     b.BuyItems();
 }
        public void ShouldThrowExceptionIfBattleOverAndActionPerformed()
        {
            var g = new Game
            {
                CurrentBattleDetails = new BattleDetails
                {
                    BattleStatus = BattleStatus.InBattle,
                    BattleMode = BattleMode.PlayerVsComputer
                },
                Player = new Player()
            };
            g.Player.SetName("Player");
            g.Player.ChangeAlliance(Alliance.TeamOne);
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Character = g.Player,
                Status = ParticipantStatus.InBattle
            });
            var b = new Dumbass();
            b.ChangeAlliance(Alliance.TeamTwo);
            b.SetName("Dumbass");
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Character = b,
                Status = ParticipantStatus.InBattle
            });
            g.EndBattle(Alliance.TeamOne);

            g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, 0, 0);
            var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
            var actions = g.Player.TargetTileAndSelectActions(tile);
            g.PerformPlayerAction(actions.Find(i => i.Name == "Run"));
        }
 public void ShouldAddOpponentToDefaultPosition()
 {
     var b = new Dumbass();
     var a = new Arena();
     a.BuildArenaFloor(5);
     a.AddCharacterToArena(b, Alliance.TeamTwo);
     Assert.IsTrue(b.ArenaLocation.GetTileLocation().XCoord == 4 && b.ArenaLocation.GetTileLocation().YCoord == 0);
 }
 public void ShouldChooseMultipleSkillsWhenLevelUpTwice()
 {
     var b = new Dumbass();
     b.LevelUp();
     Assert.IsTrue(b.SkillTree.Get().Where(i => i.IsActive).ToList().Count == 1);
     b.LevelUp();
     Assert.IsTrue(b.SkillTree.Get().Where(i => i.IsActive).ToList().Count == 2);
 }
 public void WizardBotShouldPurchaseCasterItems()
 {
     var b = new Dumbass();
     b.AddSkillPoints(1);
     b.ChooseSkill(new PathOfTheWizard());
     b.AddCash(100);
     b.BuyItems();
     Assert.IsTrue(b.CharacterEquipment.TrueForAll(i => i.EquipmentSubTypes.Contains(EquipmentSubType.Caster)));
 }
 public void FighterBotShouldPurchaseFighterItems()
 {
     var b = new Dumbass();
     b.AddSkillPoints(1);
     b.ChooseSkill(new PathOfTheFighter());
     b.AddCash(100);
     b.BuyItems();
     Assert.IsTrue(b.CharacterEquipment.TrueForAll(i => i.EquipmentSubTypes.Exists(j => j == EquipmentSubType.DefensiveFighter || j == EquipmentSubType.OffensiveFighter)));
 }
 public void ShouldMakeSureParticipantNamesUnique()
 {
     var t = new Tournament();
     var c = new Dumbass();
     c.SetName("Idiot");
     t.AddCharacterToTournament(c);
     var d = new Dumbass();
     d.SetName("Idiot");
     t.AddCharacterToTournament(d);
     Assert.IsTrue(t.Participants.Count == 2 && t.Participants.Count(i => i.Character.Name == "Idiot") == 1);
 }
 public void ShouldAddDumbassBotToArena()
 {
     var arena = new Arena();
     arena.BuildArenaFloor(5);
     var p = new Player();
     EquipmentHelper.EquipEquipment(p, new Sword());
     arena.AddCharacterToArena(p, Alliance.TeamOne);
     var b = new Dumbass();
     b.SetName("Dumbass Bot");
     EquipmentHelper.EquipEquipment(b, new Sword());
     arena.AddCharacterToArena(b, Alliance.TeamTwo);
 }
        public void ShouldNotHaveAttackActionWhenOutOfRange()
        {
            var a = new Arena();
            a.BuildArenaFloor(10);
            var c = new Player();
            a.AddCharacterToArena(c, Alliance.TeamOne, 0, 0);
            var o = new Dumbass();
            a.AddCharacterToArena(o, Alliance.TeamTwo, 5, 5);
            var e = new Sword();
            EquipmentHelper.EquipEquipment(c, e);
            var tile = a.SelectFloorTile(o.ArenaLocation.GetTileLocation());
            var actions = c.TargetTileAndSelectActions(tile);

            Assert.IsFalse(actions.Exists(i => i.Name == "Swing"));
        }
 public void ShouldPerformMoveActionWhenOutOfAttackRange()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamTwo
         },
         Player = new Player()
     };
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
     var b = new Dumbass();
     b.LevelUp();
     g.CurrentBattleDetails.Arena.AddCharacterToArena(b, Alliance.TeamTwo, 4, 4);
     g.PerformAITurn();
     var endPosition = b.ArenaLocation.GetTileLocation();
     Assert.IsTrue(endPosition.XCoord != 4 && endPosition.YCoord != 4);
 }
 public void ShouldThrowExceptionIfTournamentStartedWithoutEnoughValidParticipants()
 {
     var t = new Tournament();
     var c1 = new Dumbass();
     c1.SetName("1");
     t.Participants.Add(new Participant
     {
         Battles = 5,
         Character = c1,
         Status = ParticipantStatus.Active
     });
     var c2 = new Dumbass();
     c2.SetName("2");
     t.Participants.Add(new Participant
     {
         Battles = 1,
         Character = c2,
         Status = ParticipantStatus.KnockedOut
     });
     t.Start();
 }
 public void ShouldHaveHealActionOnSelf()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.Player.LevelUp();
     g.Player.ChooseSkill(new PathOfTheWizard());
     g.Player.AddAction(new LittleHeal());
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne);
     var c = new Dumbass();
     g.CurrentBattleDetails.Arena.AddCharacterToArena(c, Alliance.TeamTwo);
     var actions = g.Player.TargetTileAndSelectActions(g.Player.ArenaLocation);
     Assert.IsTrue(actions.Exists(i => i is LittleHeal));
 }
 public void ShouldLevelPlayerUpWhenBotDefeated()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.Player.SetName("Player");
     var b = new Dumbass();
     b.SetName("Idiot");
     g.Tournament.AddCharacterToTournament(b);
     g.StartPlayerVsComputerTournament();
     g.CurrentBattleDetails.Arena.Characters.First(i => i is Dumbass).LoseHealth(200);
     g.EndBattle(g.Player.GetAlliance());
     g.ProcessBattleOver();
     Assert.IsTrue(g.Player.GetLevel() == 2);
 }
 public void ShouldAddPhysicalDamageToAttack()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     EquipmentHelper.EquipEquipment(g.Player, new ReliableTreeBranch());
     g.Player.AddPhysicalDamage(10);
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
     var o = new Dumbass();
     g.CurrentBattleDetails.Arena.AddCharacterToArena(o, Alliance.TeamTwo, 0, 1);
     var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
     var actions = g.Player.TargetTileAndSelectActions(tile);
     g.PerformPlayerAction(actions.Find(i => i.Name == "Swing"));
     Assert.IsTrue(o.Health == 60);
 }
        public void ShouldAddMagicDamagePercentageToSpell()
        {
            var g = new Game
            {
                CurrentBattleDetails = new BattleDetails
                {
                    BattleMode = BattleMode.PlayerVsComputer,
                    BattleStatus = BattleStatus.InBattle,
                    BattleTurn = Alliance.TeamOne
                },
                Player = new Player()
            };
            g.Player.LevelUp();
            g.Player.ChooseSkill(new PathOfTheWizard());
            g.Player.SetName("Player");
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Status = ParticipantStatus.InBattle,
                Character = g.Player
            });
            g.CurrentBattleDetails.Arena.BuildArenaFloor(10);
            g.Player.AddAction(new SpellSpear());
            g.Player.AddMagicDamageBonusPercent(1000);
            g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
            var o = new Dumbass();
            o.SetName("Dumbass");
            g.CurrentBattleDetails.Participants.Add(new Participant
            {
                Status = ParticipantStatus.InBattle,
                Character = o
            });

            g.CurrentBattleDetails.Arena.AddCharacterToArena(o, Alliance.TeamTwo, 0, 1);
            var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
            var actions = g.Player.TargetTileAndSelectActions(tile);
            g.PerformPlayerAction(actions.Find(i => i is SpellSpear));
            Assert.IsTrue(o.Health < 0);
        }
 public void ShouldPerformAttackActionWhenInAttackRange()
 {
     const int playerStartingHealth = 150;
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamTwo
         },
         Player = new Player()
     };
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
     var b = new Dumbass();
     b.LevelUp();
     EquipmentHelper.EquipEquipment(b, new Sword());
     g.CurrentBattleDetails.Arena.AddCharacterToArena(b, Alliance.TeamTwo, 0, 1);
     g.PerformAITurn();
     var endPosition = b.ArenaLocation.GetTileLocation();
     Assert.IsTrue(endPosition.XCoord == 0 && endPosition.YCoord == 1);
     Assert.IsTrue(g.Player.Health < playerStartingHealth);
 }
 public void ShouldPerformSwingAttackAction()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.CurrentBattleDetails.Arena.BuildArenaFloor(10);
     EquipmentHelper.EquipEquipment(g.Player, new Sword());
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne, 0, 0);
     var o = new Dumbass();
     Assert.IsTrue(o.Health == 100);
     g.CurrentBattleDetails.Arena.AddCharacterToArena(o, Alliance.TeamTwo, 0, 1);
     var tile = g.CurrentBattleDetails.Arena.SelectFloorTile(new ArenaFloorPosition(0, 1));
     var actions = g.Player.TargetTileAndSelectActions(tile);
     g.PerformPlayerAction(actions.Find(i => i.Name == "Swing"));
     Assert.IsTrue(o.Health < 100);
     Assert.IsTrue(g.Player.CurrentAvailableActions == null);
 }
 public void ShouldResetCharacterAfterBattle()
 {
     const int playerStartingHealth = 150;
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.Player.SetName("Player");
     var b = new Dumbass();
     b.SetName("Idiot");
     g.Tournament.AddCharacterToTournament(b);
     g.StartPlayerVsComputerTournament();
     g.CurrentBattleDetails.Arena.Characters.First(i => i is Player).LoseHealth(50);
     Assert.IsTrue(g.Player.Health == playerStartingHealth - 50);
     g.EndBattle(g.Player.GetAlliance());
     g.ProcessBattleOver();
     Assert.IsTrue(g.Player.Health == playerStartingHealth);
 }
 public void ShouldChangeAlliance()
 {
     var bot = new Dumbass();
     bot.ChangeAlliance(Alliance.TeamOne);
     Assert.IsTrue(bot.GetAlliance() == Alliance.TeamOne);
 }
 public void ShouldNotHaveAttackSpellActionOnSelf()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.Player.AddAction(new SpellSpear());
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne);
     var c = new Dumbass();
     g.CurrentBattleDetails.Arena.AddCharacterToArena(c, Alliance.TeamTwo);
     var actions = g.Player.TargetTileAndSelectActions(g.Player.ArenaLocation);
     Assert.IsFalse(actions.Exists(i => i is SpellSpear));
 }
 public void ShouldDealDamageWhenAttackCast()
 {
     var g = new Game
     {
         CurrentBattleDetails = new BattleDetails
         {
             BattleMode = BattleMode.PlayerVsComputer,
             BattleStatus = BattleStatus.InBattle,
             BattleTurn = Alliance.TeamOne
         },
         Player = new Player()
     };
     g.Player.LevelUp();
     g.Player.ChooseSkill(new PathOfTheWizard());
     g.CurrentBattleDetails.Arena.AddCharacterToArena(g.Player, Alliance.TeamOne);
     g.Player.AddAction(new SpellSpear());
     var c = new Dumbass();
     g.CurrentBattleDetails.Arena.AddCharacterToArena(c, Alliance.TeamTwo, 0, 2);
     var actions = g.Player.TargetTileAndSelectActions(c.ArenaLocation);
     g.PerformPlayerAction(actions.First(i => i is SpellSpear));
     Assert.IsTrue(c.Health < 100);
 }
        public void ShouldRegeneratePercentageBasedHealth()
        {
            var b = new Dumbass();

            Assert.IsTrue(true);
        }
 public void ShouldNotRegenerateHealthAboveMaxHealth()
 {
     var b = new Dumbass();
     Assert.IsTrue(true);
 }
 public void ShouldBeAssignedRandomName()
 {
     var b = new Dumbass();
     Assert.IsTrue(!string.IsNullOrEmpty(b.Name));
 }