public async Task TestMethodWithParameters() { var methods = new TestMethods(); var method = methods.GetType().GetTypeInfo().GetMethods().Single(x => x.Name == nameof(TestMethods.MethodWithParameters)); var methodInvoker = new MethodInvoker(method, null, null); await methodInvoker.Invoke(methods, new object[] { "asd", 123, this }); Assert.True(methods.MethodWithParametersInvoked); }
public async Task TestMethodWithInvalidAmountParameters() { var methods = new TestMethods(); var method = methods.GetType().GetTypeInfo().GetMethods().Single(x => x.Name == nameof(TestMethods.MethodWithParameters)); var methodInvoker = new MethodInvoker(method, null, null); await Assert.ThrowsAsync <IndexOutOfRangeException>( async() => await methodInvoker.Invoke(methods, new object[] { "asd", 123 })); Assert.False(methods.MethodWithParametersInvoked); }
public async Task TestMethodWithInvalidTypeParameters() { var methods = new TestMethods(); var method = methods.GetType().GetTypeInfo().GetMethods().Single(x => x.Name == nameof(TestMethods.MethodWithParameters)); var methodInvoker = new MethodInvoker(method, null, null); await Assert.ThrowsAsync <InvalidCastException>( async() => await methodInvoker.Invoke(methods, new object[] { 123, "123", true })); Assert.False(methods.MethodWithParametersInvoked); }
public async Task TestMethodWithReturnValue() { var methods = new TestMethods(); var method = methods.GetType().GetTypeInfo().GetMethods().Single(x => x.Name == nameof(TestMethods.MethodWithReturnValue)); var methodInvoker = new MethodInvoker(method, null, null); var task = methodInvoker.Invoke(methods, null); await task; Assert.True(methods.MethodWithReturnValueInvoked); var result = await Assert.IsType <Task <string> >(task); Assert.Equal("test", result); }