public void RunCoroutine_YieldCustomWaitObject() { var scheduler = new InterleavedCoroutineScheduler(); var waitObject = new CustomWaitObject(); var coroutine = new CustomWaitObjectCoroutine(waitObject); scheduler.Execute(coroutine); for (int i = 0; i < 10; i++) { scheduler.Update(0); } Assert.Equal(CoroutineStatus.Running, coroutine.Status); waitObject.Complete(null); scheduler.Update(0); Assert.Equal(CoroutineStatus.CompletedNormal, coroutine.Status); }
public void RunCoroutine_YieldCustomWaitObject_WithException() { var scheduler = new InterleavedCoroutineScheduler(); var waitObject = new CustomWaitObject(); var coroutine = new CustomWaitObjectCoroutine(waitObject); scheduler.Execute(coroutine); for (int i = 0; i < 10; i++) { scheduler.Update(0); } Assert.Equal(CoroutineStatus.Running, coroutine.Status); waitObject.Complete(new Exception()); scheduler.Update(0); Assert.Equal(CoroutineStatus.CompletedWithException, coroutine.Status); Assert.IsType <AggregateException>(coroutine.Exception); }