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 SucceedAddRemoveThreadSafe() { var called = 0; var value = new MyClass(); var token = new MutableAsyncToken <MyClass>(); void SucceedAction(MyClass result) { called++; Assert.AreSame(value, result); token.Remove(SucceedAction); } token.OnSuccess(_ => { token.Remove(SucceedAction); }); token.OnSuccess(SucceedAction); token.Succeed(value); Assert.AreEqual(1, called); }
public void FailAddRemove() { var called = 0; var value = new Exception(); var token = new MutableAsyncToken <MyClass>(); token.Fail(value); void FailAction(Exception result) { called++; Assert.AreSame(value, result); } token.OnFailure(FailAction); token.Remove(FailAction); token.Fail(value); Assert.AreEqual(1, called); }