public void should_be_able_to_choose_most_specific_type_when_overloading() { var demoClass = new MethodOverloadDemoClass(); string returnValueForBaseClassOverloading = demoClass.Foo(new MethodOverloadBaseClass()); string returnValueForDerivedClassOverloading = demoClass.Foo(new MethodOverloadDerivedClass()); string returnValueForCastingOverloading = demoClass.Foo((MethodOverloadBaseClass) (new MethodOverloadDerivedClass())); const string expectedBaseClassOverloadingValue = ""; const string expectedDerivedClassOverloadingValue = ""; const string expectedCastOverloadingValue = ""; Assert.Equal(expectedBaseClassOverloadingValue, returnValueForBaseClassOverloading); Assert.Equal(expectedDerivedClassOverloadingValue, returnValueForDerivedClassOverloading); Assert.Equal(expectedCastOverloadingValue, returnValueForCastingOverloading); }
public void should_choose_correct_overloading_method_at_compile_time_3() { var demoObject = new MethodOverloadDemoClass(); const short argument = 2; string chosenOne = demoObject.Foo(argument); // change variable value to correct one. const string expected = "Foo()"; Assert.Equal(expected, chosenOne); }