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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
        }