private string GetSpecificAlignmentRequirement(Item item) { var itemsWithSpecificAlignments = attributesSelector.SelectFrom(TableNameConstants.Collections.Set.ItemAlignmentRequirements, "Items"); if (itemsWithSpecificAlignments.Contains(item.Name)) { return(attributesSelector.SelectFrom(TableNameConstants.Collections.Set.ItemAlignmentRequirements, item.Name).Single()); } var alignments = AlignmentConstants.GetAllAlignments(); var requirements = alignments.Where(a => item.Traits.Any(t => t.Contains(a))); if (requirements.Any()) { //INFO: If there is more than 1 alignment requirement in the traits, then there is a problem return(requirements.Single()); } alignments = AlignmentConstants.GetAllPartialAlignments(); requirements = alignments.Where(a => item.Traits.Any(t => t.Contains(a))); if (requirements.Any()) { //INFO: If there is more than 1 partial alignment requirement in the traits, then there is a problem //i.e., they either conflict or should have been a full alignment requriement return(requirements.Single()); } return(string.Empty); }
public void AllPartialAlignments() { var partialAlignments = AlignmentConstants.GetAllPartialAlignments(); Assert.That(partialAlignments, Contains.Item(AlignmentConstants.Chaotic)); Assert.That(partialAlignments, Contains.Item(AlignmentConstants.Evil)); Assert.That(partialAlignments, Contains.Item(AlignmentConstants.Good)); Assert.That(partialAlignments, Contains.Item(AlignmentConstants.Lawful)); Assert.That(partialAlignments, Contains.Item(AlignmentConstants.Neutral)); Assert.That(partialAlignments.Count(), Is.EqualTo(5)); }