public void RoundEngine_OrderPlayerListByTurnOrder_Speed_Higher_Should_Pass()
        {
            // Arrange
            var Monster = new MonsterModel
            {
                Speed           = 20,
                Level           = 20,
                CurrentHealth   = 100,
                ExperienceTotal = 1000,
                Name            = "Z",
                ListOrder       = 1,
                Guid            = "me"
            };

            var MonsterPlayer = new PlayerInfoModel(Monster);

            Engine.MonsterList.Clear();
            Engine.MonsterList.Add(MonsterPlayer);

            var Character = new CharacterModel
            {
                Speed           = 1,
                Level           = 1,
                CurrentHealth   = 2,
                ExperienceTotal = 1,
                Name            = "C",
                ListOrder       = 10
            };

            var CharacterPlayer = new PlayerInfoModel(Character);

            Engine.CharacterList.Clear();
            Engine.CharacterList.Add(CharacterPlayer);

            // Make the List
            Engine.PlayerList = Engine.MakePlayerList();

            // Sort the list by Current Health, so it has to be resorted.
            Engine.PlayerList = Engine.PlayerList.OrderBy(m => m.CurrentHealth).ToList();

            // Act
            var result = Engine.OrderPlayerListByTurnOrder(1);

            // Reset

            // Assert
            Assert.AreEqual("me", result[0].Guid);
        }
        public void HakathonScenario_15_Slowest_First_Should_Pass()
        {
            /*
             * Scenario Number:
             *      #15
             *
             * Description:
             *      On a 20% chance the slowest creatures and players will move first instead of fastest
             *
             * Changes Required (Classes, Methods etc.)  List Files, Methods, and Describe Changes:
             *      AboutPage.Xaml
             *      AboutPage.Xaml.cs
             *      RoundEngine.cs
             *      OrderPlayerListByTurnOrder()
             *
             * Test Algrorithm:
             *      Set the "AlwaysSlowest" variable to true to ensure that the slowest goes first.
             *      Add 2 monsters
             *      Check list order for slowest
             *
             * Test Conditions:
             *      Slowest activated - Slowest first
             *      Slowest not activated - Slowest second
             *
             * Validation:
             *      Validate that the slowest goes first in the list. Validate the slowest is at index 1
             */
            var Monster = new BaseMonster
            {
                Speed      = 20,
                CurrHealth = 12,
                Name       = "A",
            };

            var MonsterPlayer = new PlayerInfoModel(Monster);
            var saveMonster   = Engine.MonsterList;

            Engine.MonsterList.Clear();
            Engine.MonsterList.Add(MonsterPlayer);

            var Character = new BaseCharacter
            {
                Speed      = 1,
                CurrHealth = 10,
                Name       = "B",
            };

            var CharacterPlayer = new PlayerInfoModel(Character);
            var saveCharacter   = Engine.CharacterList;

            Engine.CharacterList.Clear();
            Engine.CharacterList.Add(CharacterPlayer);

            // Make the List
            Engine.PlayerList = Engine.MakePlayerList();

            // Sort the list by Current Health, so it has to be resorted.
            Engine.PlayerList  = Engine.PlayerList.OrderBy(m => m.CurrHealth).ToList();
            Engine.SpeedAlways = true;


            var result = Engine.OrderPlayerListByTurnOrder();

            // Reset
            Engine.CharacterList = saveCharacter;
            Engine.MonsterList   = saveMonster;

            // Assert
            Assert.AreEqual("B", result[0].Name);
            Assert.AreEqual("A", result[1].Name);
        }
        public void HackathonScenario_Scenario_30_First_Character_Should_Have_Buff()
        {
            /*
             * Scenario Number:
             *      30
             *
             * Description:
             *      The first player in the player list gets their base attack, speed, defense
             *      values buffed by 2X for the first time they are first in the list.
             *
             * Changes Required (Classes, Methods etc.)  List Files, Methods, and Describe Changes:
             *      See Defualt Test
             *
             * Test Algrorithm:
             *      Create 2 Characters named Bugs and Michael.
             *      Add them to the Player List.
             *      Order the Player List.
             * Test Conditions:
             *      Control Dice roll so natural hit
             *      Test with Character of not named Bob
             *
             *  Validation
             *      Verify Enum is Hit
             *
             */

            //Arrange

            // Set Character Conditions

            BattleEngine.MaxNumberPartyCharacters = 2;
            int tempSpeed   = 200;
            int tempAttack  = 1;
            int tempDefense = 1;

            var CharacterPlayer1 = new PlayerInfoModel(
                new CharacterModel
            {
                Speed               = 200,
                Level               = 1,
                CurrentHealth       = 100,
                ExperienceTotal     = 100,
                ExperienceRemaining = 1,
                Defense             = 1,
                Attack              = 1,
                Name = "Bugs",
            });
            var CharacterPlayer2 = new PlayerInfoModel(
                new CharacterModel
            {
                Speed               = 200,
                Level               = 1,
                CurrentHealth       = 100,
                ExperienceTotal     = 100,
                ExperienceRemaining = 1,
                Attack              = 1,
                Defense             = 1,
                Name = "Michael",
            });

            BattleEngine.PlayerList.Add(CharacterPlayer1);
            BattleEngine.PlayerList.Add(CharacterPlayer2);

            // Set Monster Conditions



            //Act
            var result = BattleEngine.OrderPlayerListByTurnOrder();

            //Reset
            DiceHelper.DisableForcedRolls();

            //Assert
            Assert.AreEqual(((tempSpeed + result[0].GetSpeedLevelBonus) * 2), result[0].Speed);
            Assert.AreEqual(((tempAttack + result[0].GetAttackLevelBonus) * 2), result[0].Attack);
            Assert.AreEqual(((tempDefense + result[0].GetDefenseLevelBonus) * 2), result[0].Defense);
        }