Example #1
0
            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)
            {
                PredicateCondition c = obj as PredicateCondition;

                if (c == null)
                {
                    return(false);
                }

                return(m_predicate.Equals(c.m_predicate) && m_invert == c.m_invert);
            }
Example #3
0
            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);
            }
Example #4
0
        private static Condition internal_buildCondition(string modifier1, Name v1, string modifier2, Name v2, ComparisonOperator op)
        {
            IValueRetriever value1 = ConvertToValueRetriever(modifier1, v1);
            IValueRetriever 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)
            {
                IValueRetriever prop = value1.InnerName.IsPrimitive ? value2 : value1;
                string          str  = (value1.InnerName.IsPrimitive ? value1.InnerName : value2.InnerName).ToString();
                op = v1.IsPrimitive ? op.Mirror() : op;

                bool boolValue;
                if (bool.TryParse(str, out boolValue))
                {
                    switch (op)
                    {
                    case ComparisonOperator.Equal:
                        return(new PredicateCondition(prop, boolValue));

                    case ComparisonOperator.NotEqual:
                        return(new PredicateCondition(prop, !boolValue));
                    }
                }

                return(new PrimitiveComparisonCondition(prop, (Name)str, 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));
            }