public void GetGroupingCorrectlyReturnsShadeGrouping_NoMaxLevel([Range(1, 4)] int numberEnemies, [Range(1, 3)] int fighterLevel) { ShadeGroupingConfiguration config = new ShadeGroupingConfiguration(numberEnemies, fighterLevel); ShadeFighterGrouping grouping = _factory.GetGrouping(config) as ShadeFighterGrouping; Assert.NotNull(grouping); List <Shade> shades = grouping.GetShades(); Assert.AreEqual(numberEnemies, shades.Count, $"There should be {numberEnemies} shades in the returned grouping"); Assert.True(shades.TrueForAll(s => s.Level == fighterLevel)); }
public void Setup() { _logger = new EventLogger(); _input = new MockInput(); _output = new MockOutput(); _menuManager = new TestMenuManager(_input, _output); _chanceService = new MockChanceService(); TestFighterFactory.SetChanceService(_chanceService); _shade1 = (Shade)FighterFactory.GetFighter(FighterType.Shade, 1); _shade2 = (Shade)FighterFactory.GetFighter(FighterType.Shade, 1); _shade3 = (Shade)FighterFactory.GetFighter(FighterType.Shade, 1); _shades = new List <Shade> { _shade1, _shade2, _shade3 }; _shadeGrouping = new ShadeFighterGrouping(_chanceService, _shades.ToArray()); _shadeTeam = new Team(TestMenuManager.GetTestMenuManager(), _shadeGrouping); _humanFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1); _humanFighter.SetSpeed(_shade1.Speed + 1); _humanTeam = new Team(_menuManager, _humanFighter); List <BattleMove> executableMoves = _shade1.GetExecutableMoves(_humanTeam); _absorptionMoveIndex = executableMoves.FindIndex(bm => bm.MoveType == BattleMoveType.AbsorbShade); _malevolenceChargeIndex = executableMoves.FindIndex(bm => bm.MoveType == BattleMoveType.Special); _malevolenceAttackIndex = executableMoves.FindIndex(bm => bm.MoveType == BattleMoveType.ConditionalPowerAttack); _darkFogIndex = executableMoves.FindIndex(bm => bm is StatusMove); _malevolenceChargeMove = executableMoves[_malevolenceChargeIndex]; _malevolenceAttackMove = executableMoves[_malevolenceAttackIndex]; _shadeAbsorbingMove = executableMoves[_absorptionMoveIndex]; Shade fooShade = new Shade(1, _chanceService, 1); Team fooTeam = new Team(TestMenuManager.GetTestMenuManager(), fooShade); fooShade.SetTeam(fooTeam); List <BattleMove> fooExecutableAttacks = fooShade.GetExecutableMoves(_humanTeam); _malevolenceAttackNoAbsorptionMoveIndex = fooExecutableAttacks.FindIndex(bm => bm.MoveType == BattleMoveType.ConditionalPowerAttack); _malevolenceChargeNoAbsorptionMoveIndex = fooExecutableAttacks.FindIndex(bm => bm.MoveType == BattleMoveType.Special); _battleManager = new TestBattleManager(_chanceService, _input, _output); }
public void TearDown() { _logger = null; _input = null; _output = null; _menuManager = null; _chanceService = null; _shade1 = null; _shade2 = null; _shade3 = null; _shadeGrouping = null; _shadeTeam = null; _humanFighter = null; _humanTeam = null; }
public void SetUp() { _input = new MockInput(); _output = new MockOutput(); _chanceService = new MockChanceService(); _menuManager = new TestMenuManager(_input, _output, new MenuFactory()); _battleManager = new BattleManager(_chanceService, _input, _output); _shadeGrouping = new ShadeFighterGrouping(_chanceService, new Shade(1, _chanceService, 1), new Shade(1, _chanceService, 1), new Shade(1, _chanceService, 1)); _shadeTeam = new Team(TestMenuManager.GetTestMenuManager(), _shadeGrouping); _humanFighter = (TestHumanFighter)TestFighterFactory.GetFighter(TestFighterType.TestHuman, 1); _humanFighter.SetHealth(5); _humanFighter.SetSpeed(_shadeTeam.Fighters[0].Speed + 1); _humanTeam = new TestTeam(_menuManager, _humanFighter); _enemy = (TestEnemyFighter)TestFighterFactory.GetFighter(TestFighterType.TestEnemy, 1); _enemyTeam = new Team(TestMenuManager.GetTestMenuManager(), _enemy); }
public void BattleCorrectlyEnds_AllShadesSealed([Range(1, 3)] int numberShades) { List <Bell> bells = GetBells(BellType.Copper); List <Shade> shades = new List <Shade>(); int chargeMoveIndex = -1; for (int i = numberShades; i > 0; --i) { shades.Add(new Shade(1, _chanceService, 1)); } ShadeFighterGrouping shadeGrouping = new ShadeFighterGrouping(_chanceService, shades.ToArray()); _shadeTeam = new Team(TestMenuManager.GetTestMenuManager(), shadeGrouping); chargeMoveIndex = shades[0].GetExecutableMoves(_humanTeam).FindIndex(am => am.MoveType == BattleMoveType.Special); for (int i = numberShades; i > 0; --i) { _input.Push("special", "pray copper", "1"); _chanceService.PushEventOccurs(true); //sealing is successful for (int j = i; j > 0; --j) { _chanceService.PushWhichEventOccurs(chargeMoveIndex); } } //act BattleEndStatus battleEndStatus = _battleManager.Battle(_humanTeam, _shadeTeam, bells.Cast <TerrainInteractable>().ToList()); Assert.AreEqual(BattleEndStatus.Victory, battleEndStatus); }
public void GetGroupingCorrectlyReturnsShadeGrouping_LevelRange([Range(1, 3)] int minLevel, [Range(1, 3)] int levelDiff) { //Arrange int maxLevel = minLevel + levelDiff; int numberFighters = levelDiff + 1; ShadeGroupingConfiguration config = new ShadeGroupingConfiguration(numberFighters, minLevel, maxLevel); for (int i = 0; i < numberFighters; ++i) { _chanceService.PushWhichEventOccurs(i); } //Act ShadeFighterGrouping grouping = _factory.GetGrouping(config) as ShadeFighterGrouping; //Assert Assert.NotNull(grouping); List <Shade> shades = grouping.GetShades(); for (int i = 0; i < numberFighters; ++i) { Assert.AreEqual(minLevel + i, shades[i].Level); } }