public void CoroutineSpawner() { var waitObject = new CustomWaitObject(); var coroutine = new SpawnerCoroutine(); var scheduler = new InterleavedCoroutineScheduler(); scheduler.Execute(coroutine); scheduler.Update(0); Assert.Equal(coroutine, coroutine.Spawned.Spawner); }
public void Coroutine_WhenOnWaitObject() { var waitObject = new CustomWaitObject(); var coroutine = Coroutine.FromEnumerator(WaitForWaitObject(waitObject)); var scheduler = new InterleavedCoroutineScheduler(); scheduler.Execute(coroutine); scheduler.Update(0); waitObject.Exception = new Exception(); waitObject.IsComplete = true; scheduler.Update(0); Assert.Equal(CoroutineStatus.CompletedWithException, coroutine.Status); Assert.IsType <AggregateException>(coroutine.Exception); }
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); }
IEnumerator <IWaitObject> WaitForWaitObject(CustomWaitObject which) { yield return(which); }