示例#1
0
        public void NonGenericIComparableComparisonsShouldTryToCallLeftHandCompareToFirst()
        {
            var left  = new MutatingComparable(0);
            var right = new object();

            var comparer = Comparer <object> .Default;

            Assert.Equal(0, comparer.Compare(left, right));
            Assert.Equal(1, comparer.Compare(left, right));
            // If the lhs does not implement IComparable, the rhs should be checked
            // Additionally the result from rhs.CompareTo should be negated
            Assert.Equal(-2, comparer.Compare(right, left));
        }
示例#2
0
        public void IComparableComparisonsShouldTryToCallLeftHandCompareToFirst()
        {
            var left  = new MutatingComparable(0);
            var right = new MutatingComparable(0);

            var comparer = Comparer <MutatingComparable> .Default;

            // Every CompareTo() call yields the comparable's current
            // state and then increments it
            Assert.Equal(0, comparer.Compare(left, right));
            Assert.Equal(1, comparer.Compare(left, right));
            Assert.Equal(0, comparer.Compare(right, left));
        }
示例#3
0
        public void NullableOfIComparableComparisonsShouldTryToCallLeftHandCompareToFirst()
        {
            // If two non-null nullables are passed in, Default<T?>.Compare
            // should try to call the left-hand side's CompareTo() first

            // Would have liked to reuse MutatingComparable here, but it is
            // a class and can't be nullable, so it's necessary to wrap it
            // in a struct

            var leftValue  = new MutatingComparable(0);
            var rightValue = new MutatingComparable(0);

            var left  = new ValueComparable <MutatingComparable>?(ValueComparable.Create(leftValue));
            var right = new ValueComparable <MutatingComparable>?(ValueComparable.Create(rightValue));

            var comparer = Comparer <ValueComparable <MutatingComparable>?> .Default;

            Assert.Equal(0, comparer.Compare(left, right));
            Assert.Equal(1, comparer.Compare(left, right));
            Assert.Equal(0, comparer.Compare(right, left));
        }