public void ExecuteRethrowsNormalException()
 {
     // Fixture setup
     var cmd = new DelegatingGuardClauseCommand { OnExecute = v => { throw new InvalidOperationException(); } };
     var sut = new ReflectionExceptionUnwrappingCommand(cmd);
     // Exercise system and verify outcome
     var dummyValue = new object();
     Assert.Throws<InvalidOperationException>(() =>
         sut.Execute(dummyValue));
     // Teardown
 }
 public void ExecuteUnwrapsAndThrowsInnerExceptionFromTargetInvocationException()
 {
     // Fixture setup
     var expectedException = new InvalidOperationException();
     var cmd = new DelegatingGuardClauseCommand { OnExecute = v => { throw new TargetInvocationException(expectedException); } };
     var sut = new ReflectionExceptionUnwrappingCommand(cmd);
     // Exercise system and verify outcome
     var dummyValue = new object();
     var e = Assert.Throws<InvalidOperationException>(() =>
         sut.Execute(dummyValue));
     Assert.Equal(expectedException, e);
     // Teardown
 }
 public void ExecuteExecutesDecoratedCommand()
 {
     // Fixture setup
     var mockVerified = false;
     var expectedValue = new object();
     var cmd = new DelegatingGuardClauseCommand { OnExecute = v => mockVerified = expectedValue.Equals(v) };
     var sut = new ReflectionExceptionUnwrappingCommand(cmd);
     // Exercise system
     sut.Execute(expectedValue);
     // Verify outcome
     Assert.True(mockVerified, "Mock verified.");
     // Teardown
 }