public void WaitAny2Test() { var runner = new CoroutineRunner(); var flag = false; var waitAny = runner.Create(() => AwaitableCoroutine.WaitAny( AwaitableCoroutine.While(() => true), AwaitableCoroutine.While(() => !flag) ) ); Assert.False(waitAny.IsCompleted); runner.Update(); Assert.False(waitAny.IsCompleted); flag = true; runner.Update(); Assert.True(waitAny.IsCompleted); }
public void CancelWithCanceledException() { var runner = new CoroutineRunner(); var delay = runner.Create(() => AwaitableCoroutine.DelayCount(5)); var co = runner.Context <AwaitableCoroutine>(() => AwaitableCoroutine.WaitAll(delay, delay)); Assert.False(delay.IsCompleted); Assert.False(delay.IsCanceled); Assert.False(co.IsCompleted); Assert.False(co.IsCanceled); runner.Update(); Assert.False(delay.IsCompleted); Assert.False(delay.IsCanceled); Assert.False(co.IsCompleted); Assert.False(co.IsCanceled); delay.Cancel(); Assert.False(delay.IsCompleted); Assert.True(delay.IsCanceled); Assert.False(co.IsCompleted); Assert.False(co.IsCanceled); runner.Update(); Assert.False(co.IsCompleted); Assert.True(co.IsCanceled); Assert.True(co.Exception is ChildCanceledException <AwaitableCoroutineBase>); }
public void RunSelect() { var runner = new CoroutineRunner(); var(c1, c2, c3) = runner.Context(() => { var c1 = AwaitableCoroutine.DelayCount(0); var c2 = c1.SelectTo(2); var c3 = c2.Select(x => x * x); return(c1, c2, c3); }); Assert.False(c1.IsCompleted); Assert.False(c2.IsCompleted); Assert.False(c3.IsCompleted); runner.Update(); Assert.True(c1.IsCompleted); Assert.True(c2.IsCompleted); Assert.True(c3.IsCompleted); Assert.Equal(2, c2.Result); Assert.Equal(4, c3.Result); }
public void AwaitYieldTest() { var runner = new CoroutineRunner(); var counter = new Counter(); var co = runner.Create(async() => { counter.Inc(); await AwaitableCoroutine.Yield(); counter.Inc(); }); Assert.False(co.IsCompleted); Assert.Equal(0, counter.Count); Assert.False(co.IsCompleted); runner.Update(); Assert.Equal(1, counter.Count); Assert.False(co.IsCompleted); runner.Update(); Assert.Equal(2, counter.Count); Assert.True(co.IsCompleted); }
public CoroutineAwaiter(AwaitableCoroutine target) { _target = target; }
private async AwaitableCoroutine CreateWithException() { await AwaitableCoroutine.Yield(); throw new MyException(); }