public LeadershipGenerator(ICharacterGenerator characterGenerator, ILeadershipSelector leadershipSelector, IPercentileSelector percentileSelector,
     IAdjustmentsSelector adjustmentsSelector, ISetLevelRandomizer setLevelRandomizer, ISetAlignmentRandomizer setAlignmentRandomizer,
     IAlignmentRandomizer anyAlignmentRandomizer, IClassNameRandomizer anyPlayerClassNameRandomizer, RaceRandomizer anyBaseRaceRandomizer,
     RaceRandomizer anyMetaraceRandomizer, IStatsRandomizer rawStatsRandomizer, IBooleanPercentileSelector booleanPercentileSelector,
     ICollectionsSelector collectionsSelector, IAlignmentGenerator alignmentGenerator, Generator generator, IClassNameRandomizer anyNPCClassNameRandomizer)
 {
     this.characterGenerator = characterGenerator;
     this.leadershipSelector = leadershipSelector;
     this.percentileSelector = percentileSelector;
     this.adjustmentsSelector = adjustmentsSelector;
     this.setLevelRandomizer = setLevelRandomizer;
     this.setAlignmentRandomizer = setAlignmentRandomizer;
     this.anyAlignmentRandomizer = anyAlignmentRandomizer;
     this.anyPlayerClassNameRandomizer = anyPlayerClassNameRandomizer;
     this.anyBaseRaceRandomizer = anyBaseRaceRandomizer;
     this.anyMetaraceRandomizer = anyMetaraceRandomizer;
     this.rawStatsRandomizer = rawStatsRandomizer;
     this.booleanPercentileSelector = booleanPercentileSelector;
     this.collectionsSelector = collectionsSelector;
     this.alignmentGenerator = alignmentGenerator;
     this.generator = generator;
     this.anyNPCClassNameRandomizer = anyNPCClassNameRandomizer;
 }
        public void Setup()
        {
            mockAdjustmentsSelector = new Mock<IAdjustmentsSelector>();
            leadershipSelector = new LeadershipSelector(mockAdjustmentsSelector.Object);

            var cohortLevels = new Dictionary<string, int>();
            cohortLevels["2"] = 1;
            cohortLevels["3"] = 2;
            cohortLevels["4"] = 3;

            var followerLevels = new Dictionary<string, Dictionary<string, int>>();
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 1)] = new Dictionary<string, int>();
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 2)] = new Dictionary<string, int>();
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 3)] = new Dictionary<string, int>();
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 4)] = new Dictionary<string, int>();
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 5)] = new Dictionary<string, int>();
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 6)] = new Dictionary<string, int>();

            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 1)]["2"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 1)]["3"] = 3;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 1)]["4"] = 4;

            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 2)]["2"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 2)]["3"] = 2;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 2)]["4"] = 3;

            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 3)]["2"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 3)]["3"] = 1;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 3)]["4"] = 3;

            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 4)]["2"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 4)]["3"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 4)]["4"] = 2;

            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 5)]["2"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 5)]["3"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 5)]["4"] = 2;

            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 6)]["2"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 6)]["3"] = 0;
            followerLevels[string.Format(TableNameConstants.Formattable.Adjustments.LevelXFollowerQuantities, 6)]["4"] = 1;

            mockAdjustmentsSelector.Setup(s => s.SelectFrom(It.IsAny<string>())).Returns((string s) => followerLevels[s]);
            mockAdjustmentsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Adjustments.CohortLevels)).Returns(cohortLevels);
        }