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); }
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); }
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 }
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); }
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); }
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 }
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); }
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 }
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); }
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); }
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); }