Exemple #1
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);
        }
Exemple #2
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);
        }