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()); }
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()); }
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()); }
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()); }
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); }
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()); }
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()); }