Ejemplo n.º 1
0
        public void should_choose_correct_overloading_method_at_compile_time_2()
        {
            var demoObject = new MethodOverloadDemoClass();

            string chosenOne = demoObject.Foo((object)1);

            // change variable value to correct one.
            const string expected = "Foo(object)";

            Assert.Equal(expected, chosenOne);
        }
Ejemplo n.º 2
0
        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(int)";      //short是int的一种情况;

            Assert.Equal(expected, chosenOne);
        }
Ejemplo n.º 3
0
        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    = "Foo(MethodOverloadBaseClass)";
            const string expectedDerivedClassOverloadingValue = "Foo(MethodOverloadDerivedClass)";
            const string expectedCastOverloadingValue         = "Foo(MethodOverloadBaseClass)";

            Assert.Equal(expectedBaseClassOverloadingValue, returnValueForBaseClassOverloading);
            Assert.Equal(expectedDerivedClassOverloadingValue, returnValueForDerivedClassOverloading);
            Assert.Equal(expectedCastOverloadingValue, returnValueForCastingOverloading);
        }