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 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 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); }