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; }
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); }
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); }
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); }
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); }
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); }
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); } } }
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); } } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
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); }