Ejemplo n.º 1
0
        public void Parser()
        {
            FilterParser parser;
            IFilter result;
            FilterAndSet filters;

            parser = new FilterParser("FirstField=Value, SecondField=OtherValue | OrSecond = SomethingElse | OrThird ~= Field, Last!=Condition");
            result = parser.Parse();

            Assert.True(result is FilterAndSet);
            filters = (FilterAndSet)result;
            Assert.Equal(3, ((FilterAndSet)filters).Count);

            Assert.IsType<Filter>(filters[0]);
            Assert.Equal("FirstField", (filters[0] as Filter).Field);
            Assert.Equal("=", (filters[0] as Filter).Operator);
            Assert.Equal("Value", (filters[0] as Filter).Value);

            Assert.IsType<FilterOrSet>(filters[1]);
            Assert.Equal(3, (filters[1] as FilterOrSet).Count);
            (filters[1] as FilterOrSet).ForEach(x => Assert.IsType<Filter>(x));
            Assert.Equal("SecondField", ((filters[1] as FilterOrSet)[0] as Filter).Field);
            Assert.Equal("=", ((filters[1] as FilterOrSet)[0] as Filter).Operator);
            Assert.Equal("OtherValue", ((filters[1] as FilterOrSet)[0] as Filter).Value);
            Assert.Equal("OrSecond", ((filters[1] as FilterOrSet)[1] as Filter).Field);
            Assert.Equal("=", ((filters[1] as FilterOrSet)[1] as Filter).Operator);
            Assert.Equal("SomethingElse", ((filters[1] as FilterOrSet)[1] as Filter).Value);
            Assert.Equal("OrThird", ((filters[1] as FilterOrSet)[2] as Filter).Field);
            Assert.Equal("~=", ((filters[1] as FilterOrSet)[2] as Filter).Operator);
            Assert.Equal("Field", ((filters[1] as FilterOrSet)[2] as Filter).Value);

            Assert.IsType<Filter>(filters[2]);
            Assert.Equal("Last", (filters[2] as Filter).Field);
            Assert.Equal("!=", (filters[2] as Filter).Operator);
            Assert.Equal("Condition", (filters[2] as Filter).Value);
        }
Ejemplo n.º 2
0
        private bool TestAgainstFilter(string filterText, object obj)
        {
            FilterParser parser = new FilterParser(filterText);
            IFilter filter = parser.Parse();

            filter.ExpectType(obj.GetType());
            return filter.Matches(obj);
        }
Ejemplo n.º 3
0
        public void Parser()
        {
            FilterParser parser;
            IFilter result;
            FilterAndSet filters;

            parser = new FilterParser("FirstField=Value, SecondField=OtherValue | OrSecond = SomethingElse | OrThird ~= Field, Last*=[Hello|Bye]");
            result = parser.Parse();

            Assert.True(result is FilterAndSet);
            filters = (FilterAndSet)result;
            Assert.Equal(3, ((FilterAndSet)filters).Count);

            Assert.IsType<Filter>(filters[0]);
            Assert.Equal("FirstField", (filters[0] as Filter).Field);
            Assert.Equal("=", (filters[0] as Filter).Operator);
            Assert.Equal("Value", (filters[0] as Filter).Value);

            Assert.IsType<FilterOrSet>(filters[1]);
            Assert.Equal(3, (filters[1] as FilterOrSet).Count);
            (filters[1] as FilterOrSet).ForEach(x => Assert.IsType<Filter>(x));
            Assert.Equal("SecondField", ((filters[1] as FilterOrSet)[0] as Filter).Field);
            Assert.Equal("=", ((filters[1] as FilterOrSet)[0] as Filter).Operator);
            Assert.Equal("OtherValue", ((filters[1] as FilterOrSet)[0] as Filter).Value);
            Assert.Equal("OrSecond", ((filters[1] as FilterOrSet)[1] as Filter).Field);
            Assert.Equal("=", ((filters[1] as FilterOrSet)[1] as Filter).Operator);
            Assert.Equal("SomethingElse", ((filters[1] as FilterOrSet)[1] as Filter).Value);
            Assert.Equal("OrThird", ((filters[1] as FilterOrSet)[2] as Filter).Field);
            Assert.Equal("~=", ((filters[1] as FilterOrSet)[2] as Filter).Operator);
            Assert.Equal("Field", ((filters[1] as FilterOrSet)[2] as Filter).Value);

            Assert.IsType<ListFilter>(filters[2]);
            Assert.Equal("Last", (filters[2] as ListFilter).Field);
            Assert.Equal("*=", (filters[2] as ListFilter).Operator);
            Assert.Equal(2, (filters[2] as ListFilter).Values.Length);
            Assert.Equal(ListFilter.JoinType.Or, (filters[2] as ListFilter).Type);
            Assert.Equal("Hello", (filters[2] as ListFilter).Values[0]);
            Assert.Equal("Bye", (filters[2] as ListFilter).Values[1]);
        }