public EquipmentGenerator(ICollectionsSelector collectionsSelector, IWeaponGenerator weaponGenerator,
     ITreasureGenerator treasureGenerator, IArmorGenerator armorGenerator, Generator generator)
 {
     this.collectionsSelector = collectionsSelector;
     this.armorGenerator = armorGenerator;
     this.weaponGenerator = weaponGenerator;
     this.treasureGenerator = treasureGenerator;
     this.generator = generator;
 }
        public void Setup()
        {
            mockCollectionsSelector = new Mock<ICollectionsSelector>();
            mockPercentileSelector = new Mock<IPercentileSelector>();
            mockMundaneArmorGenerator = new Mock<MundaneItemGenerator>();
            mockMagicalArmorGenerator = new Mock<MagicalItemGenerator>();
            generator = new ConfigurableIterationGenerator(3);
            armorGenerator = new ArmorGenerator(mockCollectionsSelector.Object, mockPercentileSelector.Object, mockMundaneArmorGenerator.Object, mockMagicalArmorGenerator.Object, generator);
            feats = new List<Feat>();
            characterClass = new CharacterClass();
            armorProficiencyFeats = new List<string>();
            shieldProficiencyFeats = new List<string>();
            proficientArmors = new List<string>();
            proficientShields = new List<string>();
            baseArmorTypes = new List<string>();
            baseShieldTypes = new List<string>();
            magicalArmor = new Item();
            race = new Race();
            npcs = new List<string>();

            race.Size = "size";
            magicalArmor = CreateArmor("magical armor");
            magicalArmor.IsMagical = true;
            magicalShield = CreateShield("magical shield");
            magicalShield.IsMagical = true;
            baseArmorTypes.Add("base armor");
            baseShieldTypes.Add("base shield");
            proficientArmors.Remove(magicalArmor.Name);
            proficientArmors.Add(baseArmorTypes[0]);
            proficientArmors.Add("other armor");
            proficientShields.Remove(magicalShield.Name);
            proficientShields.Add(baseShieldTypes[0]);
            proficientShields.Add("other shield");
            characterClass.Level = 9266;
            feats.Add(new Feat { Name = "light proficiency" });
            feats.Add(new Feat { Name = "shield proficiency" });
            feats.Add(new Feat { Name = "other feat" });
            armorProficiencyFeats.Add(feats[0].Name);
            shieldProficiencyFeats.Add(feats[1].Name);

            mockPercentileSelector.Setup(s => s.SelectFrom("Level9266Power")).Returns("power");
            mockMagicalArmorGenerator.Setup(g => g.GenerateAtPower("power")).Returns(magicalArmor);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ItemGroups, It.IsAny<string>()))
                .Returns((string table, string name) => new[] { name });
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, ItemTypeConstants.Armor + GroupConstants.Proficiency))
                .Returns(armorProficiencyFeats);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.FeatGroups, AttributeConstants.Shield + GroupConstants.Proficiency))
                .Returns(shieldProficiencyFeats);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ItemGroups, magicalArmor.Name))
                .Returns(baseArmorTypes);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ItemGroups, magicalShield.Name))
                .Returns(baseShieldTypes);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ItemGroups, feats[0].Name))
                .Returns(proficientArmors);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ItemGroups, feats[1].Name))
                .Returns(proficientShields);
            mockCollectionsSelector.Setup(s => s.SelectFrom(TableNameConstants.Set.Collection.ClassNameGroups, GroupConstants.NPCs))
                .Returns(npcs);
        }