public void ReturnSpecialAbilityAttributesResult() { var attributes = new[] { "42", "base name", "9266" }; mockInnerSelector.Setup(s => s.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributes, "name")).Returns(attributes); var result = selector.SelectFrom("name"); Assert.That(result.BaseName, Is.EqualTo("base name")); Assert.That(result.BonusEquivalent, Is.EqualTo(42)); Assert.That(result.Power, Is.EqualTo(9266)); }
private SpecialAbility GetSpecialAbility(string abilityName) { var ability = new SpecialAbility(); var abilitySelection = specialAbilityDataSelector.SelectFrom(abilityName); ability.Name = abilityName; ability.BaseName = abilitySelection.BaseName; ability.AttributeRequirements = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.SpecialAbilityAttributeRequirements, ability.BaseName); ability.BonusEquivalent = abilitySelection.BonusEquivalent; ability.Power = abilitySelection.Power; var damagesData = collectionsSelector.SelectFrom(TableNameConstants.Collections.Set.WeaponDamages, abilityName).ToArray(); if (!damagesData.Any()) { return(ability); } if (!string.IsNullOrEmpty(damagesData[0])) { var damageEntries = damageHelper.ParseEntries(damagesData[0]); foreach (var damageEntry in damageEntries) { ability.Damages.Add(new Damage { Roll = damageEntry[DataIndexConstants.Weapon.DamageData.RollIndex], Type = damageEntry[DataIndexConstants.Weapon.DamageData.TypeIndex], Condition = damageEntry[DataIndexConstants.Weapon.DamageData.ConditionIndex], }); } } if (string.IsNullOrEmpty(damagesData[1])) { return(ability); } var multipliers = new[] { "x2", "x3", "x4" }; for (var i = 1; i < damagesData.Length; i++) { var multiplier = multipliers[i - 1]; ability.CriticalDamages[multiplier] = new List <Damage>(); var criticalDamageEntries = damageHelper.ParseEntries(damagesData[i]); foreach (var criticalDamageEntry in criticalDamageEntries) { var damage = new Damage { Roll = criticalDamageEntry[DataIndexConstants.Weapon.DamageData.RollIndex], Type = criticalDamageEntry[DataIndexConstants.Weapon.DamageData.TypeIndex], Condition = criticalDamageEntry[DataIndexConstants.Weapon.DamageData.ConditionIndex], }; ability.CriticalDamages[multiplier].Add(damage); } } return(ability); }