Exemple #1
0
        public void CanonBinaryFilter()
        {
            var canon = new FilterCanonicalizer();

            var tagFilter1      = new TagFilter(Tag("A"));
            var tagFilter2      = new TagFilter(Tag("A"));
            var negatingFilter1 = new NegatingFilter(new TagFilter(Tag("B")));
            var negatingFilter2 = new NegatingFilter(new TagFilter(Tag("B")));

            var binaryFilter1 = new BinaryFilter(tagFilter1, FilterOperator.And, negatingFilter1);
            var binaryFilter2 = new BinaryFilter(tagFilter2, FilterOperator.And, negatingFilter2);
            var binaryFilter3 = new BinaryFilter(negatingFilter1, FilterOperator.And, tagFilter2);
            var binaryFilter4 = new BinaryFilter(tagFilter1, FilterOperator.Or, negatingFilter1);

            var canonBinaryFilter1 = binaryFilter1.Canonicalize(canon);
            var canonBinaryFilter2 = binaryFilter2.Canonicalize(canon);
            var canonBinaryFilter3 = binaryFilter3.Canonicalize(canon);
            var canonBinaryFilter4 = binaryFilter4.Canonicalize(canon);

            Assert.Same(canonBinaryFilter1, canonBinaryFilter2);
            Assert.Same(canonBinaryFilter1, canonBinaryFilter3);
            Assert.NotSame(canonBinaryFilter1, canonBinaryFilter4);

            var canonFilter1 = canonBinaryFilter1 as BinaryFilter;
            var canonFilter2 = canonBinaryFilter2 as BinaryFilter;
            var canonFilter3 = canonBinaryFilter3 as BinaryFilter;

            Assert.NotNull(canonFilter1);
            Assert.NotNull(canonFilter2);
            Assert.NotNull(canonFilter3);
            Assert.Same(canonFilter1.Left, canonFilter2.Left);
            Assert.Same(canonFilter1.Right, canonFilter2.Right);
            Assert.Same(canonFilter1.Left, canonFilter3.Left);
            Assert.Same(canonFilter1.Right, canonFilter3.Right);
        }
Exemple #2
0
        public void CanonNegatingFilter()
        {
            var canon = new FilterCanonicalizer();

            var tagFilter1 = new TagFilter(Tag("A"));
            var tagFilter2 = new TagFilter(Tag("A"));
            var tagFilter3 = new TagFilter(Tag("B"));

            var negatingFilter1 = new NegatingFilter(tagFilter1);
            var negatingFilter2 = new NegatingFilter(tagFilter2);
            var negatingFilter3 = new NegatingFilter(tagFilter3);

            var canonNegatingFilter1 = negatingFilter1.Canonicalize(canon);
            var canonNegatingFilter2 = negatingFilter2.Canonicalize(canon);
            var canonNegatingFilter3 = negatingFilter3.Canonicalize(canon);

            Assert.Same(canonNegatingFilter1, canonNegatingFilter2);
            Assert.NotSame(canonNegatingFilter1, canonNegatingFilter3);

            var canonTagFilter = tagFilter1.Canonicalize(canon);
            var canonFilter1   = canonNegatingFilter1 as NegatingFilter;
            var canonFilter2   = canonNegatingFilter2 as NegatingFilter;

            Assert.NotNull(canonFilter1);
            Assert.NotNull(canonFilter2);
            Assert.Same(canonFilter1.Inner, canonTagFilter);
            Assert.Same(canonFilter2.Inner, canonTagFilter);
        }
Exemple #3
0
        public void CanonAndSimplifyBinaryFilter()
        {
            var canon = new FilterCanonicalizer();

            var negatingFilter1 = new NegatingFilter(new TagFilter(Tag("B")));
            var negatingFilter2 = new NegatingFilter(new TagFilter(Tag("B")));

            var binaryFilter = new BinaryFilter(negatingFilter1, FilterOperator.And, negatingFilter2);
            var canonFilter  = binaryFilter.Canonicalize(canon);

            Assert.Same(canonFilter, negatingFilter1.Canonicalize(canon));
        }