public void DarkCastleRegion_UnlockedAfterBeatingOtherAreas() { Region fieldsRegion = new Region(WorldRegion.Fields, new BattleMove[0], new SubRegion[0]); Region desertRegion = new Region(WorldRegion.Desert, new BattleMove[0], new SubRegion[0]); Region casinoRegion = new Region(WorldRegion.Casino, new BattleMove[0], new SubRegion[0]); Region crystalCavesRegion = new Region(WorldRegion.CrystalCaves, new BattleMove[0], new SubRegion[0]); Region darkCastleRegion = new Region(WorldRegion.DarkCastle, new BattleMove[0], new SubRegion[0]); AreaMap <Region, WorldRegion> regionalMap = _mapManager.GetRegionalMap(fieldsRegion, desertRegion, casinoRegion, crystalCavesRegion, darkCastleRegion); MapGroupingItem <Region, WorldRegion> darkCastleGroupItem = regionalMap.MapPaths.First(mp => mp.To.Values.FirstOrDefault(gi => gi.Item == darkCastleRegion) != null).To.Values.First(gi => gi.Item == darkCastleRegion); MockDecisionManager decisionManager = new MockDecisionManager(new GodRelationshipManager()); int i = 0; for (; i < 3; ++i) { Assert.True(darkCastleGroupItem.IsLocked, "Dark Castle should be locked, not all requisite areas have been completed"); decisionManager.SetGroupingChoice(i); regionalMap.Advance(decisionManager, new TestTeam()); } decisionManager.SetGroupingChoice(i); Region finalRegion = null; Assert.DoesNotThrow(() => finalRegion = regionalMap.Advance(decisionManager, new TestTeam())); Assert.False(darkCastleGroupItem.IsLocked, "Dark Castle should be unlocked, all requisite areas have been completed"); Assert.AreEqual(darkCastleRegion, finalRegion); }
public void PickNextAreaMethod_CorrectlyReturnsEarlierResult([Range(0, 1)] int selectedSubRegionIndex) { //arrange MapGrouping <SubRegion, WorldSubRegion> firstGrouping, secondGrouping; MockMenu menu1, menu2; List <WorldSubRegion> firstGroupingSubRegions = WorldSubRegions.GetSubRegionsByGroupingId(Globals.GroupingKeys.FirstDesertGroupingId).ToList(); WorldSubRegion selectedSubRegionEnum = firstGroupingSubRegions[selectedSubRegionIndex]; PickNextArea_GroupingSetup_DesertGroupings(out firstGrouping, out secondGrouping); PickNextArea_MenuSetup_DesertGroupings(selectedSubRegionEnum, WorldSubRegion.VillageCenter, out menu1, out menu2); Team team = PickNextArea_TeamSetup_DesertGroupings(); //all sub regions must be unlocked for the Decision Manager to be called Assert.True(secondGrouping.Values.TrueForAll(grouping => !grouping.IsLocked)); MapGroupingItem <SubRegion, WorldSubRegion> selectedRegionGroupingItem = secondGrouping.Values[selectedSubRegionIndex]; _decisionManager.PickNextArea(firstGrouping, team); //will set the menus to return a different selection, and so if the returned region matches the original selection, the test has passed WorldSubRegion secondMenuSelection = firstGroupingSubRegions[selectedSubRegionIndex + 1]; menu1.SetNextSelection(new TypedMenuSelection <WorldSubRegion>(secondMenuSelection, "", null, null)); menu2.SetNextSelection(new TypedMenuSelection <WorldSubRegion>(WorldSubRegion.BeastTemple, "", null, null)); //Act SubRegion secondReturnedRegion = _decisionManager.PickNextArea(firstGrouping, team); //Assert Assert.AreEqual(selectedSubRegionEnum, secondReturnedRegion.AreaId); }
public void PickNextAreaMethod_CorrectlySelectsThirdSubRegion_DesertGroupings([Range(0, 3)] int selectedSubRegionIndex) { //arrange MapGrouping <SubRegion, WorldSubRegion> firstGrouping, secondGrouping; List <WorldSubRegion> secondGroupingSubRegions = WorldSubRegions.GetSubRegionsByGroupingId(Globals.GroupingKeys.SecondDesertGroupingId).ToList(); WorldSubRegion selectedSubRegionEnum = secondGroupingSubRegions[selectedSubRegionIndex]; PickNextArea_GroupingSetup_DesertGroupings(out firstGrouping, out secondGrouping); PickNextArea_MenuSetup_DesertGroupings(WorldSubRegion.DesertCrypt, selectedSubRegionEnum); Team team = PickNextArea_TeamSetup_DesertGroupings(); //all sub regions must be unlocked for the Decision Manager to be called Assert.True(secondGrouping.Values.TrueForAll(grouping => !grouping.IsLocked)); MapGroupingItem <SubRegion, WorldSubRegion> selectedRegionGroupingItem = secondGrouping.Values[selectedSubRegionIndex]; //Act _decisionManager.PickNextArea(firstGrouping, team); //Assert List <MapGroupingItem <SubRegion, WorldSubRegion> > notSelectedGroupingItems = secondGrouping.Values.Where(groupingItem => groupingItem.Item.AreaId != selectedSubRegionEnum).ToList(); Assert.False(selectedRegionGroupingItem.IsLocked); Assert.True(notSelectedGroupingItems.TrueForAll(grouping => grouping.IsLocked)); }
public void UnlockRegionMethod_CorrectlyUnlocksArea() { IEnumerable <WorldRegion> allRegionEnums = EnumHelperMethods.GetAllValuesForEnum <WorldRegion>(); IEnumerable <Region> allRegions = _regionFactory.GetRegions(allRegionEnums); AreaMap <Region, WorldRegion> regionalMap = _mapManager.GetRegionalMap(allRegions.ToArray()); MapGrouping <Region, WorldRegion> destinationGrouping = regionalMap.MapPaths.First(mp => mp.From.AreaId == WorldRegion.Fields).To; MapGroupingItem <Region, WorldRegion> darkCastleGroupingItem = destinationGrouping.Values.Single(gi => gi.Item.AreaId == WorldRegion.DarkCastle); Assert.True(darkCastleGroupingItem.IsLocked); _mapManager.UnlockRegion(destinationGrouping.GroupingId, WorldRegion.DarkCastle); Assert.False(darkCastleGroupingItem.IsLocked); }
public void UnlockSubRegionMethod_CorrectlyUnlocksArea([Range(0, 3)] int regionToUnlockIndex) { Region desertRegion = _regionFactory.GetRegion(WorldRegion.Desert); AreaMap <SubRegion, WorldSubRegion> subregionalMap = _mapManager.GetSubRegionalMap(WorldRegion.Desert, desertRegion.SubRegions); MapPath <SubRegion, WorldSubRegion> pathFromDesertIntro = subregionalMap.MapPaths.First(path => path.From.AreaId == WorldSubRegion.DesertIntro); MapGrouping <SubRegion, WorldSubRegion> destinationGrouping = pathFromDesertIntro.To; Assert.True(destinationGrouping.Values.TrueForAll(groupingItem => !groupingItem.IsLocked)); MapGroupingItem <SubRegion, WorldSubRegion> regionToUnlockGroupingItem = destinationGrouping.Values[regionToUnlockIndex]; WorldSubRegion unlockedRegionEnum = regionToUnlockGroupingItem.Item.AreaId; _mapManager.UnlockSubRegion(destinationGrouping.GroupingId, unlockedRegionEnum); Assert.False(regionToUnlockGroupingItem.IsLocked); List <MapGroupingItem <SubRegion, WorldSubRegion> > stillLockedRegions = destinationGrouping.Values.Where(dgi => dgi.Item.AreaId != unlockedRegionEnum).ToList(); Assert.True(stillLockedRegions.TrueForAll(groupingItem => !groupingItem.IsLocked)); }