public void RequestedParameterNameIsCorrect()
        {
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var parameter      = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            var sut            = new MethodInvokeCommand(dummyMethod, dummyExpansion, parameter);

            var actual = sut.RequestedParameterName;

            Assert.Equal(parameter.Name, actual);
        }
Exemplo n.º 2
0
        public void SutIsGuardClauseCommand()
        {
            // Arrange
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var dummyParameter = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            // Act
            var sut = new MethodInvokeCommand(dummyMethod, dummyExpansion, dummyParameter);

            // Assert
            Assert.IsAssignableFrom <IGuardClauseCommand>(sut);
        }
Exemplo n.º 3
0
        public void SutIsGuardClauseCommand()
        {
            // Fixture setup
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var dummyParameter = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            // Exercise system
            var sut = new MethodInvokeCommand(dummyMethod, dummyExpansion, dummyParameter);

            // Verify outcome
            Assert.IsAssignableFrom <IGuardClauseCommand>(sut);
            // Teardown
        }
Exemplo n.º 4
0
        public void RequestedTypeIsCorrect()
        {
            // Arrange
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var parameter      = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            var sut            = new MethodInvokeCommand(dummyMethod, dummyExpansion, parameter);
            // Act
            var result = sut.RequestedType;

            // Assert
            Assert.Equal(parameter.ParameterType, result);
        }
Exemplo n.º 5
0
        public void ExpansionIsCorrect()
        {
            // Arrange
            var dummyMethod    = new DelegatingMethod();
            var expansion      = new DelegatingExpansion <object>();
            var dummyParameter = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            var sut            = new MethodInvokeCommand(dummyMethod, expansion, dummyParameter);
            // Act
            IExpansion <object> result = sut.Expansion;

            // Assert
            Assert.Equal(expansion, result);
        }
Exemplo n.º 6
0
        public void ParameterInfoIsCorrect()
        {
            // Fixture setup
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var parameter      = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            var sut            = new MethodInvokeCommand(dummyMethod, dummyExpansion, parameter);
            // Exercise system
            ParameterInfo result = sut.ParameterInfo;

            // Verify outcome
            Assert.Equal(parameter, result);
            // Teardown
        }
Exemplo n.º 7
0
        public void CreateExceptionReturnsExceptionWithCorrectMessage()
        {
            // Arrange
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var parameter      = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            var sut            = new MethodInvokeCommand(dummyMethod, dummyExpansion, parameter);
            // Act
            var message = Guid.NewGuid().ToString();
            var result  = sut.CreateException(message);
            // Assert
            var e = Assert.IsAssignableFrom <GuardClauseException>(result);

            Assert.Contains(message, e.Message);
        }
Exemplo n.º 8
0
        public void CreateExceptionWithInnerReturnsExceptionWithCorrectInnerException()
        {
            // Fixture setup
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var parameter      = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            var sut            = new MethodInvokeCommand(dummyMethod, dummyExpansion, parameter);
            // Exercise system
            var message = Guid.NewGuid().ToString();
            var inner   = new Exception();
            var result  = sut.CreateException(message, inner);
            // Verify outcome
            var e = Assert.IsAssignableFrom <GuardClauseException>(result);

            Assert.Equal(inner, e.InnerException);
            // Teardown
        }
Exemplo n.º 9
0
        public void CreateExceptionWithCustomFailureReasonReturnsExceptionWithCorrectMessageAndInner()
        {
            // Arrange
            var dummyMethod    = new DelegatingMethod();
            var dummyExpansion = new DelegatingExpansion <object>();
            var parameter      = MethodInvokeCommandTest.CreateAnonymousParameterInfo();
            var sut            = new MethodInvokeCommand(dummyMethod, dummyExpansion, parameter);
            var inner          = new Exception();
            // Act
            var dummyValue    = "dummy value";
            var failureReason = "MY_CUSTOM_MESSAGE";
            var result        = sut.CreateException(dummyValue, failureReason, inner);
            // Assert
            var ex = Assert.IsAssignableFrom <GuardClauseException>(result);

            Assert.Contains(", and MY_CUSTOM_MESSAGE", ex.Message);
            Assert.Equal(inner, ex.InnerException);
        }
        /// <summary>
        /// Attempts to retrieve an instance of <see cref="MethodInvokeCommand"/> from an instance
        /// of <see cref="IGuardClauseCommand"/>.
        /// </summary>
        /// <param name="command">The <see cref="IGuardClauseCommand"/> to attempt to extract an
        /// instance of <see cref="MethodInvokeCommand"/> from.</param>
        /// <param name="methodInvokeCommand">Will contain an instance of
        /// <see cref="MethodInvokeCommand"/> if one is found; otherwise <see langword="null"/>.
        /// </param>
        /// <returns><see langword="true"/> if an instance of <see cref="MethodInvokeCommand"/> was
        /// found on the specified <see cref="IGuardClauseCommand"/>; otherwise
        /// <see langword="false"/>.</returns>
        public bool TryGetMethodInvokeCommand(
            IGuardClauseCommand command,
            out MethodInvokeCommand methodInvokeCommand)
        {
            ParameterValidation.IsNotNull(command, nameof(command));

            methodInvokeCommand =
                (command as ReflectionExceptionUnwrappingCommand)?.Command as MethodInvokeCommand;

            if (methodInvokeCommand == null && command.GetType() == TaskReturnType)
            {
                methodInvokeCommand = (TaskReturnType.GetField(
                                           nameof(command),
                                           BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(command)
                                       as ReflectionExceptionUnwrappingCommand)?.Command as MethodInvokeCommand;
            }

            return(methodInvokeCommand != null);
        }
Exemplo n.º 11
0
        public void ExecuteCorrectlyInvokesMethod()
        {
            // Arrange
            var value     = new object();
            var arguments = new[] { new object(), new object(), new object() };
            var expansion = new DelegatingExpansion <object> {
                OnExpand = v => v == value ? arguments : new object[0]
            };
            var dummyParameter = MethodInvokeCommandTest.CreateAnonymousParameterInfo();

            var mockVerified = false;
            var method       = new DelegatingMethod {
                OnInvoke = a => mockVerified = a == arguments
            };

            var sut = new MethodInvokeCommand(method, expansion, dummyParameter);

            // Act
            sut.Execute(value);
            // Assert
            Assert.True(mockVerified);
        }
Exemplo n.º 12
0
        public void VerifyWithCommandThatHasNoMethodInvokeCommandDoesNotThrow()
        {
            var fixture                             = new Fixture();
            var specimenBuilderMock                 = new Mock <ISpecimenBuilder>();
            var guardClauseExtensionsMock           = new Mock <IGuardClauseExtensions>();
            MethodInvokeCommand methodInvokeCommand = null;

            guardClauseExtensionsMock
            .Setup(e => e.TryGetMethodInvokeCommand(
                       It.IsAny <IGuardClauseCommand>(),
                       out methodInvokeCommand))
            .Returns(false);
            var sut = new ExceptionBehaviorExpectation <InvalidOperationException>(
                specimenBuilderMock.Object,
                guardClauseExtensionsMock.Object,
                fixture.Create <string>(),
                fixture.Create <Guid>());

            var ex = Record.Exception(() => sut.Verify(new Mock <IGuardClauseCommand>().Object));

            Assert.Null(ex);
        }