public override bool Equals(object obj) { PropertyComparisonCondition c = obj as PropertyComparisonCondition; if (c == null) { return(false); } var p1 = c.Property1; var p2 = c.Property2; var op = c.Operator; if (Operator != op) { op = op.Mirror(); if (Operator != op) { return(false); } var s = p1; p1 = p2; p2 = s; } var result = Property1.Equals(p1) && Property2.Equals(p2); switch (op) { case ComparisonOperator.Equal: case ComparisonOperator.NotEqual: return(result || (Property1.Equals(p2) && Property2.Equals(p1))); } return(result); }
public override bool Equals(object obj) { PrimitiveComparisonCondition o = obj as PrimitiveComparisonCondition; if (o == null) { return(false); } return(m_operation == o.m_operation && m_retriver.Equals(o.m_retriver) && m_value == o.m_value); }
public override bool Equals(object obj) { PredicateCondition c = obj as PredicateCondition; if (c == null) { return(false); } return(m_predicate.Equals(c.m_predicate) && m_invert == c.m_invert); }
private static Condition internal_buildCondition(string modifier1, Name v1, string modifier2, Name v2, ComparisonOperator op) { IValueRetriver value1 = ConvertToValueRetriever(modifier1, v1); IValueRetriver value2 = ConvertToValueRetriever(modifier2, v2); if (value1.Equals(value2)) { throw new InvalidOperationException("Both given property names are intrinsically equal. Condition would always return a constant result."); } if (value1.InnerName.IsPrimitive && value2.InnerName.IsPrimitive && !value1.HasModifier && !value2.HasModifier) { throw new InvalidOperationException("Both given property names are primitive values. Expected at least one non-primitive value."); } if (op == ComparisonOperator.Equal) { //May be a definition if (value1.InnerName.IsVariable && !value1.HasModifier) { return(new EqualityDefinitionCondition(v1, value2)); } if (value2.InnerName.IsVariable && !value2.HasModifier) { return(new EqualityDefinitionCondition(v2, value1)); } } if (value1.InnerName.IsPrimitive != value2.InnerName.IsPrimitive) { IValueRetriver prop = value1.InnerName.IsPrimitive ? value2 : value1; PrimitiveValue value = (value1.InnerName.IsPrimitive ? value1.InnerName : value2.InnerName).GetPrimitiveValue(); op = v1.IsPrimitive ? op.Mirror() : op; if (value.TypeCode == TypeCode.Boolean) { switch (op) { case ComparisonOperator.Equal: return(new PredicateCondition(prop, value)); case ComparisonOperator.NotEqual: return(new PredicateCondition(prop, !value)); } } return(new PrimitiveComparisonCondition(prop, value, op)); } return(new PropertyComparisonCondition(value1, value2, op)); }
public override bool Equals(object obj) { var d = obj as EqualityDefinitionCondition; if (d == null) { return(false); } if (!m_variable.Equals(d.m_variable)) { return(false); } return(m_other.Equals(d.m_other)); }