コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 IEnumerator <IWaitObject> WaitForWaitObject(CustomWaitObject which)
 {
     yield return(which);
 }