public void OnContinueRethrowCancelReasonWhenPromiseIsCanceled1() { CancelationSource cancelationSource1 = CancelationSource.New(); var deferred = Promise.NewDeferred(cancelationSource1.Token); CancelationSource cancelationSource2 = CancelationSource.New(); var deferredInt = Promise.NewDeferred <int>(cancelationSource2.Token); int cancelations = 0; 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(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); } ); TestHelper.AddContinueCallbacks <int, int, string>(deferredInt.Promise, onContinue: r => intContainer = r, promiseToVoid: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); } ); cancelationSource1.Cancel(); cancelationSource2.Cancel(); Promise.Manager.HandleCompletes(); Assert.AreEqual( (TestHelper.continueVoidCallbacks + TestHelper.continueTCallbacks) * 2, cancelations ); cancelationSource1.Dispose(); cancelationSource2.Dispose(); TestHelper.Cleanup(); }
public void OnContinueRethrowCancelReasonWhenPromiseIsCanceled1() { var deferred = Promise.NewDeferred(); var deferredInt = Promise.NewDeferred <int>(); int cancelations = 0; 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(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); voidContainer.RethrowIfCanceled(); return(null); } ); TestHelper.AddContinueCallbacks <int, int, string>(deferredInt.Promise, onContinue: r => intContainer = r, promiseToVoid: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); }, promiseToConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); return(0); }, promiseToPromise: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); }, promiseToPromiseConvert: p => { p.CatchCancelation(e => { Assert.AreEqual(null, e.ValueType); ++cancelations; }); intContainer.RethrowIfCanceled(); return(null); } ); deferred.Cancel(); deferredInt.Cancel(); Promise.Manager.HandleCompletes(); Assert.AreEqual(TestHelper.continueVoidCallbacks + TestHelper.continueTCallbacks, cancelations); // Clean up. GC.Collect(); Promise.Manager.HandleCompletesAndProgress(); LogAssert.NoUnexpectedReceived(); }