public async Task InvokeTask_ShouldCallInvokeOnBothMocks_AndReturnFalse()
        {
            // Arrange
            MockMockMethodWithParam <string> mockMockMethodWithParam = new MockMockMethodWithParam <string> .Builder().Invoke().Build();

            MockMockMethodWithResponse <bool> mockMockMethodWithResponse = new MockMockMethodWithResponse <bool> .Builder().Invoke(false).Build();

            MockMethodWithParamAndResponse <string, bool> subject = new ReflectionObject <MockMethodWithParamAndResponse <string, bool> >("methodName", mockMockMethodWithParam, mockMockMethodWithResponse).Object();

            // Act
            bool actual = await subject.InvokeTask("expected");

            // Assert
            actual.Should().BeFalse();
        }
        public void Invoke_ShouldFlagInvoked_AndNotExcept()
        {
            // Arrange
            MockMockMethodWithParam <string> mockMockMethodWithParam = new MockMockMethodWithParam <string> .Builder().Invoke().Build();

            MockMockMethodWithResponse <bool> mockMockMethodWithResponse = new MockMockMethodWithResponse <bool> .Builder().Invoke(true).Build();

            MockMethodWithParamAndResponse <string, bool> subject = new ReflectionObject <MockMethodWithParamAndResponse <string, bool> >("methodName", mockMockMethodWithParam, mockMockMethodWithResponse).Object();

            // Act
            bool actual = subject.Invoke("expected");

            // Assert
            subject.AssertInvoked();
        }
        public void Invoke_ShouldCallInvokeOnBothMocks_AndReturnTrue()
        {
            // Arrange
            MockMockMethodWithParam <string> mockMockMethodWithParam = new MockMockMethodWithParam <string> .Builder().Invoke().Build();

            MockMockMethodWithResponse <bool> mockMockMethodWithResponse = new MockMockMethodWithResponse <bool> .Builder().Invoke(true).Build();

            MockMethodWithParamAndResponse <string, bool> subject = new ReflectionObject <MockMethodWithParamAndResponse <string, bool> >("methodName", mockMockMethodWithParam, mockMockMethodWithResponse).Object();

            // Act
            bool actual = subject.Invoke("expected");

            // Assert
            actual.Should().BeTrue();
        }
        public void AssertCustom_ShouldInvokeOnParamMock()
        {
            // Arrange
            MockMockMethodWithParam <string> mockMockMethodWithParam = new MockMockMethodWithParam <string> .Builder().AssertCustom().Build();

            MockMockMethodWithResponse <bool> mockMockMethodWithResponse = new MockMockMethodWithResponse <bool> .Builder().Build();

            MockMethodWithParamAndResponse <string, bool> subject = new ReflectionObject <MockMethodWithParamAndResponse <string, bool> >("methodName", mockMockMethodWithParam, mockMockMethodWithResponse).Object();


            // Act
            subject.AssertCustom(o => o.Should().Be("expected"));

            // Assert
            mockMockMethodWithParam.AssertAssertCustomInvoked();
        }
        public void UpdateInvocation_funcs_ShouldInvokeOnMocks()
        {
            // Arrange
            MockMockMethodWithParam <string> mockMockMethodWithParam = new MockMockMethodWithParam <string> .Builder().UpdateInvocation().Build();

            MockMockMethodWithResponse <bool> mockMockMethodWithResponse = new MockMockMethodWithResponse <bool> .Builder().UpdateInvocationWithFunc().Build();

            MockMethodWithParamAndResponse <string, bool> subject = new ReflectionObject <MockMethodWithParamAndResponse <string, bool> >("methodName", mockMockMethodWithParam, mockMockMethodWithResponse).Object();

            // Act
            subject.UpdateInvocation(() => true);

            // Assert
            mockMockMethodWithParam.AssertUpdateInvocationInvoked();
            mockMockMethodWithResponse.AssertUpdateInvocationFuncInvoked();
        }
        public void UpdateInvocation_Param_ShouldInvokeOnMocks()
        {
            // Arrange
            bool[] expected = { true, false };
            MockMockMethodWithParam <string> mockMockMethodWithParam = new MockMockMethodWithParam <string> .Builder().UpdateInvocation().Build();

            MockMockMethodWithResponse <bool> mockMockMethodWithResponse = new MockMockMethodWithResponse <bool> .Builder().UpdateInvocationWithTResponse().Build();

            MockMethodWithParamAndResponse <string, bool> subject = new ReflectionObject <MockMethodWithParamAndResponse <string, bool> >("methodName", mockMockMethodWithParam, mockMockMethodWithResponse).Object();

            // Act
            subject.UpdateInvocation(expected);

            // Assert
            mockMockMethodWithParam.AssertUpdateInvocationInvoked();
            mockMockMethodWithResponse.AssertUpdateInvocationResponseInvokedWith(expected);
        }