public static CrossFieldClause Matcher(this CrossFieldClause self) { return(Match.Create <CrossFieldClause>(cfc => ReferenceEquals(cfc.LHS.Field, self.LHS.Field) && cfc.LHS.Function == self.LHS.Function && cfc.Operator == self.Operator && ReferenceEquals(cfc.RHS.Field, self.RHS.Field) && cfc.RHS.Function == self.RHS.Function )); }
public void CrossFieldClauseNotNegated() { // Arrange var mockField = new Mock <IField>(); var expr = new FieldExpression(mockField.Object); var op = ComparisonOperator.LT; // Act var clause = new CrossFieldClause(expr, op, expr); var fields = clause.GetDependentFields(); // Assert clause.LHS.Should().Be(expr); clause.Operator.Should().Be(op); clause.RHS.Should().Be(expr); fields.Should().BeEquivalentTo(new IField[] { mockField.Object, mockField.Object }); }
public void CrossFieldClauseNegated_GTE() { // Arrange var mockField = new Mock <IField>(); var expr = new FieldExpression(mockField.Object); var op = ComparisonOperator.GTE; mockField.Setup(field => field.DataType).Returns(DBType.Int32); var clause = new CrossFieldClause(expr, op, expr); var mockBuilder = new Mock <IConstraintDeclBuilder>(); // Act var negation = clause.Negation(); negation.AddDeclarationTo(mockBuilder.Object); // Assert var expected = new CrossFieldClause(expr, ComparisonOperator.LT, expr); mockBuilder.Verify(builder => builder.AddClause(expected.Matcher())); mockBuilder.VerifyNoOtherCalls(); }