Exemple #1
0
        public void ContainsOperationShouldNotCreateFastFilter()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("Name~TestClass1");
            var fastFilter = filterExpressionWrapper.fastFilter;

            Assert.IsTrue(fastFilter == null);
        }
Exemple #2
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));
        }
Exemple #3
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));
        }
Exemple #4
0
        public void MultipleOperationKindsShouldNotCreateFastFilter()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("Name!=TestClass1&Category=Nightly");
            var fastFilter = filterExpressionWrapper.fastFilter;

            Assert.IsTrue(fastFilter == null);
        }
Exemple #5
0
        public void MultipleOperatorKindsShouldNotCreateFastFilter()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("Name=Test1&(Name=Test2|NameTest3)");
            var fastFilter = filterExpressionWrapper.fastFilter;

            Assert.IsTrue(fastFilter == null);
        }
Exemple #6
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"));
        }
Exemple #7
0
        public void MultiplePropertyNamesShouldNotCreateFastFilter()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test1|Category=Core");
            var fastFilter = filterExpressionWrapper.fastFilter;

            Assert.IsTrue(fastFilter == null);
        }
Exemple #8
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"));
        }
Exemple #9
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"));
        }
Exemple #10
0
        public void OrOperatorAndNotEqualsOperationShouldNotCreateFastFilter()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("Name!=Test1|Name!=Test2");
            var fastFilter = filterExpressionWrapper.fastFilter;

            Assert.IsTrue(fastFilter == null);
        }
Exemple #11
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)"));
        }
Exemple #12
0
        public void AndOperatorAndEqualsOperationShouldNotCreateFastFilter()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("Name=Test1&Name=Test2");
            var fastFilter = filterExpressionWrapper.fastFilter;

            Assert.IsTrue(fastFilter == null);
            Assert.IsTrue(string.IsNullOrEmpty(filterExpressionWrapper.ParseError));
        }
Exemple #13
0
        public void FastFilterWithWithRegexParseErrorShouldNotCreateFastFilter()
        {
            var filterExpressionWrapper = new FilterExpressionWrapper("FullyQualifiedName=Test", new FilterOptions()
            {
                FilterRegEx = @"^[^\s\(]+\1"
            });

            Assert.AreEqual(null, filterExpressionWrapper.fastFilter);
            Assert.IsFalse(string.IsNullOrEmpty(filterExpressionWrapper.ParseError));
        }
        public void ValidForPropertiesShouldNotSetvalidForMatchVariableTofalseIfFilterIsInvalid()
        {
            var filterExpressionWrapper  = new FilterExpressionWrapper("highlyunlikelyproperty=unused");
            var testCaseFilterExpression = new TestCaseFilterExpression(filterExpressionWrapper);

            testCaseFilterExpression.ValidForProperties(new List <string>()
            {
                "TestCategory"
            }, (s) => { return(null); });

            TestCase dummyTestCase = new TestCase();
            bool     result        = testCaseFilterExpression.MatchTestCase(dummyTestCase, (s) => { return("unused"); });

            Assert.IsTrue(result);
        }
            private static void ValidateFilter(string filterString)
            {
                if (string.IsNullOrEmpty(filterString))
                {
                    filterExpression = null;
                    return;
                }

                var filterWrapper = new FilterExpressionWrapper(filterString);

                if (filterWrapper.ParseError != null)
                {
                    var fe = new FormatException(String.Format("Invalid Test Case Filter: {0}", filterString));
                    EqtTrace.Error("TestCaseFilter.ValidateFilter : Filtering failed with exception : " + fe.Message);
                    throw fe;
                }

                filterExpression = new TestCaseFilterExpression(filterWrapper);
            }
Exemple #16
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"));
        }
 /// <summary>
 /// Adapter specific filter expression.
 /// </summary>
 public TestCaseFilterExpression(FilterExpressionWrapper filterWrapper)
 {
     ValidateArg.NotNull(filterWrapper, "filterWrapper");
     this.filterWrapper = filterWrapper;
     this.validForMatch = string.IsNullOrEmpty(filterWrapper.ParseError);
 }
Exemple #18
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);
                }
            }));
        }