Example #1
0
        /// <summary>
        /// Compares two objects, ensuring all failure path are executed.
        /// </summary>
        /// <param name="object1">The first object to compare.</param>
        /// <param name="object2">The Second object to compare.</param>
        /// <param name="canReturnFalse">True if this comparer might return false during normal operations.</param>
        public static bool CoverIsEqual(IEqualComparable object1, IEqualComparable object2, bool canReturnFalse = false)
        {
            CompareEqual Comparer = New(canReturnFalse);

            bool IsValid = object1.IsEqual(Comparer, object2);

            if (!IsValid)
            {
                return(false);
            }

            int ComparisonCount = Comparer.ComparisonCount;

            for (int i = 0; i <= ComparisonCount; i++)
            {
                Comparer.SetFailIndex(i);
                object1.IsEqual(Comparer, object2);
            }

            return(true);
        }
Example #2
0
        /// <summary>
        /// Checks that two objects are equal.
        /// </summary>
        /// <param name="obj1">The first object.</param>
        /// <param name="obj2">The second object.</param>
        public bool VerifyEqual(IEqualComparable obj1, IEqualComparable obj2)
        {
            Debug.Assert(obj1 != null);
            Debug.Assert(obj2 != null);

            bool Result;

            if (!ComparedObjectList.ContainsKey(obj1))
            {
                ComparedObjectList.Add(obj1, false);
            }
            else if (!ComparedObjectList.ContainsKey(obj2))
            {
                ComparedObjectList.Add(obj2, false);
            }
            else
            {
                Result = true;

                if (ComparisonCount == FailIndex)
                {
                    return(false);
                }

                ComparisonCount++;

                return(Result);
            }

            if (obj1.IsEqual(this, obj2))
            {
                Result = true;
            }
            else if (CanReturnFalse)
            {
                Result = false;
            }
            else
            {
                Result = false; // For breakpoints.
            }
            if (ComparisonCount == FailIndex)
            {
                return(false);
            }

            ComparisonCount++;

            return(Result);
        }