Пример #1
0
        public void RoundEngine_RoundNextTurn_2Characters_1Monster_Weak_Should_Take_2_Turns()
        {
            MockForms.Init();

            bool reincarnation = GameGlobals.EnableReincarnation;

            GameGlobals.EnableReincarnation = false;

            // Can create a new Round engine...
            var myRoundEngine = new RoundEngine();

            // Start
            myRoundEngine.StartRound();

            // Add moderate monsters
            // First monster
            myRoundEngine.MonsterList.Clear();  // start fresh, because it was loaded already with 6...

            var myMonsterWeak = new Monster(DefaultModels.MonsterDefault());

            myMonsterWeak.ScaleLevel(5);
            myMonsterWeak.Attribute.CurrentHealth = 7; // need to set to enough to last 2 rounds...

            myRoundEngine.MonsterList.Add(myMonsterWeak);

            // Add weak character for first...
            var myCharacterWeak = new Character(DefaultModels.CharacterDefault());

            myCharacterWeak.ScaleLevel(10);
            myRoundEngine.CharacterList.Add(myCharacterWeak);

            // Add strong character for second
            var myCharacterStrong = new Character(DefaultModels.CharacterDefault());

            myCharacterStrong.ScaleLevel(20);
            myRoundEngine.CharacterList.Add(myCharacterStrong);

            // Should be Character 20, Character 10, Monster 5

            // Force rolls to 18 for to hit...
            // Turn off random numbers
            GameGlobals.SetForcedRandomNumbersValueAndToHit(1, 18);

            // Character, should kill the monster in the first round.
            // So the check for the second round will say Round over...
            var FirstRound  = myRoundEngine.RoundNextTurn();    // Character 20 Goes
            var SecondRound = myRoundEngine.RoundNextTurn();    // Character 10 Goes
            var Actual      = myRoundEngine.RoundNextTurn();    // Over...


            // Reset
            GameGlobals.ToggleRandomState();

            var Expected = RoundEnum.NextTurn;

            Assert.AreEqual(Expected, Actual, "Status " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(3, myRoundEngine.BattleScore.TurnCount, "TurnCount " + TestContext.CurrentContext.Test.Name);
            //Assert.AreEqual(4, myRoundEngine.BattleScore.RoundCount, "RoundCount " + TestContext.CurrentContext.Test.Name);
            GameGlobals.EnableReincarnation = reincarnation;
        }
Пример #2
0
        public async Task ViewModel_ItemsViewModel_InsertUpdateAsync_Update_Data_Should_Pass()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new ItemsViewModel();
            var myData      = DefaultModels.ItemDefault(ItemLocationEnum.Feet, AttributeEnum.Attack);
            await myViewModel.AddAsync(myData);

            // Update existing
            var Value = "updated";

            myData.Name = Value;
            var myReturn = await myViewModel.InsertUpdateAsync(myData);

            var Actual = await myViewModel.GetAsync(myData.Id);

            string Expected = Value;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual.Name, TestContext.CurrentContext.Test.Name);
        }
Пример #3
0
        public async Task ViewModel_MonstersViewModel_UpdateData_Should_Pass()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new MonstersViewModel();
            var myData      = DefaultModels.MonsterDefault();
            await myViewModel.AddAsync(myData);

            var value = "new";

            myData.Name = value;
            var myReturn = myViewModel.UpdateAsync(myData);

            var Actual = await myViewModel.GetAsync(myData.Id);

            string Expected = value;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual.Name, TestContext.CurrentContext.Test.Name);
        }
Пример #4
0
        public void TurnEngine_DetermineCriticalMissProblem_Attacker_Null_Roll_1_Should_Return_Nothing_Broke()
        {
            MockForms.Init();

            // Turn off random numbers
            // Set random to 1, and to hit to 1
            GameGlobals.SetForcedRandomNumbers(1, 1);
            GameGlobals.ForcedRandomValue = 1;

            var myTurnEngine = new TurnEngine();

            var myCharacter = new Character(DefaultModels.CharacterDefault());

            myCharacter.PrimaryHand = null; // Nothing in the hand, so nothing to drop...

            var Actual = myTurnEngine.DetermineCriticalMissProblem(myCharacter);

            // Should roll for 1 item, and return it...
            var Expected = " Luckly, nothing to drop from PrimaryHand";

            // Reset
            GameGlobals.ToggleRandomState();

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #5
0
        public void TurnEngine_DetermineCriticalMissProblem_Attacker_Sword_Roll_1_Should_Return_Sword_Broke()
        {
            MockForms.Init();

            // Turn off random numbers
            // Set random to 1, and to hit to 1
            GameGlobals.SetForcedRandomNumbers(1, 1);
            GameGlobals.ForcedRandomValue = 1;

            var myTurnEngine = new TurnEngine();

            var myCharacter = new Character(DefaultModels.CharacterDefault());

            var itemGuid = ItemHelper.AddItemForAttribute(AttributeEnum.Attack, ItemLocationEnum.PrimaryHand, 1000).Guid;
            var myItem   = ItemsViewModel.Instance.GetItem(itemGuid);

            myCharacter.PrimaryHand = itemGuid; // Nothing in the hand, so nothing to drop...

            var Actual = myTurnEngine.DetermineCriticalMissProblem(myCharacter);

            var Expected = " Item " + myItem.Name + " from " + ItemLocationEnum.PrimaryHand + " Broke, and lost forever";

            // Reset
            GameGlobals.ToggleRandomState();

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #6
0
        public void Model_Item_Update_With_Change_Should_Pass()
        {
            var Actual     = DefaultModels.ItemDefault(ItemLocationEnum.Feet, AttributeEnum.Attack);
            var myActualId = Actual.Id;

            var Expected = DefaultModels.ItemDefault(ItemLocationEnum.Head, AttributeEnum.Speed);

            Expected.ImageURI    = "new uri";
            Expected.Name        = "new name";
            Expected.Description = "new description";
            Expected.Range       = 11;
            Expected.Value       = 22;
            Expected.Damage      = 33;

            Actual.Update(Expected);

            // Should not change with update...
            Assert.AreEqual(Actual.Id, myActualId, "Id " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Actual.Guid, Actual.Id, "Guid " + TestContext.CurrentContext.Test.Name);

            // Rest should match default for same request
            Assert.AreEqual(Expected.Attribute, Actual.Attribute, "Attribute " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Expected.Damage, Actual.Damage, "Damage " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Expected.Description, Actual.Description, "Description " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Expected.ImageURI, Actual.ImageURI, "ImageURI " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Expected.Location, Actual.Location, "Location " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Expected.Name, Actual.Name, "Name " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Expected.Range, Actual.Range, "Range " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(Expected.Value, Actual.Value, "Value " + TestContext.CurrentContext.Test.Name);
        }
Пример #7
0
        public void Model_Item_FormatOutput_Name_WithSpace_Should_Pass()
        {
            Item myData;

            foreach (var attribute in AttributeList.GetListItem)
            {
                var attributeEnum = AttributeList.ConvertStringToEnum(attribute);

                foreach (var location in ItemLocationList.GetListItem)
                {
                    var locationEnum = ItemLocationList.ConvertStringToEnum(location);

                    myData = DefaultModels.ItemDefault(locationEnum, attributeEnum);

                    // Add leading space to name, to test the trim...
                    myData.Name = " " + myData.Name;

                    var Expected = "Item for " + location + " , Auto Created for " + location + " with " + attribute + "+" + myData.Value + " , Damage : " + myData.Damage + " , Range : " + myData.Range;

                    var Actual = myData.FormatOutput();

                    Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
                }
            }
        }
Пример #8
0
        public void Model_Item_Instantiate_Should_Pass()
        {
            // Walk all the Attributes and Locations and make an Item for each one
            // Verify the properties.

            Item myData;

            foreach (var attribute in AttributeList.GetListItem)
            {
                var attributeEnum = AttributeList.ConvertStringToEnum(attribute);

                foreach (var location in ItemLocationList.GetListItem)
                {
                    var locationEnum = ItemLocationList.ConvertStringToEnum(location);

                    myData = DefaultModels.ItemDefault(locationEnum, attributeEnum);


                    Assert.AreEqual(locationEnum, myData.Location, "location: " + location + " " + TestContext.CurrentContext.Test.Name);
                    Assert.AreEqual(attributeEnum, myData.Attribute, "attribute: " + attribute + " " + TestContext.CurrentContext.Test.Name);

                    Assert.AreEqual(1, myData.Value, "value " + TestContext.CurrentContext.Test.Name);
                    Assert.AreEqual(1, myData.Damage, "damage " + TestContext.CurrentContext.Test.Name);
                    Assert.AreEqual(1, myData.Range, "range " + TestContext.CurrentContext.Test.Name);


                    Assert.AreEqual("Item for " + location, myData.Name, "Name " + TestContext.CurrentContext.Test.Name);
                    Assert.AreEqual("Auto Created", myData.Description, "Description " + TestContext.CurrentContext.Test.Name);
                    Assert.AreEqual(null, myData.ImageURI, "range " + TestContext.CurrentContext.Test.Name);
                }
            }
        }
Пример #9
0
        public void TurnEngine_Turn_AttackChoice_Monster_Valid_Attacker_Valid_Defender_Alive_False_Should_Skip()
        {
            // Arrange
            var Attacker = DefaultModels.MonsterDefault();

            var myDefaultCharacter = new Character(DefaultModels.CharacterDefault());

            myDefaultCharacter.Name = "Fighter";
            myDefaultCharacter.ScaleLevel(20);
            myDefaultCharacter.Alive = false; //dead...

            var myTurnEngine = new TurnEngine();

            myTurnEngine.CharacterList.Add(myDefaultCharacter);

            object Expected = null;

            // Act
            var Actual = myTurnEngine.AttackChoice(Attacker);

            // Reset

            // Assert

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #10
0
        public void TurnEngine_TurnAsAttack_Monster_Attack_DefenderList_Miss_Should_Pass()
        {
            MockForms.Init();

            // Turn off random numbers
            GameGlobals.SetForcedRandomNumbersValueAndToHit(1, 20);

            var Attacker = DefaultModels.MonsterDefault();

            Attacker.Name = "Rat";

            var myDefaultCharacter = new Character(DefaultModels.CharacterDefault());

            myDefaultCharacter.Name = "Fighter";
            myDefaultCharacter.ScaleLevel(20);

            var myTurnEngine = new TurnEngine();

            myTurnEngine.CharacterList.Add(myDefaultCharacter);

            GameGlobals.ForceToHitValue = 2; // Force a miss

            var AttackScore  = Attacker.Level + Attacker.GetAttack();
            var DefenseScore = myDefaultCharacter.GetDefense() + myDefaultCharacter.Level;

            var Status = myTurnEngine.TurnAsAttack(Attacker, AttackScore, myDefaultCharacter, DefenseScore);

            var  Actual   = Status;
            bool Expected = true;

            // Reset
            GameGlobals.ToggleRandomState();

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #11
0
        public void TurnEngine_TurnAsAttack_Monster_Attack_DefenderList_CriticalMiss_Should_Pass()
        {
            // Turn off random numbers
            GameGlobals.SetForcedRandomNumbers(1, 20);

            var Attacker = DefaultModels.MonsterDefault();

            Attacker.Name = "Rat";

            var myDefaultCharacter = DefaultModels.CharacterDefault();

            myDefaultCharacter.Name = "Fighter";

            var myTurnEngine = new TurnEngine();

            myTurnEngine.CharacterList.Add(myDefaultCharacter);

            GameGlobals.ForceToHitValue = 1; // Force a miss

            var AttackScore  = Attacker.Level + Attacker.GetAttack();
            var DefenseScore = myDefaultCharacter.GetDefense() + myDefaultCharacter.Level;

            var  Status   = myTurnEngine.TurnAsAttack(Attacker, AttackScore, myDefaultCharacter, DefenseScore);
            var  Actual   = Status;
            bool Expected = true;

            var ActualString = myTurnEngine.TurnMessage;
            var ActualResult = myTurnEngine.HitStatus;
            var ActualDamage = myTurnEngine.DamageAmount;

            // Reset
            GameGlobals.ToggleRandomState();

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #12
0
        public async Task ViewModel_MessageCenter_ItemsViewModel_MessageCenter_UpdateData_Should_Pass()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new ItemsViewModel();
            var myData      = DefaultModels.ItemDefault(ItemLocationEnum.Feet, AttributeEnum.Attack);
            await myViewModel.AddAsync(myData);

            var value = "new";

            myData.Name = value;

            var myPage = new EditItemPage(new ItemDetailViewModel(new Item()));

            MessagingCenter.Send(myPage, "EditData", myData);

            var Actual = await myViewModel.GetAsync(myData.Id);

            string Expected = value;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual.Name, TestContext.CurrentContext.Test.Name);
        }
        public void ViewModel_ItemsViewModel_ChooseRandomItemString_With_No_Match_Should_Return_Null()
        {
            MockForms.Init();

            var myData = new ItemsViewModel();

            // Load Data
            myData.ForceDataRefresh();
            myData.Dataset.Clear();

            // Make an item for the feet
            var myItem = DefaultModels.ItemDefault(ItemLocationEnum.Feet, AttributeEnum.Attack);

            myData.AddAsync(myItem).GetAwaiter().GetResult();

            // Ask for Any Item for the head
            var    Actual   = myData.ChooseRandomItemString(ItemLocationEnum.Head, AttributeEnum.Unknown);
            string Expected = null;

            // Load Data
            myData.ForceDataRefresh();

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
        public async Task ViewModel_MessageCenter_ScoresViewModel_MessageCenter_AddData_Should_Pass()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new ScoresViewModel();
            var myData      = DefaultModels.ScoreDefault();

            var myPage = new ScoreNewPage();

            MessagingCenter.Send(myPage, "AddData", myData);

            var Actual = await myViewModel.GetAsync(myData.Id);

            var Expected = myData;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected.Id, Actual.Id, TestContext.CurrentContext.Test.Name);
        }
        public void Model_BaseMonster_Update_With_Valid_Data_Should_Pass()
        {
            var myDataDefault = DefaultModels.MonsterDefault();
            var myData        = new BaseMonster();

            myData.Update(myDataDefault);

            // Validate the new BaseMonster has the expected fields.
            // All fields should match.

            // The attirbute string is what is unique about creating from BaseBaseMonster, and should be passed down...
            Assert.AreEqual(myData.UniqueItem, myDataDefault.UniqueItem, "UniqueItem " + TestContext.CurrentContext.Test.Name);

            Assert.AreEqual(myData.Alive, myDataDefault.Alive, "Alive " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Name, myDataDefault.Name, "Name " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Description, myDataDefault.Description, "Description " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Level, myDataDefault.Level, "Level " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.ExperienceTotal, myDataDefault.ExperienceTotal, "ExperienceTotal " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.ImageURI, myDataDefault.ImageURI, "ImageURI " + TestContext.CurrentContext.Test.Name);

            Assert.AreEqual(myData.Head, myDataDefault.Head, "Head " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Feet, myDataDefault.Feet, "Feet " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Necklass, myDataDefault.Necklass, "Necklass " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.RightFinger, myDataDefault.RightFinger, "RightFinger " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.LeftFinger, myDataDefault.LeftFinger, "LeftFinger " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Feet, myDataDefault.Feet, "Feet " + TestContext.CurrentContext.Test.Name);

            // Validate the Attributes
            Assert.AreEqual(myData.AttributeString, myDataDefault.AttributeString, "AttributeString " + TestContext.CurrentContext.Test.Name);

            Assert.AreEqual(myData.Damage, myDataDefault.Damage, "AttributeString " + TestContext.CurrentContext.Test.Name);
        }
        public async Task ViewModel_ScoresViewModel_DeleteData_Should_Pass()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new ScoresViewModel();
            var myData      = DefaultModels.ScoreDefault();
            await myViewModel.AddAsync(myData);

            var myReturn = await myViewModel.DeleteAsync(myData);

            var Actual = await myViewModel.GetAsync(myData.Id);

            Object Expected = null;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #17
0
        public async Task ViewModel_ItemsViewModel_UpdateData_Bogus_Should_Skip()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new ItemsViewModel();
            // Load data
            var canExecute = myViewModel.LoadDataCommand.CanExecute(null);

            myViewModel.LoadDataCommand.Execute(null);

            var myData = DefaultModels.ItemDefault(ItemLocationEnum.Feet, AttributeEnum.Attack);

            // Make the ID bogus...
            var value = "new";

            myData.Id = value;

            var myReturn = await myViewModel.UpdateAsync(myData);

            var  Actual   = myReturn;
            bool Expected = false;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #18
0
        public void BattleEngine_StartBattle_With_Six_Characters_Should_Pass()
        {
            MockForms.Init();

            // Can create a new battle engine...
            var myBattleEngine = new BattleEngine();

            var myCharacter = new Character(DefaultModels.CharacterDefault());

            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter = new Character(DefaultModels.CharacterDefault());
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter = new Character(DefaultModels.CharacterDefault());
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter = new Character(DefaultModels.CharacterDefault());
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter = new Character(DefaultModels.CharacterDefault());
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter = new Character(DefaultModels.CharacterDefault());
            myBattleEngine.CharacterList.Add(myCharacter);

            myBattleEngine.StartBattle(true);

            var Actual   = myBattleEngine.GetAutoBattleState();
            var Expected = true;

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #19
0
        public async Task ViewModel_MonstersViewModel_UpdateData_Bogus_Should_Skip()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new MonstersViewModel();

            myViewModel.ForceDataRefresh();

            var myData = DefaultModels.MonsterDefault();

            // Make the ID bogus...
            var value = "new";

            myData.Id = value;

            var myReturn = await myViewModel.UpdateAsync(myData);

            var  Actual   = myReturn;
            bool Expected = false;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);
            myViewModel.ForceDataRefresh();

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #20
0
        public async Task ViewModel_MessageCenter_MonstersViewModel_MessageCenter_DeleteData_Should_Pass()
        {
            MockForms.Init();

            // Get State of the DataStore, and set to run on the Mock
            var myDataStoreEnum = MasterDataStore.GetDataStoreMockFlag();

            MasterDataStore.ToggleDataStore(DataStoreEnum.Mock);

            var myViewModel = new MonstersViewModel();
            var myData      = DefaultModels.MonsterDefault();
            await myViewModel.AddAsync(myData);

            var myPage = new DeleteMonsterPage(new MonsterDetailViewModel(new Monster()));

            MessagingCenter.Send(myPage, "DeleteData", myData);

            var Actual = await myViewModel.GetAsync(myData.Id);

            Object Expected = null;

            // Return state
            MasterDataStore.ToggleDataStore(myDataStoreEnum);

            // Validate the controller can stand up and has a Title
            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
Пример #21
0
        public void RoundEngine_RoundNextTurn_2_Characters_Should_Return_NextTurn()
        {
            MockForms.Init();

            // No characters, so return should be game over...

            // Can create a new Round engine...
            var myRoundEngine = new RoundEngine();

            // Add 2 monsters
            myRoundEngine.MonsterList.Add(new Monster(DefaultModels.MonsterDefault()));
            myRoundEngine.MonsterList.Add(new Monster(DefaultModels.MonsterDefault()));

            // Add 2 characters
            myRoundEngine.CharacterList.Add(new Character(DefaultModels.CharacterDefault()));
            myRoundEngine.CharacterList.Add(new Character(DefaultModels.CharacterDefault()));

            // Start
            myRoundEngine.StartRound();

            // Do the turn...
            var Actual = myRoundEngine.RoundNextTurn();

            // There are 2 characters, and 2 monsters, so the first turn should happen, and it is now next turn...

            var Expected = RoundEnum.NextTurn;

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }
        public void Model_Monster_GetUniqueItem_Valid_Should_Pass()
        {
            MockForms.Init();

            var myItem = new Item
            {
                Attribute = AttributeEnum.Attack,
                Location  = ItemLocationEnum.Feet,
                Value     = 1
            };

            ItemsViewModel.Instance.AddAsync(myItem).GetAwaiter().GetResult();  // Register Item to DataSet
            var myMonsterItem = ItemsViewModel.Instance.GetItem(myItem.Id);

            var myData        = new Monster();
            var myDataDefault = DefaultModels.MonsterDefault();

            myDataDefault.UniqueItem = myMonsterItem.Guid;

            var Result   = myDataDefault.GetUniqueItem();
            var Expected = myItem;

            // Guids should match up...
            Assert.AreEqual(Expected.Guid, Result.Guid, TestContext.CurrentContext.Test.Name);
        }
        public void Model_Monster_Instantiate_Should_Pass()
        {
            var myData        = new Monster();
            var myDataDefault = DefaultModels.MonsterDefault();

            // Set Monster to be the same as a default Monster

            // Base information
            myData.Name            = myDataDefault.Name;
            myData.Description     = myDataDefault.Description;
            myData.Level           = myDataDefault.Level;
            myData.ExperienceTotal = myDataDefault.ExperienceTotal;
            myData.ImageURI        = myDataDefault.ImageURI;
            myData.Alive           = myDataDefault.Alive;

            // Populate the Attributes
            myData.AttributeString = myDataDefault.AttributeString;

            myData.Attribute.Speed         = myDataDefault.Attribute.Speed;
            myData.Attribute.Defense       = myDataDefault.Attribute.Defense;
            myData.Attribute.Attack        = myDataDefault.Attribute.Attack;
            myData.Attribute.CurrentHealth = myDataDefault.Attribute.CurrentHealth;
            myData.Attribute.MaxHealth     = myDataDefault.Attribute.MaxHealth;

            // Set the strings for the items
            myData.Head        = null;
            myData.Feet        = null;
            myData.Necklass    = null;
            myData.RightFinger = null;
            myData.LeftFinger  = null;
            myData.Feet        = null;

            // Compare Monster to what is expected.
            Assert.AreEqual(myData.Alive, myDataDefault.Alive, "Alive " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Name, myDataDefault.Name, "Name " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Description, myDataDefault.Description, "Description " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Level, myDataDefault.Level, "Level " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.ExperienceTotal, myDataDefault.ExperienceTotal, "ExperienceTotal " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.ImageURI, myDataDefault.ImageURI, "ImageURI " + TestContext.CurrentContext.Test.Name);

            Assert.AreEqual(myData.Head, myDataDefault.Head, "Head " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Feet, myDataDefault.Feet, "Feet " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Necklass, myDataDefault.Necklass, "Necklass " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.RightFinger, myDataDefault.RightFinger, "RightFinger " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.LeftFinger, myDataDefault.LeftFinger, "LeftFinger " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Feet, myDataDefault.Feet, "Feet " + TestContext.CurrentContext.Test.Name);

            //Assert.AreEqual(myData.Damage, myDataDefault.Damage, "Damage " + TestContext.CurrentContext.Test.Name);

            // Validate the Attributes
            Assert.AreEqual(myData.AttributeString, myDataDefault.AttributeString, "AttributeString " + TestContext.CurrentContext.Test.Name);

            Assert.AreEqual(myData.Attribute.Speed, myDataDefault.Attribute.Speed, "Speed " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Attribute.Defense, myDataDefault.Attribute.Defense, "Defense " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Attribute.Attack, myDataDefault.Attribute.Attack, "Attack " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Attribute.CurrentHealth, myDataDefault.Attribute.CurrentHealth, "CurrentHealth " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(myData.Attribute.MaxHealth, myDataDefault.Attribute.MaxHealth, "MaxHealth " + TestContext.CurrentContext.Test.Name);
        }
Пример #24
0
        public void BattleEngine_AutoBattle_With_Six_Characters_Should_Pass()
        {
            MockForms.Init();

            // Can create a new battle engine...
            var myBattleEngine = new BattleEngine();

            var myCharacter = new Character(DefaultModels.CharacterDefault());

            myCharacter.Name = "Fighter 1";
            myCharacter.ScaleLevel(1);
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter      = new Character(DefaultModels.CharacterDefault());
            myCharacter.Name = "Fighter 2";
            myCharacter.ScaleLevel(2);
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter      = new Character(DefaultModels.CharacterDefault());
            myCharacter.Name = "Fighter 3";
            myCharacter.ScaleLevel(3);
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter      = new Character(DefaultModels.CharacterDefault());
            myCharacter.Name = "Fighter 4";
            myCharacter.ScaleLevel(4);
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter      = new Character(DefaultModels.CharacterDefault());
            myCharacter.Name = "Fighter 5";
            myCharacter.ScaleLevel(5);
            myBattleEngine.CharacterList.Add(myCharacter);

            myCharacter      = new Character(DefaultModels.CharacterDefault());
            myCharacter.Name = "Fighter 6";
            myCharacter.ScaleLevel(6);
            myBattleEngine.CharacterList.Add(myCharacter);

            // Turn off random numbers
            // For a hit on everything...
            GameGlobals.SetForcedRandomNumbers(1, 20);

            myBattleEngine.AutoBattle();

            // Reset
            GameGlobals.ToggleRandomState();

            var Actual = myBattleEngine.BattleScore;

            Assert.AreNotEqual(null, Actual, "Score Object " + TestContext.CurrentContext.Test.Name);
            Assert.AreNotEqual(0, Actual.ExperienceGainedTotal, "Experience " + TestContext.CurrentContext.Test.Name);
            Assert.AreNotEqual(0, Actual.RoundCount, "Round Count " + TestContext.CurrentContext.Test.Name);
            Assert.AreNotEqual(0, Actual.TurnCount, "Turn Count " + TestContext.CurrentContext.Test.Name);
            Assert.AreNotEqual(0, Actual.ScoreTotal, "Score Total " + TestContext.CurrentContext.Test.Name);
            Assert.AreNotEqual(string.Empty, Actual.ItemsDroppedList, "Items Dropped " + TestContext.CurrentContext.Test.Name);
            Assert.AreNotEqual(string.Empty, Actual.MonstersKilledList, "Monsters Killed " + TestContext.CurrentContext.Test.Name);
            Assert.AreNotEqual(string.Empty, Actual.CharacterAtDeathList, "Character List " + TestContext.CurrentContext.Test.Name);
        }
Пример #25
0
        public void RoundEngine_RoundNextTurn_2Characters_1Monster_Strong_Should_Take_3_Rounds()
        {
            MockForms.Init();

            // No characters, so return should be game over...

            // Can create a new Round engine...
            var myRoundEngine = new RoundEngine();

            // Start
            myRoundEngine.StartRound();

            // Add moderate monsters
            // First monster
            myRoundEngine.MonsterList.Clear();  // start fresh, because it was loaded already with 6...

            var myMonsterWeak = new Monster(DefaultModels.MonsterDefault());

            myMonsterWeak.ScaleLevel(2);
            myMonsterWeak.Attribute.CurrentHealth = 20; // need to set to enough to last 4 rounds...
            myRoundEngine.MonsterList.Add(myMonsterWeak);

            // Add weak character for first...
            var myCharacterStrong = new Character(DefaultModels.CharacterDefault());

            myCharacterStrong.ScaleLevel(10);
            myRoundEngine.CharacterList.Add(myCharacterStrong);

            // Add strong character for second
            myCharacterStrong = new Character(DefaultModels.CharacterDefault());
            myCharacterStrong.ScaleLevel(20);
            myRoundEngine.CharacterList.Add(myCharacterStrong);

            // Should be Character 20, Character 10, Monster 5

            // Force rolls to 18 for to hit...
            // Turn off random numbers
            GameGlobals.SetForcedRandomNumbers(1, 18);

            // Character, should kill the monster in the first round.
            // So the check for the second round will say Round over...
            var FirstRound  = myRoundEngine.RoundNextTurn();    // Character 20
            var SecondRound = myRoundEngine.RoundNextTurn();    // Character 10 goes
            var ThirdRound  = myRoundEngine.RoundNextTurn();    // Monster goes
            var FourthRound = myRoundEngine.RoundNextTurn();    // Character 20 goes, kills monster...
            var Actual      = myRoundEngine.RoundNextTurn();    // over...

            // Reset
            GameGlobals.ToggleRandomState();

            var Expected = RoundEnum.NewRound;

            Assert.AreEqual(Expected, Actual, "Status " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(4, myRoundEngine.BattleScore.TurnCount, "TurnCount " + TestContext.CurrentContext.Test.Name);
            Assert.AreEqual(1, myRoundEngine.BattleScore.RoundCount, "RoundCount " + TestContext.CurrentContext.Test.Name);
        }
Пример #26
0
        /// <summary>
        ///
        /// </summary>
        public ColorPicker()
        {
            InitializeComponent();

            Models            = new ColorSpaceCollection();
            Models.ItemAdded += OnColorSpaceAdded;
            DefaultModels.ForEach(i => Models.Add(i));

            Models.WhereFirst(x => x is HsbModel).Components[typeof(HsbModel.HComponent)].As <SelectableComponentModel>().IsSelected = true;
        }
        public void Model_Monster_GetSpeed_Valid_Should_Pass()
        {
            var myData        = new Monster();
            var myDataDefault = DefaultModels.MonsterDefault();

            var Result   = myDataDefault.GetSpeed();
            var Expected = 1;

            Assert.AreEqual(Expected, Result, TestContext.CurrentContext.Test.Name);
        }
        public void Model_Monster_GetDamage_Valid_Should_Pass()
        {
            var myData        = new Monster();
            var myDataDefault = DefaultModels.MonsterDefault();

            var Result   = myDataDefault.GetDamage();
            var Expected = 1; // 1 for level, and 1 for base damage

            Assert.AreEqual(Expected, Result, TestContext.CurrentContext.Test.Name);
        }
Пример #29
0
        public void TurnEngine_TurnAsAttack_Monster_Attack_Defender_Die_With_Item_Should_Drop()
        {
            MockForms.Init();

            // Turn off random numbers
            GameGlobals.SetForcedRandomNumbers(1, 20);

            var Attacker = DefaultModels.MonsterDefault();

            Attacker.Name = "Rat";
            Attacker.ScaleLevel(20);

            var myDefaultCharacter = new Character(DefaultModels.CharacterDefault());

            myDefaultCharacter.Name = "Fighter";
            myDefaultCharacter.ScaleLevel(1);

            // Add Uniqueitem
            var myItem = new Item
            {
                Attribute = AttributeEnum.Attack,
                Location  = ItemLocationEnum.Feet,
                Value     = 1
            };

            ItemsViewModel.Instance.AddAsync(myItem).GetAwaiter().GetResult();  // Register Item to DataSet
            myDefaultCharacter.PrimaryHand = myItem.Guid;

            var myTurnEngine = new TurnEngine();

            myTurnEngine.CharacterList.Add(myDefaultCharacter);

            // Get Score, and remember item.
            var BeforeItemDropList = myTurnEngine.BattleScore.ItemsDroppedList;

            GameGlobals.ForceToHitValue = 20; // Force a hit

            // Should Kill because level 20 hit on level 1 Character for Critical is more damage than health...
            var AttackScore  = Attacker.Level + Attacker.GetAttack();
            var DefenseScore = myDefaultCharacter.GetDefense() + myDefaultCharacter.Level;

            var Status = myTurnEngine.TurnAsAttack(Attacker, AttackScore, myDefaultCharacter, DefenseScore);


            // Item should drop...

            // Reset
            GameGlobals.ToggleRandomState();

            // Need to get Score
            // See if Item is now in the score list...
            var AfterItemDropList = myTurnEngine.BattleScore.ItemsDroppedList;

            Assert.AreNotEqual(BeforeItemDropList, AfterItemDropList, TestContext.CurrentContext.Test.Name);
        }
        public void Model_Monster_FormatOutput_DefaultMonster_Should_Pass()
        {
            MockForms.Init();
            var myData = DefaultModels.MonsterDefault();

            var Expected = "Name , Description , Level : 1 , Total Experience : 0 , Unique Item : None";

            var Actual = myData.FormatOutput();

            Assert.AreEqual(Expected, Actual, TestContext.CurrentContext.Test.Name);
        }