Exemple #1
0
        public void ReferenceTypeFilterSetDefaultValue_Lazy()
        {
            var filter = new ReferenceTypeFilter <TestSource, string>();

            filter.For(x => x.Name);
            filter.Conditions(condition =>
            {
                condition["equal"]    = new ReferenceTypeEqualCondition <string>();
                condition["notequal"] = new ReferenceTypeNotEqualCondition <string>();
            });


            var expr1 = filter.BuildExpression <TestSource>();

            Assert.IsNull(expr1);

            filter.SetDefaultValue(() => new FilterValue <string>
            {
                LeftValue    = "10",
                ConditionKey = "equal"
            });

            var expr2 = filter.BuildExpression <TestSource>();

            Assert.IsNotNull(expr2);

            Assert.IsTrue(expr2.Compile()(new TestSource {
                Name = "10"
            }));

            Assert.IsFalse(expr2.Compile()(new TestSource {
                Name = "12"
            }));

            filter.Init(new FilterValue <string>
            {
                ConditionKey = "notequal",
                LeftValue    = "10"
            });

            var expr3 = filter.BuildExpression <TestSource>();

            Assert.IsNotNull(expr3);

            Assert.IsTrue(expr3.Compile()(new TestSource {
                Name = "12"
            }));
            Assert.IsFalse(expr3.Compile()(new TestSource {
                Name = "10"
            }));
        }