/// <summary> /// Matches the modifier of the symbol with the access modifier of the candidates. Remove the candidates that do not match the modifier. /// </summary> /// <param name="symbol">The symbol.</param> /// <returns>True if there are any candidates left.</returns> protected IEnumerable <IBaseConfigModel> MatchModifier(ISymbol symbol, IEnumerable <IBaseConfigModel> candidates) { var matches = new List <IBaseConfigModel>(); foreach (var candidate in candidates) { if (SymbolMatcher.MatchModifier(symbol, candidate.Modifier)) { matches.Add(candidate); } } return(matches); }
public void MatchModifierTest() { // Arrange var helpers = new TestHelpers(); var abstractMember = helpers.GetMockMember(Constants.AbstractMember, "TestMemberName"); var overrideMember = helpers.GetMockMember(Constants.OverrideMember, "TestMemberName"); var sealedMember = helpers.GetMockMember(Constants.SealedMember, "TestMemberName"); var staticMember = helpers.GetMockMember(Constants.StaticMember, "TestMemberName"); var virtualMember = helpers.GetMockMember(Constants.VirtualMember, "TestMemberName"); // Act var abstractMatch = SymbolMatcher.MatchModifier(abstractMember, Models.Modifier.Abstract); var overrideMatch = SymbolMatcher.MatchModifier(overrideMember, Models.Modifier.Override); var sealedMatch = SymbolMatcher.MatchModifier(sealedMember, Models.Modifier.Sealed); var staticMatch = SymbolMatcher.MatchModifier(staticMember, Models.Modifier.Static); var virtualMatch = SymbolMatcher.MatchModifier(virtualMember, Models.Modifier.Virtual); var anyMatch = SymbolMatcher.MatchModifier(abstractMember, Models.Modifier.Any); var noAbstractMatch = SymbolMatcher.MatchModifier(abstractMember, Models.Modifier.Virtual); var noOverrideMatch = SymbolMatcher.MatchModifier(overrideMember, Models.Modifier.Abstract); var noSealedMatch = SymbolMatcher.MatchModifier(sealedMember, Models.Modifier.Abstract); var noStaticMatch = SymbolMatcher.MatchModifier(staticMember, Models.Modifier.Abstract); var noVirtualMatch = SymbolMatcher.MatchModifier(virtualMember, Models.Modifier.Abstract); // Assert Assert.IsTrue(abstractMatch); Assert.IsTrue(overrideMatch); Assert.IsTrue(sealedMatch); Assert.IsTrue(staticMatch); Assert.IsTrue(virtualMatch); Assert.IsTrue(anyMatch); Assert.IsFalse(noAbstractMatch); Assert.IsFalse(noOverrideMatch); Assert.IsFalse(noSealedMatch); Assert.IsFalse(noStaticMatch); Assert.IsFalse(noVirtualMatch); }