public void WeaponsThatAreBothMeleeAndRangedGetRandomlyBetweenTables() { itemAttributes.Add(AttributeConstants.Melee); itemAttributes.Add(AttributeConstants.Ranged); var tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERATTRIBUTESpecialAbilities, power, AttributeConstants.Melee); mockPercentileSelector.Setup(p => p.SelectAllFrom(tableName)).Returns(new[] { "melee ability" }); tableName = string.Format(TableNameConstants.Percentiles.Formattable.POWERATTRIBUTESpecialAbilities, power, AttributeConstants.Ranged); mockPercentileSelector.Setup(p => p.SelectAllFrom(tableName)).Returns(new[] { "ranged ability" }); var meleeResult = new SpecialAbilityAttributesResult(); meleeResult.BaseName = "melee ability"; mockSpecialAbilityAttributesSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, meleeResult.BaseName)).Returns(meleeResult); mockCollectionsSelector.Setup(p => p.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, meleeResult.BaseName)).Returns(itemAttributes); var rangedResult = new SpecialAbilityAttributesResult(); rangedResult.BaseName = "ranged ability"; mockSpecialAbilityAttributesSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, rangedResult.BaseName)).Returns(rangedResult); mockCollectionsSelector.Setup(p => p.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, rangedResult.BaseName)).Returns(itemAttributes); mockDice.SetupSequence(d => d.Roll(1).d(2).AsSum()).Returns(1).Returns(2); var abilities = specialAbilitiesGenerator.GenerateFor(ItemTypeConstants.Armor, itemAttributes, power, 1, 2); var names = abilities.Select(a => a.Name); Assert.That(names, Contains.Item("melee ability")); Assert.That(names, Contains.Item("ranged ability")); Assert.That(names.Count(), Is.EqualTo(2)); }
public SpecialAbilityAttributesResult SelectFrom(string tableName, string name) { var attributes = innerSelector.SelectFrom(tableName, name).ToList(); if (attributes.Count < 3) { throw new Exception("Attributes are not formatted for special abilities"); } var result = new SpecialAbilityAttributesResult(); result.BaseName = attributes[1]; result.BonusEquivalent = Convert.ToInt32(attributes[0]); result.Power = Convert.ToInt32(attributes[2]); return(result); }
private void CreateSpecialAbility(string name, string baseName = "", int bonus = 0, int power = 0) { var result = new SpecialAbilityAttributesResult(); if (string.IsNullOrEmpty(baseName)) { result.BaseName = name; } else { result.BaseName = baseName; } result.BonusEquivalent = bonus; result.Power = power; names.Add(name); mockSpecialAbilityAttributesSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, name)).Returns(result); mockCollectionsSelector.Setup(p => p.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, result.BaseName)).Returns(itemAttributes); }