public void CombinationFilter_OrOperator_GetPredicate_FiltersToExpectedResults()
        {
            var filter1 = new NumericRangeFilter(5, 10);
            var filter2 = new NumericRangeFilter(8, 15);
            var filter  = new CombinationFilterNode <NumericRangeFilter>(new[] { filter1, filter2 }, CombinationOperator.Any);
            var values  = new[] { 1, 3, 5, 9, 11 };
            var expectedFilteredValues = new[] { 5, 9, 11 };

            var filterPredicate = filter.GetPredicate <NumericRangeFilter, int>();
            var filteredValues  = values.Where(filterPredicate);

            Assert.Equal(expectedFilteredValues, filteredValues);
        }
        public void ComplexFilter_GetPredicate_FiltersToExpectedResults()
        {
            var filter5To10         = new NumericRangeFilter(5, 10);
            var filter8To15         = new NumericRangeFilter(8, 15);
            var filter5To10And8To15 = new CombinationFilterNode <NumericRangeFilter>(new[] { filter5To10, filter8To15 }, CombinationOperator.Any);
            var filter9To12         = new NumericRangeFilter(9, 12);
            var filter = new CombinationFilterNode <NumericRangeFilter>(new IFilterNode <NumericRangeFilter>[] { filter5To10And8To15, filter9To12.ToLeafFilterNode() }, CombinationOperator.All);
            var values = new[] { 1, 3, 5, 9, 11 };
            var expectedFilteredValues = new[] { 9, 11 };

            var filterPredicate = filter.GetPredicate <NumericRangeFilter, int>();
            var filteredValues  = values.Where(filterPredicate);

            Assert.Equal(expectedFilteredValues, filteredValues);
        }
Esempio n. 3
0
        public void GetPartial_Example()
        {
            // All the numbers from -5 to 10, EXCEPT numbers from 2 to 6
            var filter = new CombinationFilterNode <NumericRangeFilter>(new IFilterNode <NumericRangeFilter>[]
            {
                new LeafFilterNode <NumericRangeFilter>(new NumericRangeFilter(-5, 10)),
                new InvertedFilterNode <NumericRangeFilter>(new NumericRangeFilter(2, 6)),
            }, CombinationOperator.All);

            // Exclude filters with negative values
            var partialFilter = filter.GetPartial(f => f.LowerBound >= 0);

            var positiveValues    = new[] { 1, 3, 5, 7, 12 };
            var prefilteredValues = positiveValues.Where(partialFilter.GetPredicate <NumericRangeFilter, int>()).ToList();

            Assert.Equal(new[] { 1, 7, 12 }, prefilteredValues);

            var additionalValues = new[] { -7, -4, 11 };
            var combinedValues   = prefilteredValues.Concat(additionalValues);

            var finalValues = combinedValues.Where(filter.GetPredicate <NumericRangeFilter, int>());

            Assert.Equal(new[] { 1, 7, -4 }, finalValues);
        }