private bool ModFilter(object item) { TroveModViewModel mod = item as TroveModViewModel; var ic = StringComparison.OrdinalIgnoreCase; bool search = true, types = true, subtypes = true, format = true; try { search = string.IsNullOrEmpty(SearchFilter) || mod.DataObject.Name?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.Author?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.Type?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.SubType?.IndexOf(SearchFilter, ic) >= 0; types = string.IsNullOrEmpty(TypeFilter) || TypeFilter.Equals(Strings.GetMoreModsViewModel_AllTypes, ic) || mod.DataObject.Type == null || mod.DataObject.Type.Equals(TypeFilter, ic); subtypes = string.IsNullOrEmpty(SubTypeFilter) || SubTypeFilter.Equals(Strings.GetMoreModsViewModel_AllSubTypes, ic) || mod.DataObject.SubType == null || mod.DataObject.SubType.Equals(SubTypeFilter, ic); format = string.IsNullOrEmpty(FormatFilter) || FormatFilter.Equals(Strings.GetMoreModsViewModel_AllFormats, ic) || mod.DataObject.Downloads.Any(d => d.Format.Equals(FormatFilter, ic)); } catch (Exception ex) { log.Error("Mod filter error", ex); if (log.IsDebugEnabled) { log.DebugFormat("Mod Name: [{0}], Author: [{1}], Type: [{2}], SubType: [{3}], SearchFilter: [{4}], TypeFilter: [{5}], SubTypeFilter: [{6}], FormatFilter: [{7}]", mod?.DataObject?.Name, mod?.DataObject?.Author, mod?.DataObject?.Type, mod?.DataObject?.SubType, SearchFilter, TypeFilter, SubTypeFilter, FormatFilter); } } return(search && types && subtypes && format); }
public void SubTypeFilter_Interface() { var sut = new SubTypeFilter(new[] { "IDirect" }); Assert.True(sut.IsMatch(typeof(SubClass))); Assert.False(sut.IsMatch(typeof(NoMatchClass))); }
public void SubTypeFilter_IndirectBaseClass() { var sut = new SubTypeFilter(new[] { "BaseA" }); Assert.True(sut.IsMatch(typeof(SubClass))); Assert.False(sut.IsMatch(typeof(NoMatchClass))); }
public void SubTypeFilter_InterfaceFromBaseClass() { // BaseA implements ISomethingElse which is inherited from ISomething (interface inheritance). var sut = new SubTypeFilter(new[] { "ISomething" }); Assert.True(sut.IsMatch(typeof(SubClass))); Assert.False(sut.IsMatch(typeof(NoMatchClass))); }