예제 #1
0
        public void ExecuteValueMethodWithReturnType()
        {
            var executor = GetExecutorForMethod(nameof(TestObject.ValueMethodWithReturnType));
            var result   = executor.Execute(
                _targetObject,
                new object[] { 10 });
            var resultObject = Assert2.IsType <TestObject>(result);

            Assert2.False(executor.IsMethodAsync);
            Assert2.Equal("Hello", resultObject.value);
        }
예제 #2
0
        public async Task ExecuteValueMethodWithReturnTypeAsync()
        {
            var executor = GetExecutorForMethod(nameof(TestObject.ValueMethodWithReturnTypeAsync));
            var result   = await executor.ExecuteAsync(
                _targetObject,
                new object[] { 10 });

            var resultObject = Assert2.IsType <TestObject>(result);

            Assert2.True(executor.IsMethodAsync);
            Assert2.Equal("Hello", resultObject.value);
        }
예제 #3
0
        public void ExecuteValueMethodUpdateValue()
        {
            var executor  = GetExecutorForMethod(nameof(TestObject.ValueMethodUpdateValue));
            var parameter = new TestObject();
            var result    = executor.Execute(
                _targetObject,
                new object[] { parameter });
            var resultObject = Assert2.IsType <TestObject>(result);

            Assert2.False(executor.IsMethodAsync);
            Assert2.Equal("HelloWorld", resultObject.value);
        }
예제 #4
0
        public async Task TargetMethodReturningCustomAwaitableOfValueType_CanInvokeViaExecuteAsync()
        {
            // Arrange
            var executor = GetExecutorForMethod(nameof(TestObject.CustomAwaitableOfValueTypeAsync));

            // Act
            var result = await executor.ExecuteAsync(_targetObject, new object[] { 123, 456 });

            // Assert
            Assert2.True(executor.IsMethodAsync);
            Assert2.Same(typeof(int), executor.AsyncResultType);
            Assert2.NotNull(result);
            Assert2.IsType <int>(result);
            Assert2.Equal(579, (int)result);
        }
예제 #5
0
        public async Task TargetMethodReturningCustomAwaitableOfReferenceType_CanInvokeViaExecuteAsync()
        {
            // Arrange
            var executor = GetExecutorForMethod(nameof(TestObject.CustomAwaitableOfReferenceTypeAsync));

            // Act
            var result = await executor.ExecuteAsync(_targetObject, new object[] { "Hello", 123 });

            // Assert
            Assert2.True(executor.IsMethodAsync);
            Assert2.Same(typeof(TestObject), executor.AsyncResultType);
            Assert2.NotNull(result);
            Assert2.IsType <TestObject>(result);
            Assert2.Equal("Hello 123", ((TestObject)result).value);
        }