public void WaitAny2Test()
        {
            var runner = new CoroutineRunner();

            var flag = false;

            var waitAny = runner.Create(() =>
                                        AwaitableCoroutine.WaitAny(
                                            AwaitableCoroutine.While(() => true),
                                            AwaitableCoroutine.While(() => !flag)
                                            )
                                        );

            Assert.False(waitAny.IsCompleted);

            runner.Update();
            Assert.False(waitAny.IsCompleted);

            flag = true;

            runner.Update();
            Assert.True(waitAny.IsCompleted);
        }
Ejemplo n.º 2
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>);
        }
        public void RunSelect()
        {
            var runner = new CoroutineRunner();

            var(c1, c2, c3) = runner.Context(() =>
            {
                var c1 = AwaitableCoroutine.DelayCount(0);
                var c2 = c1.SelectTo(2);
                var c3 = c2.Select(x => x * x);
                return(c1, c2, c3);
            });

            Assert.False(c1.IsCompleted);
            Assert.False(c2.IsCompleted);
            Assert.False(c3.IsCompleted);

            runner.Update();
            Assert.True(c1.IsCompleted);
            Assert.True(c2.IsCompleted);
            Assert.True(c3.IsCompleted);

            Assert.Equal(2, c2.Result);
            Assert.Equal(4, c3.Result);
        }
        public void AwaitYieldTest()
        {
            var runner  = new CoroutineRunner();
            var counter = new Counter();

            var co = runner.Create(async() =>
            {
                counter.Inc();
                await AwaitableCoroutine.Yield();
                counter.Inc();
            });

            Assert.False(co.IsCompleted);
            Assert.Equal(0, counter.Count);
            Assert.False(co.IsCompleted);

            runner.Update();
            Assert.Equal(1, counter.Count);
            Assert.False(co.IsCompleted);

            runner.Update();
            Assert.Equal(2, counter.Count);
            Assert.True(co.IsCompleted);
        }
Ejemplo n.º 5
0
 public CoroutineAwaiter(AwaitableCoroutine target)
 {
     _target = target;
 }
Ejemplo n.º 6
0
        private async AwaitableCoroutine CreateWithException()
        {
            await AwaitableCoroutine.Yield();

            throw new MyException();
        }