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); }
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); }
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)); }