public void opInequality_ValueObjectOfT_ValueObjectOfT_whenSame()
        {
            var operand1 = new ComparableObjectDerived("value");
            var operand2 = operand1;

            Assert.False(operand1 != operand2);
        }
        public void opImplicit_string_ValueObjectOfT()
        {
            const string expected = "value";
            string       actual   = new ComparableObjectDerived("value");

            Assert.Equal(expected, actual);
        }
        public void opGreaterThan_ValueObjectOfT_ValueObjectOfT_whenSame()
        {
            var operand1 = new ComparableObjectDerived("value");
            var operand2 = operand1;

            Assert.False(operand1 > operand2);
        }
        public void opInequality_ValueObjectOfT_ValueObjectOfT_whenTrue()
        {
            var operand1 = new ComparableObjectDerived("foo");
            var operand2 = new ComparableObjectDerived("bar");

            Assert.True(operand1 != operand2);
        }
        public void opGreaterThan_ValueObjectOfT_ValueObjectOfT_whenSame()
        {
            var operand1 = new ComparableObjectDerived("value");
            var operand2 = operand1;

            Assert.False(operand1 > operand2);
        }
        public void op_Equals_objectDiffers()
        {
            var obj       = new ComparableObjectDerived();
            var comparand = new ComparableObjectDerived("value");

            Assert.False(obj.Equals(comparand));
        }
        public void opEquality_ValueObjectOfT_ValueObjectOfT_whenTrue()
        {
            var operand1 = new ComparableObjectDerived("value");
            var operand2 = new ComparableObjectDerived("value");

            Assert.True(operand1 == operand2);
        }
        public void opGreaterThan_ValueObjectOfT_ValueObjectOfT_whenTrue()
        {
            var operand1 = new ComparableObjectDerived("foo");
            var operand2 = new ComparableObjectDerived("bar");

            Assert.True(operand1 > operand2);
        }
        public void opEquality_ValueObjectOfT_ValueObjectOfT_whenFalse()
        {
            var operand1 = new ComparableObjectDerived("foo");
            var operand2 = new ComparableObjectDerived("bar");

            Assert.False(operand1 == operand2);
        }
        public void opGreaterThan_ValueObjectOfT_ValueObjectOfT_whenFalse()
        {
            var operand1 = new ComparableObjectDerived("bar");
            var operand2 = new ComparableObjectDerived("foo");

            Assert.False(operand1 > operand2);
        }
        public void opEquality_ValueObjectOfT_ValueObjectOfT_whenFalse()
        {
            var operand1 = new ComparableObjectDerived("foo");
            var operand2 = new ComparableObjectDerived("bar");

            Assert.False(operand1 == operand2);
        }
        public void op_Compare_ValueObjectOfTLesser_ValueObjectOfT()
        {
            var comparand1 = new ComparableObjectDerived("bar");
            var comparand2 = new ComparableObjectDerived("foo");

            Assert.True(ComparableObject.Compare(comparand1, comparand2) < 0);
        }
        public void op_CompareTo_objectLesser()
        {
            var left  = new ComparableObjectDerived("bar");
            var right = new ComparableObjectDerived("foo");

            Assert.True(left.CompareTo(right) < 0);
        }
        public void op_Compare_ValueObjectOfT_ValueObjectOfT_whenSame()
        {
            var comparand1 = new ComparableObjectDerived("value");
            var comparand2 = comparand1;

            Assert.Equal(0, ComparableObject.Compare(comparand1, comparand2));
        }
        public void opLessThan_ValueObjectOfT_ValueObjectOfT_whenFalse()
        {
            var operand1 = new ComparableObjectDerived("foo");
            var operand2 = new ComparableObjectDerived("bar");

            Assert.False(operand1 < operand2);
        }
        public void opEquality_ValueObjectOfT_ValueObjectOfT_whenTrue()
        {
            var operand1 = new ComparableObjectDerived("value");
            var operand2 = new ComparableObjectDerived("value");

            Assert.True(operand1 == operand2);
        }
        public void op_CompareTo_object()
        {
            var left  = new ComparableObjectDerived("value");
            var right = new ComparableObjectDerived("value");

            Assert.Equal(0, left.CompareTo(right));
        }
        public void opLessThan_ValueObjectOfT_ValueObjectOfTNull()
        {
            var operand1 = new ComparableObjectDerived("value");

            Assert.False(operand1 < null);
        }
        public void opLessThan_ValueObjectOfTNull_ValueObjectOfT()
        {
            var operand2 = new ComparableObjectDerived("value");

            Assert.True(null < operand2);
        }
        public void op_CompareTo_object()
        {
            var left = new ComparableObjectDerived("value");
            var right = new ComparableObjectDerived("value");

            Assert.Equal(0, left.CompareTo(right));
        }
        public void op_Compare_ValueObjectOfTLesser_ValueObjectOfT()
        {
            var comparand1 = new ComparableObjectDerived("bar");
            var comparand2 = new ComparableObjectDerived("foo");

            Assert.True(ComparableObject.Compare(comparand1, comparand2) < 0);
        }
        public void op_Equals_objectDiffers()
        {
            var obj = new ComparableObjectDerived();
            var comparand = new ComparableObjectDerived("value");

            Assert.False(obj.Equals(comparand));
        }
        public void op_CompareTo_objectNull()
        {
            var obj = new ComparableObjectDerived("value");

            Assert.True(obj.CompareTo(null) > 0);
        }
        public void opGreaterThan_ValueObjectOfT_ValueObjectOfTNull()
        {
            var operand1 = new ComparableObjectDerived("value");

            Assert.True(operand1 > null);
        }
        public void opGreaterThan_ValueObjectOfTNull_ValueObjectOfT()
        {
            var operand2 = new ComparableObjectDerived("value");

            Assert.False(null > operand2);
        }
        public void op_ToString()
        {
            var obj = new ComparableObjectDerived() as ComparableObject;

            Assert.Equal(string.Empty, obj.ToString());
        }
        public void op_Equals_objectString()
        {
            var obj = new ComparableObjectDerived("value");

            Assert.False(obj.Equals("value"));
        }
        public void op_Compare_ValueObjectOfT_ValueObjectOfTNull()
        {
            var comparand1 = new ComparableObjectDerived("value");

            Assert.True(ComparableObject.Compare(comparand1, null) > 0);
        }
        public void op_Compare_ValueObjectOfTNull_ValueObjectOfT()
        {
            var comparand2 = new ComparableObjectDerived("value");

            Assert.True(ComparableObject.Compare(null, comparand2) < 0);
        }
        public void op_Compare_ValueObjectOfT_ValueObjectOfT_whenSame()
        {
            var comparand1 = new ComparableObjectDerived("value");
            var comparand2 = comparand1;

            Assert.Equal(0, ComparableObject.Compare(comparand1, comparand2));
        }
        public void op_CompareTo_objectSame()
        {
            var obj = new ComparableObjectDerived("value");

            Assert.Equal(0, obj.CompareTo(obj));
        }
        public void op_Compare_ValueObjectOfTNull_ValueObjectOfT()
        {
            var comparand2 = new ComparableObjectDerived("value");

            Assert.True(ComparableObject.Compare(null, comparand2) < 0);
        }
        public void op_Equals_objectString()
        {
            var obj = new ComparableObjectDerived("value");

            Assert.False(obj.Equals("value"));
        }
        public void op_CompareTo_objectNull()
        {
            var obj = new ComparableObjectDerived("value");

            Assert.True(obj.CompareTo(null) > 0);
        }
        public void op_Compare_ValueObjectOfT_ValueObjectOfTNull()
        {
            var comparand1 = new ComparableObjectDerived("value");

            Assert.True(ComparableObject.Compare(comparand1, null) > 0);
        }
        public void opGreaterThan_ValueObjectOfT_ValueObjectOfTNull()
        {
            var operand1 = new ComparableObjectDerived("value");

            Assert.True(operand1 > null);
        }
        public void op_CompareTo_objectLesser()
        {
            var left = new ComparableObjectDerived("bar");
            var right = new ComparableObjectDerived("foo");

            Assert.True(left.CompareTo(right) < 0);
        }
        public void op_CompareTo_objectSame()
        {
            var obj = new ComparableObjectDerived("value");

            Assert.Equal(0, obj.CompareTo(obj));
        }
        public void op_ToString()
        {
            var obj = new ComparableObjectDerived() as ComparableObject;

            Assert.Equal(string.Empty, obj.ToString());
        }
        public void opImplicit_string_ValueObjectOfT()
        {
            const string expected = "value";
            string actual = new ComparableObjectDerived("value");

            Assert.Equal(expected, actual);
        }
        public void opGreaterThan_ValueObjectOfTNull_ValueObjectOfT()
        {
            var operand2 = new ComparableObjectDerived("value");

            Assert.False(null > operand2);
        }
        public void opLessThan_ValueObjectOfT_ValueObjectOfTNull()
        {
            var operand1 = new ComparableObjectDerived("value");

            Assert.False(operand1 < null);
        }
        public void opInequality_ValueObjectOfT_ValueObjectOfT_whenTrue()
        {
            var operand1 = new ComparableObjectDerived("foo");
            var operand2 = new ComparableObjectDerived("bar");

            Assert.True(operand1 != operand2);
        }
        public void opLessThan_ValueObjectOfT_ValueObjectOfT_whenTrue()
        {
            var operand1 = new ComparableObjectDerived("bar");
            var operand2 = new ComparableObjectDerived("foo");

            Assert.True(operand1 < operand2);
        }
        public void opInequality_ValueObjectOfT_ValueObjectOfT_whenSame()
        {
            var operand1 = new ComparableObjectDerived("value");
            var operand2 = operand1;

            Assert.False(operand1 != operand2);
        }
        public void opLessThan_ValueObjectOfTNull_ValueObjectOfT()
        {
            var operand2 = new ComparableObjectDerived("value");

            Assert.True(null < operand2);
        }