コード例 #1
0
        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>);
        }