예제 #1
0
        private bool filter(Result result, ILockerList <StringMatchFilter> filters, IDictionary <StringMatchFilter, int> lastAcceptedFilters = null)
        {
            bool allow = false;

            lock (filters.Locker)
            {
                StringMatchFilter lastAcceptedFilter = null;
                foreach (var filter in filters)
                {
                    if (!filter.Enabled ||
                        allow == (filter.Permission == FilterPermission.Allow))
                    {
                        continue;
                    }

                    if (!filter.Negative == checkFunc(result, filter))
                    {
                        lastAcceptedFilter = filter;
                        allow = filter.Permission == FilterPermission.Allow;
                    }
                }
                if (lastAcceptedFilters != null && lastAcceptedFilter != null)
                {
                    int count = (lastAcceptedFilters.ContainsKey(lastAcceptedFilter)) ? lastAcceptedFilters[lastAcceptedFilter] : 0;
                    lastAcceptedFilters[lastAcceptedFilter] = count + 1;
                }
            }
            return(allow);
        }
예제 #2
0
        private bool checkFunc(Result result, StringMatchFilter filter)
        {
            switch (filter.ContentPart.ToLower())
            {
            case "name":
                return(filter.Match(result.EntryName ?? ""));

            case "content":
                return(filter.Match(result.Description ?? ""));

            case "company":
                return(filter.Match(result.Company ?? ""));

            default:
                throw new Exception("Incorrect ContentPart: " + filter.ContentPart + ". Allows only \"Name\", \"Content\", \"Company\"");
            }
        }
예제 #3
0
 public void SetUp()
 {
     mSut = new StringMatchFilter();
     mMessageBoxService     = Substitute.For <IMessageBoxService>();
     mSut.MessageBoxService = mMessageBoxService;
 }