public void CheckProductIdOfConstraintMatches(string identifier, short revision, bool expectedResult) { // Arrange var ident = new ProductIdentity(identifier, revision); var constraint = ExpressionConstraint.Equals <IProcess>(p => ((IProductRecipe)p.Recipe).Product.Identity, ident); // Act Assert Assert.AreEqual(expectedResult, constraint.Check(CreateProcess())); }
public void ShouldNotBePossibleEvaluateRuleWithExpressionConstraintAndMissingProperty() { var constraint = new ExpressionConstraint("Name", (o) => { return(o != null && o.ToString().Length > 5); }); var result = constraint.Evaluate(ObjectHelper.ToDictionary(new { })); Assert.False(result); }
public void ShouldEvaluateAsFalseIfExpressionIsNull() { var data = new Dictionary <string, object>() { { "Name", "Jhon Doe" } }; var sut = new ExpressionConstraint <Money>("Debt", null); Assert.False(sut.Evaluate(data)); }
public void ExpressionGreater(int foo, int compareValue) { // Arrange: var context = new DummyContext { Foo = foo }; var constraint = ExpressionConstraint.GreaterOrEqual <DummyContext>(c => c.Foo, compareValue); // Act var result = constraint.Check(context); // Arrange Assert.AreEqual(result, foo >= compareValue, "Constraint failed to compare objects"); }
public void ShouldEvaluateWithUntypedExpression() { var data = new Dictionary <string, object> { { "Name", "Jane Doe" } }; var sut = new ExpressionConstraint("Name", (o) => { return(o.ToString().Length > 5); }); Assert.True(sut.Evaluate(data)); data["Name"] = "Jane"; Assert.False(sut.Evaluate(data)); }
public void ShouldEvaluateWithTypedExpression() { var data = new Dictionary <string, object>() { { "Debt", new Money(10.0m, Currency.REAL) } }; var sut = new ExpressionConstraint <Money>("Debt", (o) => { return(o.Amount > 12.3m); }); Assert.False(sut.Evaluate(data)); sut = new ExpressionConstraint <Money>("Debt", (o) => { return(o.Amount > 9.3m); }); Assert.True(sut.Evaluate(data)); }