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 BattleFieldInfo GetBattleFieldSetUp(BattlefieldConfiguration config)
        {
            Team generatedTeam = null;

            if (config.GroupingConfiguration != null)
            {
                FighterGrouping generatedGrouping = _groupingFactory.GetGrouping(config.GroupingConfiguration);
                generatedTeam = _teamFactory.GetTeam(generatedGrouping);
            }

            if (config.TeamConfiguration != null)
            {
                generatedTeam = _teamFactory.GetTeam(config.TeamConfiguration);
            }

            List <TerrainInteractable> terrainInteractables = new List <TerrainInteractable>();

            BellTerrainConfiguration bellConfiguration = config.TerrainConfiguration as BellTerrainConfiguration;

            if (bellConfiguration != null)
            {
                foreach (BellType bellType in bellConfiguration.BellTypes)
                {
                    terrainInteractables.Add(new Bell($"{bellType.ToString().ToLower()} bell", bellType, _menuFactory, _chanceService));
                }
            }

            BattleFieldInfo generatedBattlefieldInfo = new BattleFieldInfo(generatedTeam, terrainInteractables);

            return(generatedBattlefieldInfo);
        }