public void When_comparing_object_with_overriden_equality_behavior_to_derived_object_Should_use_overriden_behavior() { var obj = new CustomEqualityObject(); var derivedObj = new DerivedCustomEqualityObject(); Assert.Equal(obj, derivedObj); Assert.True(obj.EqualsCalled); Assert.Equal(obj.EqualsCalledOn, derivedObj); }
public void When_comparing_enumerables_of_custom_equality_objects_Should_use_custom_equals_on_the_base_object_for_each_item() { var obj1 = new CustomEqualityObject(); var obj2 = new DerivedCustomEqualityObject(); var list1 = new List <CustomEqualityObject> { obj1, obj2 }; var obj3 = new DerivedCustomEqualityObject(); var obj4 = new CustomEqualityObject(); var list2 = new List <CustomEqualityObject> { obj3, obj4 }; Record.Exception(() => Assert.Equal(list1, list2)); Assert.True(obj1.EqualsCalled); Assert.True(obj4.EqualsCalled); Assert.Equal(obj1.EqualsCalledOn, obj3); Assert.Equal(obj4.EqualsCalledOn, obj2); }