public void FinallyAddRemoveThreadSafe() { var called = 0; var value = new Exception(); var token = new MutableAsyncToken <MyClass>(); void FinallyAction(IMutableAsyncToken <MyClass> result) { called++; Assert.AreSame(token, result); token.Remove(FinallyAction); } token.OnFinally(_ => { token.Remove(FinallyAction); }); token.OnFinally(FinallyAction); token.Fail(value); Assert.AreEqual(1, called); }
public void FinallyPost() { var isCalled = false; var value = new Exception(); var token = new MutableAsyncToken <MyClass>(); token.Fail(value); token .OnFinally(result => { isCalled = true; Assert.AreSame(token, result); }); Assert.IsTrue(isCalled); }
public void FinallyMulti() { var called = 0; var value = new Exception(); var token = new MutableAsyncToken <MyClass>(); token .OnFinally(result => { called++; Assert.AreSame(token, result); }); token.Fail(value); token.Fail(value); Assert.AreEqual(2, called); }