public void VerifyExceptionHandlerCanWrapExceptions() { var jetApi = this.mocks.Stub <IJetApi>(); Api.Impl = jetApi; SetupResult.For( jetApi.JetBeginTransaction(JET_SESID.Nil)) .IgnoreArguments() .Return((int)JET_err.TransTooDeep); this.mocks.ReplayAll(); Api.ErrorHandler handler = ex => { throw new InvalidOperationException("test"); }; try { Api.HandleError += handler; Api.JetBeginTransaction(JET_SESID.Nil); Assert.Fail("Expected an invalid operation exception"); } catch (InvalidOperationException) { } Api.HandleError -= handler; }
public void VerifyErrorHandlerIsInvokedOnException() { var jetApi = this.mocks.Stub <IJetApi>(); Api.Impl = jetApi; SetupResult.For( jetApi.JetBeginTransaction(JET_SESID.Nil)) .IgnoreArguments() .Return((int)JET_err.TransTooDeep); this.mocks.ReplayAll(); bool eventWasCalled = false; JET_err error = JET_err.Success; Api.ErrorHandler handler = errArg => { eventWasCalled = true; error = errArg; }; try { Api.HandleError += handler; Api.JetBeginTransaction(JET_SESID.Nil); } catch (EsentErrorException) { } Api.HandleError -= handler; Assert.IsTrue(eventWasCalled); Assert.AreEqual(JET_err.TransTooDeep, error); }