Exemple #1
0
        public override FilterNode <TValue>?Visit(LogicalFilter <TValue> nodeIn, None args)
        {
            var pruned = new List <FilterNode <TValue> >(nodeIn.Filters.Count);

            foreach (var filter in nodeIn.Filters)
            {
                var transformed = filter.Accept(this, None.Value);

                if (transformed != null)
                {
                    pruned.Add(transformed);
                }
            }

            if (pruned.Count == 1)
            {
                return(pruned[0]);
            }

            if (pruned.Count == 0)
            {
                return(null);
            }

            return(nodeIn with {
                Filters = pruned
            });
        }
Exemple #2
0
 public override FilterDefinition <T> Visit(LogicalFilter <ClrValue> nodeIn, None args)
 {
     if (nodeIn.Type == LogicalFilterType.And)
     {
         return(Filter.And(nodeIn.Filters.Select(x => x.Accept(this, args))));
     }
     else
     {
         return(Filter.Or(nodeIn.Filters.Select(x => x.Accept(this, args))));
     }
 }
        public async Task <Result <GuideDescription[]> > SearchByTagsAsync(string[] tags, int take = 50, int skip = 0)
        {
            IFilter filter = null;

            if (tags != null)
            {
                var filters = tags.Select(x => (IFilter) new ComparisonFilter("tags", x, ComparisonOperator.Contains))
                              .ToArray();
                filter = new LogicalFilter(LogicalOperator.And, filters);
            }

            var guides = await guideRepository.SearchAsync(filter, take, skip);

            return(Result <GuideDescription[]> .Success(MapGuideDescriptions(guides)));
        }
Exemple #4
0
        public override FilterNode <TValue>?Visit(LogicalFilter <TValue> nodeIn, TArgs args)
        {
            var pruned = new List <FilterNode <TValue> >(nodeIn.Filters.Count);

            foreach (var inner in nodeIn.Filters)
            {
                var transformed = inner.Accept(this, args);

                if (transformed != null)
                {
                    pruned.Add(transformed);
                }
            }

            return(new LogicalFilter <TValue>(nodeIn.Type, pruned));
        }
Exemple #5
0
        // shows how to combine filters using logical And
        private void menuItemLogicalFilter_Click(object sender, System.EventArgs e)
        {
            try
            {
                Feature fChicago = _catalog.SearchForFeature("uscty_1k", MapInfo.Data.SearchInfoFactory.SearchWhere("City='Chicago'"));

                // build up a search info by hand (not using the factory)
                Distance    d1      = new Distance(35, DistanceUnit.Mile);
                Distance    d2      = new Distance(125, DistanceUnit.Mile);
                QueryFilter filterA = new  MyCustomFilter(fChicago.Geometry, d1, d2);

                // build up a search info by hand (not using the factory)
                QueryFilter     filterB = new SqlExpressionFilter("State='IL'");
                QueryFilter     filter  = new LogicalFilter(LogicalOperation.And, filterA, filterB);
                QueryDefinition qd      = new QueryDefinition(filter, "*");
                SearchInfo      si      = new SearchInfo(null, qd);

                IResultSetFeatureCollection fc = _catalog.Search("uscty_1k", si);
                // set map view to show search results
                _map.SetView(fc.Envelope);

                // make a search geometry to show what we are doing
                FeatureGeometry buffer1 = fChicago.Geometry.Buffer(d1.Value, d1.Unit, 20, DistanceType.Spherical);
                FeatureGeometry buffer2 = fChicago.Geometry.Buffer(d2.Value, d2.Unit, 20, DistanceType.Spherical);
                ShowSearchGeometry(buffer1);
                ShowSearchGeometry(buffer2, false);

                Feature fIL = _catalog.SearchForFeature("usa", MapInfo.Data.SearchInfoFactory.SearchWhere("State='IL'"));
                ShowSearchGeometry(fIL.Geometry, false);

                // show results as selection
                SelectFeatureCollection(fc);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
Exemple #6
0
        protected override FilterNode <IJsonValue> ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer)
        {
            if (reader.TokenType != JsonToken.StartObject)
            {
                throw new JsonException($"Expected StartObject, but got {reader.TokenType}.");
            }

            FilterNode <IJsonValue> result = null;

            var comparePath     = (PropertyPath)null;
            var compareOperator = (CompareOperator)99;
            var compareValue    = (IJsonValue)null;

            while (reader.Read())
            {
                switch (reader.TokenType)
                {
                case JsonToken.PropertyName:
                    string propertyName = reader.Value.ToString();

                    if (!reader.Read())
                    {
                        throw new JsonSerializationException("Unexpected end when reading filter.");
                    }

                    if (result != null)
                    {
                        throw new JsonSerializationException($"Unexpected property {propertyName}");
                    }

                    switch (propertyName.ToLowerInvariant())
                    {
                    case "not":
                        var filter = serializer.Deserialize <FilterNode <IJsonValue> >(reader);

                        result = new NegateFilter <IJsonValue>(filter);
                        break;

                    case "and":
                        var andFilters = serializer.Deserialize <List <FilterNode <IJsonValue> > >(reader);

                        result = new LogicalFilter <IJsonValue>(LogicalFilterType.And, andFilters);
                        break;

                    case "or":
                        var orFilters = serializer.Deserialize <List <FilterNode <IJsonValue> > >(reader);

                        result = new LogicalFilter <IJsonValue>(LogicalFilterType.Or, orFilters);
                        break;

                    case "path":
                        comparePath = serializer.Deserialize <PropertyPath>(reader);
                        break;

                    case "op":
                        compareOperator = ReadOperator(reader, serializer);
                        break;

                    case "value":
                        compareValue = serializer.Deserialize <IJsonValue>(reader);
                        break;
                    }

                    break;

                case JsonToken.Comment:
                    break;

                case JsonToken.EndObject:
                    if (result != null)
                    {
                        return(result);
                    }

                    if (comparePath == null)
                    {
                        throw new JsonSerializationException("Path not defined.");
                    }

                    if (compareValue == null && compareOperator != CompareOperator.Empty)
                    {
                        throw new JsonSerializationException("Value not defined.");
                    }

                    if (!compareOperator.IsEnumValue())
                    {
                        throw new JsonSerializationException("Operator not defined.");
                    }

                    return(new CompareFilter <IJsonValue>(comparePath, compareOperator, compareValue ?? JsonValue.Null));
                }
            }

            throw new JsonSerializationException("Unexpected end when reading filter.");
        }
Exemple #7
0
    protected void btnFilter_Click(object sender, EventArgs e)
    {
        var flogical = new LogicalFilter();

        //-----Selection filter
        if (ddSelect.SelectedIndex != 0)
        {
            if (ddSelect.SelectedIndex == 2)
            {
                if (_selectionFilter != null)
                {
                    _selectionFilter.IncludeValues = !_selectionFilter.IncludeValues;
                }
                else
                {
                    _selectionFilter = null;
                }
            }
            flogical.AddFilter(_selectionFilter);
        }

        //----OrderID filter
        if (!string.IsNullOrEmpty(txtOrderID.Text))
        {
            flogical.AddLogicalOperation("AND");
            flogical.AddFilter(new EqualFieldFilter {
                Value = txtOrderID.Text.TryParseInt().ToString(), ParamName = "@OrderId"
            });
        }


        _paging.Fields["ID"].Filter = flogical.FilterCount() > 0 ? flogical : null;

        //----Status filter
        var stFilter = new CompareFieldFilter();

        if (!string.IsNullOrEmpty(ddlStatusName.SelectedValue))
        {
            if (!OrderService.GetOrderStatuses(true).Any(item => item.Key.ToLower() == ddlStatusName.SelectedValue))
            {
                ddlStatusName.Items.Remove(ddlStatusName.SelectedValue);
                ddlStatusName.SelectedValue = string.Empty;
            }
            else
            if (ddlStatusName.SelectedIndex != 0)
            {
                stFilter.ParamName  = "@StatusName";
                stFilter.Expression = ddlStatusName.SelectedValue;
                _paging.Fields["StatusName"].Filter = stFilter;
            }
            else
            {
                _paging.Fields["StatusName"].Filter = null;
            }
        }
        else
        {
            _paging.Fields["StatusName"].Filter = null;
        }


        //----Sum filter
        var sumFilter = new RangeFieldFilter {
            ParamName = "@Sum"
        };

        try
        {
            int priceFrom = 0;
            sumFilter.From = int.TryParse(txtSumFrom.Text, out priceFrom) ? priceFrom : 0;
        }
        catch (Exception)
        {
        }

        try
        {
            int priceTo = 0;
            sumFilter.To = int.TryParse(txtSumTo.Text, out priceTo) ? priceTo : int.MaxValue;
        }
        catch (Exception)
        {
        }

        _paging.Fields["Sum"].Filter = sumFilter.From.HasValue || sumFilter.To.HasValue ? sumFilter : null;


        //---- Name filter
        _paging.Fields["BuyerName"].Filter = !string.IsNullOrEmpty(txtBuyerName.Text) ? new CompareFieldFilter {
            ParamName = "@BuyerName", Expression = txtBuyerName.Text
        } : null;

        //---- Billing Name filter
        _paging.Fields["BillingName"].Filter = !string.IsNullOrEmpty(txtBillingName.Text) ? new CompareFieldFilter {
            ParamName = "@BillingName", Expression = txtBillingName.Text
        } : null;

        _paging.Fields["PaymentMethod"].Filter = ddlPaymentMethod.SelectedValue != "any"
                                                     ? new EqualFieldFilter
        {
            ParamName = "@PaymentMethod",
            Value     = ddlPaymentMethod.SelectedValue
        }
                                                     : null;
        _paging.Fields["ShippingMethodName"].Filter = ddlShippingMethod.SelectedValue != "any"
                                                     ? new EqualFieldFilter
        {
            ParamName = "@ShippingMethodName",
            Value     = ddlShippingMethod.SelectedValue
        }
                                                     : null;

        _paging.Fields["PaymentDate"].Filter = ddlPayed.SelectedValue != "any"
                                                     ? ddlPayed.SelectedValue == "yes"
                                                        ? new NullFieldFilter {
            ParamName = "@PaymentDate", Null = false
        }
                                                        : new NullFieldFilter {
            ParamName = "@PaymentDate", Null = true
        }
                                                     : null;
        //---OrderDate filter
        var dfilter = new DateTimeRangeFieldFilter {
            ParamName = "@dateOrdSearch"
        };

        if (!string.IsNullOrEmpty(txtDateFrom.Text))
        {
            DateTime?d = null;
            try
            {
                d = DateTime.Parse(txtDateFrom.Text);
            }
            catch (Exception)
            {
            }
            if (d.HasValue)
            {
                var dt = new DateTime(d.Value.Year, d.Value.Month, d.Value.Day, 0, 0, 0, 0);
                dfilter.From = dt;
            }
        }

        if (!string.IsNullOrEmpty(txtDateTo.Text))
        {
            DateTime?d = null;
            try
            {
                d = DateTime.Parse(txtDateTo.Text);
            }
            catch (Exception)
            {
            }
            if (d.HasValue)
            {
                var dt = new DateTime(d.Value.Year, d.Value.Month, d.Value.Day, 23, 59, 59, 99);
                dfilter.To = dt;
            }
        }

        if (dfilter.From.HasValue || dfilter.To.HasValue)
        {
            _paging.Fields["OrderDate"].Filter = dfilter;
        }
        else
        {
            _paging.Fields["OrderDate"].Filter = null;
        }
        pageNumberer.CurrentPageIndex = 1;
        _paging.CurrentPageIndex      = 1;
    }
Exemple #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            _paging = new SqlPaging
            {
                TableName =
                    "[Catalog].[Product] LEFT JOIN [Catalog].[Offer] ON [Product].[ProductID] = [Offer].[ProductID] inner join Catalog.ProductCategories on ProductCategories.ProductId = [Product].[ProductID] Left JOIN [Catalog].[ProductPropertyValue] ON [Product].[ProductID] = [ProductPropertyValue].[ProductID] LEFT JOIN [Catalog].[ShoppingCart] ON [Catalog].[ShoppingCart].[OfferID] = [Catalog].[Offer].[OfferID] AND [Catalog].[ShoppingCart].[ShoppingCartType] = 3 AND [ShoppingCart].[CustomerID] = @CustomerId Left JOIN [Catalog].[Ratio] on Product.ProductId= Ratio.ProductID and Ratio.CustomerId=@CustomerId"
            };
            _paging.AddFieldsRange(
                new List <Field>
            {
                new Field {
                    Name = "[Product].[ProductID]", IsDistinct = true
                },
                //new Field {Name = "PhotoName AS Photo"},
                new Field {
                    Name = "(CASE WHEN Offer.ColorID is not null THEN (Select Count(PhotoName) From [Catalog].[Photo] WHERE ([Photo].ColorID = Offer.ColorID or [Photo].ColorID is null) and [Product].[ProductID] = [Photo].[ObjId] and Type=@Type) ELSE (Select Count(PhotoName) From [Catalog].[Photo] WHERE [Product].[ProductID] = [Photo].[ObjId] and Type=@Type) END)  AS CountPhoto"
                },
                new Field {
                    Name = "(CASE WHEN Offer.ColorID is not null THEN (Select TOP(1) PhotoName From [Catalog].[Photo] WHERE ([Photo].ColorID = Offer.ColorID or [Photo].ColorID is null) and [Product].[ProductID] = [Photo].[ObjId] and Type=@Type Order By main desc, [Photo].[PhotoSortOrder]) ELSE (Select TOP(1) PhotoName From [Catalog].[Photo] WHERE [Product].[ProductID] = [Photo].[ObjId] and Type=@Type AND [Photo].[Main] = 1) END)  AS Photo"
                },
                new Field {
                    Name = "(CASE WHEN Offer.ColorID is not null THEN (Select TOP(1) [Photo].[Description] From [Catalog].[Photo] WHERE ([Photo].ColorID = Offer.ColorID or [Photo].ColorID is null) and [Product].[ProductID] = [Photo].[ObjId] and Type=@Type Order By main desc, [Photo].[PhotoSortOrder]) ELSE (Select TOP(1) [Photo].[Description] From [Catalog].[Photo] WHERE [Product].[ProductID] = [Photo].[ObjId] and Type=@Type AND [Photo].[Main] = 1) END)  AS PhotoDesc"
                },

                new Field {
                    Name = "(select [Settings].[ProductColorsToString]([Product].[ProductID])) as Colors"
                },
                //new Field {Name = "[Photo].[Description] AS PhotoDesc"},
                new Field {
                    Name = "[ProductCategories].[CategoryID]", NotInQuery = true
                },
                new Field {
                    Name = "BriefDescription"
                },
                new Field {
                    Name = "Product.ArtNo"
                },
                new Field {
                    Name = "Name"
                },
                new Field {
                    Name = "(CASE WHEN Price=0 THEN 0 ELSE 1 END) as TempSort", Sorting = SortDirection.Descending
                },
                new Field {
                    Name = "Recomended"
                },
                new Field {
                    Name = "Bestseller"
                },
                new Field {
                    Name = "New"
                },
                new Field {
                    Name = "OnSale"
                },
                new Field {
                    Name = "Discount"
                },
                new Field {
                    Name = "Offer.Main", NotInQuery = true
                },
                new Field {
                    Name = "Offer.OfferID"
                },
                new Field {
                    Name = "Offer.Amount"
                },
                new Field {
                    Name = "(CASE WHEN Offer.Amount=0 OR Offer.Amount < IsNull(MinAmount,0) THEN 0 ELSE 1 END) as TempAmountSort", Sorting = SortDirection.Descending
                },
                new Field {
                    Name = "MinAmount"
                },
                new Field {
                    Name = "MaxAmount"
                },
                new Field {
                    Name = "Enabled"
                },
                new Field {
                    Name = "AllowPreOrder"
                },
                new Field {
                    Name = "Ratio"
                },
                new Field {
                    Name = "RatioID"
                },
                new Field {
                    Name = "DateModified"
                },
                new Field {
                    Name = "ShoppingCartItemId"
                },
                new Field {
                    Name = "UrlPath"
                },
                new Field {
                    Name = "[ProductCategories].[SortOrder]"
                },
                new Field {
                    Name = "[ShoppingCart].[CustomerID]", NotInQuery = true
                },
                new Field {
                    Name = "BrandID", NotInQuery = true
                },
                new Field {
                    Name = "Offer.ProductID as Size_ProductID", NotInQuery = true
                },
                new Field {
                    Name = "Offer.ProductID as Color_ProductID", NotInQuery = true
                },
                new Field {
                    Name = "Offer.ProductID as Price_ProductID", NotInQuery = true
                },
                new Field {
                    Name = "Offer.ColorID"
                },
                new Field {
                    Name = "CategoryEnabled", NotInQuery = true
                },
            });

            if (SettingsCatalog.ComplexFilter)
            {
                _paging.AddFieldsRange(new List <Field>
                {
                    new Field {
                        Name = "(select max (price) - min (price) from catalog.offer where offer.productid=product.productid) as MultiPrices"
                    },
                    new Field {
                        Name = "(select min (price) from catalog.offer where offer.productid=product.productid) as Price"
                    },
                });
            }
            else
            {
                _paging.AddFieldsRange(new List <Field>
                {
                    new Field {
                        Name = "0 as MultiPrices"
                    },
                    new Field {
                        Name = "Price"
                    },
                });
            }

            _paging.AddParam(new SqlParam {
                ParameterName = "@CustomerId", Value = CustomerContext.CustomerId.ToString()
            });
            _paging.AddParam(new SqlParam {
                ParameterName = "@Type", Value = PhotoType.Product.ToString()
            });

            if (string.IsNullOrEmpty(Request["categoryid"]) || !Int32.TryParse(Request["categoryid"], out _categoryId))
            {
                _categoryId = 0;

                var sbMainPage = StaticBlockService.GetPagePartByKeyWithCache("MainPageSocial");
                if (sbMainPage != null && sbMainPage.Enabled)
                {
                    MainPageText = sbMainPage.Content;
                }
            }

            if (!string.IsNullOrEmpty(MainPageText))
            {
                SetMeta(null, string.Empty);
                return;
            }

            category = CategoryService.GetCategory(_categoryId);
            if (category == null || category.Enabled == false || category.ParentsEnabled == false)
            {
                Error404();
                return;
            }

            ProductsCount = category.GetProductCount();

            categoryView.CategoryID = _categoryId;
            categoryView.Visible    = true;
            pnlSort.Visible         = ProductsCount > 0;
            productView.Visible     = ProductsCount > 0;

            lblCategoryName.Text = _categoryId != 0 ? category.Name : Resource.Client_MasterPage_Catalog;
            //lblCategoryDescription.Text = category.Description;

            //imgCategoryImage.ImageUrl = string.IsNullOrEmpty(category.Picture) ? "" : string.Format("{0}", ImageFolders.GetImageCategoryPath(false, category.Picture));

            breadCrumbs.Items =
                CategoryService.GetParentCategories(_categoryId).Select(parent => new BreadCrumbs
            {
                Name = parent.Name,
                Url  = "social/catalogsocial.aspx?categoryid=" + parent.CategoryId
            }).Reverse().ToList();
            breadCrumbs.Items.Insert(0, new BreadCrumbs
            {
                Name = Resource.Client_MasterPage_MainPage,
                Url  = UrlService.GetAbsoluteLink("social/catalogsocial.aspx")
            });

            SetMeta(category.Meta, category.Name);

            if (category.DisplayChildProducts)
            {
                var cfilter = new InChildCategoriesFieldFilter
                {
                    CategoryId = _categoryId.ToString(),
                    ParamName  = "@CategoryID"
                };
                _paging.Fields["[ProductCategories].[CategoryID]"].Filter = cfilter;
            }
            else
            {
                var cfilter = new EqualFieldFilter {
                    Value = _categoryId.ToString(), ParamName = "@catalog"
                };
                _paging.Fields["[ProductCategories].[CategoryID]"].Filter = cfilter;
            }

            _paging.Fields["Enabled"].Filter = new EqualFieldFilter {
                Value = "1", ParamName = "@enabled"
            };;
            _paging.Fields["CategoryEnabled"].Filter = new EqualFieldFilter {
                Value = "1", ParamName = "@CategoryEnabled"
            };

            var logicalFilter = new LogicalFilter {
                ParamName = "@Main", HideInCustomData = true
            };

            logicalFilter.AddFilter(new EqualFieldFilter {
                Value = "1", ParamName = "@Main1", HideInCustomData = true
            });
            logicalFilter.AddLogicalOperation("OR");
            logicalFilter.AddFilter(new NullFieldFilter {
                Null = true, ParamName = "@Main2", HideInCustomData = true
            });
            _paging.Fields["Offer.Main"].Filter = logicalFilter;

            BuildSorting();
        }
        public static void SetFilter(this SmartObject smartObject, LogicalFilter filter)
        {
            var listMethod = smartObject.GetExecutingMethod() as SmartListMethod;

            listMethod.Filter = filter;
        }
Exemple #10
0
 public virtual T Visit(LogicalFilter <TValue> nodeIn, TArgs args)
 {
     throw new NotImplementedException();
 }
 public override FilterNode <ClrValue> Visit(LogicalFilter <IJsonValue> nodeIn)
 {
     return(new LogicalFilter <ClrValue>(nodeIn.Type, nodeIn.Filters.Select(x => x.Accept(this)).ToList()));
 }
Exemple #12
0
        // shows how to combine filters using logical And
        private void menuItemLogicalFilter_Click(object sender, System.EventArgs e)
        {
            try
            {
                Feature fChicago  = _catalog.SearchForFeature("uscty_1k", MapInfo.Data.SearchInfoFactory.SearchWhere("City='Chicago'"));

                // build up a search info by hand (not using the factory)
                Distance d1 = new Distance(35, DistanceUnit.Mile);
                Distance d2 = new Distance(125, DistanceUnit.Mile);
                QueryFilter filterA = new  MyCustomFilter(fChicago.Geometry, d1, d2);

                // build up a search info by hand (not using the factory)
                QueryFilter filterB = new SqlExpressionFilter("State='IL'");
                QueryFilter filter = new LogicalFilter(LogicalOperation.And, filterA, filterB);
                QueryDefinition qd = new QueryDefinition(filter, "*");
                SearchInfo si = new SearchInfo(null, qd);

                IResultSetFeatureCollection fc = _catalog.Search("uscty_1k", si);
                // set map view to show search results
                _map.SetView(fc.Envelope);

                // make a search geometry to show what we are doing
                FeatureGeometry buffer1 = fChicago.Geometry.Buffer(d1.Value, d1.Unit, 20, DistanceType.Spherical);
                FeatureGeometry buffer2 = fChicago.Geometry.Buffer(d2.Value, d2.Unit, 20, DistanceType.Spherical);
                ShowSearchGeometry(buffer1);
                ShowSearchGeometry(buffer2, false);

                Feature fIL  = _catalog.SearchForFeature("usa", MapInfo.Data.SearchInfoFactory.SearchWhere("State='IL'"));
                ShowSearchGeometry(fIL.Geometry, false);

                // show results as selection
                SelectFeatureCollection(fc);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
Exemple #13
0
        public void DefaultParamsTest()
        {
            string expected = @"<?xml version=""1.0"" encoding=""utf-8""?>
<logical logical_operator=""and"">
    <expression>
        <field>recordno</field>
        <operator>&gt;=</operator>
        <value>1234</value>
    </expression>
    <logical logical_operator=""or"">
        <expression>
            <field>ownerobject</field>
            <operator>=</operator>
            <value>PROJECT</value>
        </expression>
        <expression>
            <field>ownerobject</field>
            <operator>=</operator>
            <value>CUSTOMER</value>
        </expression>
    </logical>
</logical>";

            Stream            stream      = new MemoryStream();
            XmlWriterSettings xmlSettings = new XmlWriterSettings();

            xmlSettings.Encoding    = Encoding.UTF8;
            xmlSettings.Indent      = true;
            xmlSettings.IndentChars = "    ";

            IaXmlWriter xml = new IaXmlWriter(stream, xmlSettings);

            ExpressionFilter exp1 = new ExpressionFilter();

            exp1.FieldName = "recordno";
            exp1.Operator  = ExpressionFilter.OperatorGreaterThanOrEqualTo;
            exp1.Value     = "1234";

            ExpressionFilter exp2 = new ExpressionFilter();

            exp2.FieldName = "ownerobject";
            exp2.Operator  = ExpressionFilter.OperatorEqualTo;
            exp2.Value     = "PROJECT";

            ExpressionFilter exp3 = new ExpressionFilter();

            exp3.FieldName = "ownerobject";
            exp3.Operator  = ExpressionFilter.OperatorEqualTo;
            exp3.Value     = "CUSTOMER";

            LogicalFilter logical2 = new LogicalFilter();

            logical2.Operator = LogicalFilter.OperatorOr;
            logical2.Filters.Add(exp2);
            logical2.Filters.Add(exp3);

            LogicalFilter logical1 = new LogicalFilter();

            logical1.Operator = LogicalFilter.OperatorAnd;
            logical1.Filters.Add(exp1);
            logical1.Filters.Add(logical2);

            logical1.WriteXml(ref xml);

            xml.Flush();
            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);

            Diff xmlDiff = DiffBuilder.Compare(expected).WithTest(reader.ReadToEnd())
                           .WithDifferenceEvaluator(DifferenceEvaluators.Default)
                           .Build();

            Assert.IsFalse(xmlDiff.HasDifferences(), xmlDiff.ToString());
        }
Exemple #14
0
 public abstract void Visit(LogicalFilter filter);