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); }
/// <inheritdoc cref="IAsyncToken{T}"/> public IMutableAsyncToken <TR> Map <TR>(Func <T, TR> map) { var output = new MutableAsyncToken <TR>(); OnSuccess(value => output.Succeed(map(value))); OnFailure(output.Fail); return(output); }
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); }
public void SucceedPost() { var isCalled = false; var value = new MyClass(); var token = new MutableAsyncToken <MyClass>(); token.Succeed(value); token .OnSuccess(result => { isCalled = true; Assert.AreSame(value, result); }) .OnFailure(exception => throw exception); Assert.IsTrue(isCalled); }
public void Fail() { var isCalled = false; var value = new Exception(); var token = new MutableAsyncToken <MyClass>(); token .OnFailure(result => { isCalled = true; Assert.AreSame(value, result); }) .OnSuccess(result => throw new Exception()); token.Fail(value); Assert.IsTrue(isCalled); }
public void SucceedMulti() { var called = 0; var value = new MyClass(); var token = new MutableAsyncToken <MyClass>(); token .OnSuccess(result => { called++; Assert.AreSame(value, result); }) .OnFailure(exception => throw exception); token.Succeed(value); token.Succeed(value); Assert.AreEqual(2, called); }
public void FailMultiPrePost() { var called = 0; var value = new Exception(); var token = new MutableAsyncToken <MyClass>(); token.Fail(value); token .OnFailure(result => { called++; Assert.AreSame(value, result); }) .OnSuccess(exception => throw new Exception()); token.Fail(value); Assert.AreEqual(2, 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); }