Ejemplo n.º 1
0
        public void BooleanCompiler_Should_Compile_When_Min_On_Inner_Property_Of_Type_Collection_With_Collection_Specific_Function_Assigned()
        {
            var rule = CreateBooleanRule(
                expression: "Items.Min(Address.Number).Equals(@0)",
                arguments: new[] { new RuleArgument(3) }
                );

            var compiled = BooleanRuleCompilerWithLogger.Compile <Order>(rule);

            Assert.IsNotNull(compiled);
            Assert.AreEqual(typeof(Func <Order, bool>), compiled.GetType());
        }
Ejemplo n.º 2
0
        public void BooleanCompiler_Should_Compile_When_Contains_On_Inner_Property_Is_Used()
        {
            var rule = CreateBooleanRule(
                expression: "ShippingAddress.Country.Contains(@0)",
                arguments: new [] { new RuleArgument("USA") }
                );

            var compiled = BooleanRuleCompilerWithLogger.Compile <Order>(rule);

            Assert.IsNotNull(compiled);
            Assert.AreEqual(typeof(Func <Order, bool>), compiled.GetType());
        }
Ejemplo n.º 3
0
        public void BooleanCompiler_Should_Compile_To_Boolean_Lambda()
        {
            var rule = CreateBooleanRule(
                expression: "Label.Contains(@0)",
                arguments: new [] { new RuleArgument("Label") }
                );

            var compiled = BooleanRuleCompilerWithLogger.Compile <Order>(rule);

            Assert.IsNotNull(compiled);
            Assert.AreEqual(typeof(Func <Order, bool>), compiled.GetType());
        }
Ejemplo n.º 4
0
        public void BooleanCompiler_Should_Compile_When_Contains_On_Inner_Property_Of_Type_Collection_Is_Used()
        {
            var rule = CreateBooleanRule(
                expression: "Items.Contains(Address.OtherInfo.Contains(@0))",
                arguments: new[] { new RuleArgument("Test") }
                );

            rule.Expression = "Items.Contains(Address.OtherInfo.Contains(@0))";

            var compiled = BooleanRuleCompilerWithLogger.Compile <Order>(rule);

            Assert.IsNotNull(compiled);
            Assert.AreEqual(typeof(Func <Order, bool>), compiled.GetType());
        }
Ejemplo n.º 5
0
        protected void TestBooleanRuleEvaluation <TEntity>(IRule trueRule, IRule falseRule, TEntity entity)
            where TEntity : class, Models.IEntity, new()
        {
            ((RuleBase)trueRule).ConvertSaveArguments <RuleBase>();
            ((RuleBase)falseRule).ConvertSaveArguments <RuleBase>();

            var compiled = BooleanRuleCompilerWithLogger.Compile <TEntity>(trueRule);
            var result   = compiled(entity);

            Assert.IsTrue(result);

            compiled = BooleanRuleCompilerWithLogger.Compile <TEntity>(falseRule);
            result   = compiled(entity);
            Assert.IsFalse(result);
        }
Ejemplo n.º 6
0
        public void BooleanCompiler_Should_Compile_When_BetweenOrEqual_Operator_Is_Used()
        {
            var rule = CreateBooleanRule(
                expression: "Amount.BetweenOrEqual(@0, @1)",
                arguments: new[]
            {
                new RuleArgument(3),
                new RuleArgument(6),
            }
                );

            var compiled = BooleanRuleCompilerWithLogger.Compile <Order>(rule);

            Assert.IsNotNull(compiled);
            Assert.AreEqual(typeof(Func <Order, bool>), compiled.GetType());
        }
Ejemplo n.º 7
0
        public void BooleanCompiler_Should_Compile_When_NotIn_Operator_Is_Used()
        {
            var rule = CreateBooleanRule(
                expression: "ShippingStatus.IsNotInList(@0)",
                arguments: new []
            {
                new RuleArgument(new [] { OrderShippingStatus.FullyShipped, OrderShippingStatus.ReadyForPickup })
                {
                    ValueType = typeof(OrderShippingStatus).AssemblyQualifiedName
                }
            }
                );

            var compiled = BooleanRuleCompilerWithLogger.Compile <Order>(rule);

            Assert.IsNotNull(compiled);
            Assert.AreEqual(typeof(Func <Order, bool>), compiled.GetType());
        }