public void OnContinueRethrowCancelReasonWhenPromiseIsCanceled0() { CancelationSource cancelationSource1 = CancelationSource.New(); var deferred = Promise.NewDeferred(cancelationSource1.Token); CancelationSource cancelationSource2 = CancelationSource.New(); var deferredInt = Promise.NewDeferred <int>(cancelationSource2.Token); int cancelations = 0; string cancelation = "Cancel"; Promise.ResultContainer voidContainer = default(Promise.ResultContainer); Promise <int> .ResultContainer intContainer = default(Promise <int> .ResultContainer); TestHelper.AddContinueCallbacks <int, string>(deferred.Promise, onContinue: r => voidContainer = r, promiseToVoid: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); } ); TestHelper.AddContinueCallbacks <int, int, string>(deferredInt.Promise, onContinue: r => intContainer = r, promiseToVoid: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); } ); cancelationSource1.Cancel(cancelation); cancelationSource2.Cancel(cancelation); Promise.Manager.HandleCompletes(); Assert.AreEqual( (TestHelper.continueVoidCallbacks + TestHelper.continueTCallbacks) * 2, cancelations ); cancelationSource1.Dispose(); cancelationSource2.Dispose(); TestHelper.Cleanup(); }
public void OnContinueRethrowCancelReasonWhenPromiseIsCanceled0() { var deferred = Promise.NewDeferred(); var deferredInt = Promise.NewDeferred <int>(); int cancelations = 0; string cancelation = "Cancel"; Promise.ResultContainer voidContainer = default(Promise.ResultContainer); Promise <int> .ResultContainer intContainer = default(Promise <int> .ResultContainer); TestHelper.AddContinueCallbacks <int, string>(deferred.Promise, onContinue: r => voidContainer = r, promiseToVoid: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); } ); TestHelper.AddContinueCallbacks <int, int, string>(deferredInt.Promise, onContinue: r => intContainer = r, promiseToVoid: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(cancelation, e.Value); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); } ); deferred.Cancel(cancelation); deferredInt.Cancel(cancelation); Promise.Manager.HandleCompletes(); Assert.AreEqual(TestHelper.continueVoidCallbacks + TestHelper.continueTCallbacks, cancelations); // Clean up. GC.Collect(); Promise.Manager.HandleCompletesAndProgress(); LogAssert.NoUnexpectedReceived(); }
public void OnContinueRethrowRejectReasonWhenPromiseIsRejected() { var deferred = Promise.NewDeferred(); var deferredInt = Promise.NewDeferred <int>(); int rejections = 0; string rejection = "Reject"; Promise.ResultContainer voidContainer = default(Promise.ResultContainer); Promise <int> .ResultContainer intContainer = default(Promise <int> .ResultContainer); TestHelper.AddContinueCallbacks <int, string>(deferred.Promise, onContinue: r => voidContainer = r, promiseToVoid: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); voidContainer.RethrowIfRejected(); }, promiseToConvert: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); voidContainer.RethrowIfRejected(); return(0); }, promiseToPromise: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); voidContainer.RethrowIfRejected(); return(null); }, promiseToPromiseConvert: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); voidContainer.RethrowIfRejected(); return(null); } ); TestHelper.AddContinueCallbacks <int, int, string>(deferredInt.Promise, onContinue: r => intContainer = r, promiseToVoid: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); intContainer.RethrowIfRejected(); }, promiseToConvert: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); intContainer.RethrowIfRejected(); return(0); }, promiseToPromise: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); intContainer.RethrowIfRejected(); return(null); }, promiseToPromiseConvert: p => { p.Catch((object e) => { Assert.AreEqual(rejection, e); ++rejections; }); intContainer.RethrowIfRejected(); return(null); } ); deferred.Reject(rejection); deferredInt.Reject(rejection); Promise.Manager.HandleCompletes(); Assert.AreEqual( (TestHelper.continueVoidCallbacks + TestHelper.continueTCallbacks) * 2, rejections ); TestHelper.Cleanup(); }