Exemplo n.º 1
0
        public void FastFilterWithMultipleEqualsClause()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|FullyQualifiedName=Test2|FullyQualifiedName=Test3");
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterValues = new HashSet <string>()
            {
                "test1", "test2", "test3"
            };

            Assert.IsTrue(fastFilter != null);
            Assert.AreEqual("FullyQualifiedName", fastFilter.FilterPropertyName);
            Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterPropertyValues));

            filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "FullyQualifiedName"
            }, null);

            Assert.IsTrue(fastFilter.Evaluate((s) => "Test1"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "Test2"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "Test3"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test4"));
        }
Exemplo n.º 2
0
        public void FastFilterWithMultipleNotEqualsClauseAndRegex()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&FullyQualifiedName!=Test2&FullyQualifiedName!=Test3", new FilterOptions()
            {
                FilterRegEx = @"^[^\s\(]+"
            });
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterValues = new HashSet <string>()
            {
                "test1", "test2", "test3"
            };

            Assert.IsTrue(fastFilter != null);
            Assert.AreEqual("FullyQualifiedName", fastFilter.FilterPropertyName);
            Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterPropertyValues));

            filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "FullyQualifiedName"
            }, null);

            Assert.IsFalse(fastFilter.Evaluate((s) => "Test1"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test2"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test3"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test1 (123)"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test2(123)"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test3  (123)"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "Test4"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "Test4 (123)"));
        }
Exemplo n.º 3
0
        public void FastFilterWithMultipleNotEqualsClauseForMultiplePropertyValues()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("Category!=UnitTest&Category!=PerfTest", null);
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterValues = new HashSet <string>()
            {
                "unittest", "perftest"
            };

            Assert.IsTrue(fastFilter != null);
            Assert.AreEqual("Category", fastFilter.FilterPropertyName);
            Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterPropertyValues));

            filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "Category"
            }, null);

            Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "UnitTest" }));
            Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "PerfTest" }));
            Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "UnitTest", "PerfTest" }));
            Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "UnitTest", "IntegrationTest" }));
            Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "IntegrationTest" }));
            Assert.IsTrue(fastFilter.Evaluate((s) => null));
        }
Exemplo n.º 4
0
        public void FastFilterWithMultipleEqualsClauseAndRegexReplacement()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=TestClass.Test1|FullyQualifiedName=TestClass.Test2|FullyQualifiedName=TestClass.Test3", new FilterOptions()
            {
                FilterRegEx = @"\s*\([^\)]*\)", FilterRegExReplacement = ""
            });
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterValues = new HashSet <string>()
            {
                "testclass.test1", "testclass.test2", "testclass.test3"
            };

            Assert.IsTrue(fastFilter != null);
            Assert.AreEqual("FullyQualifiedName", fastFilter.FilterPropertyName);
            Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterPropertyValues));

            filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "FullyQualifiedName"
            }, null);

            Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1).Test1"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass().Test1()"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1, 2).Test2"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass.Test3 (abcd1234)"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1).Test1(123)"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1, 2).Test2(x:1, y:2, z:3)"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "TestClass(1, 2,3).Test3(1)  (123)"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "TestClass1.Test1"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "TestClass1(1).Test1"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "TestClass((1, 2, 3)).Test1"));
        }
Exemplo n.º 5
0
        public void FastFilterWithMultipleNotEqualsClause()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&FullyQualifiedName!=Test2&FullyQualifiedName!=Test3");
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterValues = new HashSet <string>(StringComparer.OrdinalIgnoreCase)
            {
                "test1", "test2", "test3"
            };

            Assert.IsTrue(fastFilter != null);
            Assert.AreEqual("FullyQualifiedName", fastFilter.FilterProperties.Keys.Single());
            Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single()));

            Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "FullyQualifiedName"
            }, null));

            Assert.IsFalse(fastFilter.Evaluate((s) => "Test1"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test2"));
            Assert.IsFalse(fastFilter.Evaluate((s) => "Test3"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "Test4"));
        }
Exemplo n.º 6
0
        public void FastFilterWithMultipleEqualsClauseForMultiplePropertyValues()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("Category=UnitTest|Category=PerfTest", null);
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterValues = new HashSet <string>(StringComparer.OrdinalIgnoreCase)
            {
                "unittest", "perftest"
            };

            Assert.IsTrue(fastFilter != null);
            Assert.AreEqual("Category", fastFilter.FilterProperties.Keys.Single());
            Assert.IsFalse(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterProperties.Values.Single()));

            Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "Category"
            }, null));

            Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "UnitTest" }));
            Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "PerfTest" }));
            Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "UnitTest", "PerfTest" }));
            Assert.IsTrue(fastFilter.Evaluate((s) => new[] { "UnitTest", "IntegrationTest" }));
            Assert.IsFalse(fastFilter.Evaluate((s) => new[] { "IntegrationTest" }));
            Assert.IsFalse(fastFilter.Evaluate((s) => null));
        }
Exemplo n.º 7
0
        private void CheckFastFailureWithNotEqualClause(string filterString)
        {
            var filterExpressionWrapper = new FilterExpressionWrapper(filterString);
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterValues = new HashSet <string>()
            {
                "test1"
            };

            Assert.IsTrue(fastFilter != null);
            Assert.AreEqual("FullyQualifiedName", fastFilter.FilterPropertyName);
            Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(expectedFilterValues.SetEquals(fastFilter.FilterPropertyValues));

            filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "FullyQualifiedName"
            }, null);

            Assert.IsFalse(fastFilter.Evaluate((s) => "Test1"));
            Assert.IsTrue(fastFilter.Evaluate((s) => "Test2"));
        }
Exemplo n.º 8
0
        public void MultiplePropertyNamesNotEqualAnd()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName!=Test1&Category!=IntegrationTest");
            var fastFilter = filterExpressionWrapper.fastFilter;

            var expectedFilterKeys = new HashSet <string>(StringComparer.OrdinalIgnoreCase)
            {
                "Category", "FullyQualifiedName"
            };

            Assert.IsNotNull(fastFilter);
            Assert.IsTrue(expectedFilterKeys.SetEquals(fastFilter.FilterProperties.Keys));
            Assert.IsTrue(fastFilter.IsFilteredOutWhenMatched);
            Assert.IsTrue(fastFilter.FilterProperties["FullyQualifiedName"].SequenceEqual(new[] { "Test1" }));
            Assert.IsTrue(fastFilter.FilterProperties["Category"].SequenceEqual(new[] { "IntegrationTest" }));

            Assert.IsNull(filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "FullyQualifiedName", "Category"
            }, null));
            Assert.AreEqual("FullyQualifiedName", filterExpressionWrapper.ValidForProperties(new List <string>()
            {
                "Category"
            }, null).Single());

            Assert.IsTrue(fastFilter.Evaluate((s) => s == "Category" ? new[] { "UnitTest" } : null));
            Assert.IsFalse(fastFilter.Evaluate((s) => s == "Category" ? new[] { "UnitTest", "IntegrationTest" } : null));
            Assert.IsFalse(fastFilter.Evaluate((s) => s == "Category" ? new[] { "IntegrationTest" } : null));
            Assert.IsFalse(fastFilter.Evaluate((s) =>
            {
                switch (s)
                {
                case "Category":
                    return(new[] { "UnitTest" });

                case "FullyQualifiedName":
                    return(new[] { "Test1" });

                default:
                    return(null);
                }
            }));
            Assert.IsFalse(fastFilter.Evaluate((s) =>
            {
                switch (s)
                {
                case "Category":
                    return(new[] { "IntegrationTest" });

                case "FullyQualifiedName":
                    return(new[] { "Test2" });

                default:
                    return(null);
                }
            }));
            Assert.IsTrue(fastFilter.Evaluate((s) =>
            {
                switch (s)
                {
                case "Category":
                    return(new[] { "UnitTest" });

                case "FullyQualifiedName":
                    return(new[] { "Test2" });

                default:
                    return(null);
                }
            }));
        }