public IEnumerator NestedRoutineProgressTest()
        {
            IEnumerator NestedRoutineSteps(int steps, RoutineControl @this)
            {
                for (int i = 0; i < steps; i++)
                {
                    yield return(null);

                    @this.SetProgress((i + 1) / (float)steps);
                }
            }

            var progressReference = 0f;
            var testSteps         = 10;

            Assert.Greater(testSteps, 1);

            var nestedRoutine = Routine.ByEnumerator(NestedRoutineSteps, testSteps);

            IEnumerator RoutineSteps(RoutineControl @this)
            {
                yield return(nestedRoutine.OnProgress(@this.SetProgress));
            }

            var routine = Routine.ByEnumerator(RoutineSteps);

            routine.OnProgress(p => progressReference = p);

            yield return(routine);

            Assert.AreEqual(1, progressReference);
        }
        public void RoutineControlShouldSetupProgressTest()
        {
            const int steps = 10;

            IEnumerator Enumerator(RoutineControl @this)
            {
                int i = 0;

                while (i < steps)
                {
                    @this.SetProgress(i++ / (float)steps);
                    yield return(null);
                }
            }

            var routine = Routine.ByEnumerator(Enumerator);

            for (int i = 0; i < steps / 2; i++)
            {
                RoutineUtilities.OneStep(routine);
            }

            const float expectedProgress = (steps / 2 - 1) / (float)steps;

            Assert.AreEqual(expectedProgress, routine.GetProgress());
        }
        public void RoutineProgressTest()
        {
            IEnumerator RoutineSteps(int steps, RoutineControl @this)
            {
                for (int i = 0; i < steps; i++)
                {
                    yield return(null);

                    @this.SetProgress((i + 1) / (float)steps);
                }
            }

            var progressReference = 0f;
            var testSteps         = 10;

            Assert.Greater(testSteps, 1);

            var routine = Routine.ByEnumerator(RoutineSteps, testSteps);

            routine.OnProgress(progress => progressReference = progress);
            for (int i = 0; i < testSteps; i++)
            {
                RoutineUtilities.OneStep(routine);
                var expectedProgress = (i) / (float)testSteps;
                Assert.AreEqual(expectedProgress, progressReference);
            }
        }
        public IEnumerator ByEnumeratorWithArgAndRoutineControlResultShouldProvideRoutineTest()
        {
            yield return(Routine.ByEnumerator <bool, bool>(
                             ByEnumeratorWithArgAndRoutineControlResultShouldProvideRoutine, true)
                         .Result(out var result));

            Assert.True(result.Result);
        }
        public IEnumerator ByEnumeratorWithControlShouldProvideRoutineTest()
        {
            flagByEnumeratorWithControlShouldProvideRoutineTest = false;

            yield return(Routine.ByEnumerator(ByEnumeratorWithControlShouldProvideRoutine));

            Assert.True(flagByEnumeratorWithControlShouldProvideRoutineTest);

            flagByEnumeratorWithControlShouldProvideRoutineTest = false;
        }
        public IEnumerator ByEnumeratorShouldProcessCoroutineTest()
        {
            flagByEnumeratorShouldProcessCoroutineTest = false;

            yield return(Routine.ByEnumerator(ByEnumeratorShouldProcessCoroutine()));

            Assert.True(flagByEnumeratorShouldProcessCoroutineTest);

            flagByEnumeratorShouldProcessCoroutineTest = false;
        }
        public void ForceCompleteAsyncOperationShouldFailTest()
        {
            var asyncOperation = new AsyncOperation();

            IEnumerator RoutineSteps()
            {
                yield return(asyncOperation);
            }

            var routine = Routine.ByEnumerator(RoutineSteps());

            LogAssert.ignoreFailingMessages = true;
            routine.Complete(1);
            Assert.True(routine.IsError);
            LogAssert.ignoreFailingMessages = false;
        }
        public void RoutineControlShouldProvideCancellationEventTest()
        {
            bool wasCanceled = false;

            IEnumerator Enumerator(RoutineControl @this)
            {
                @this.OnCancellationCallback(() => { wasCanceled = true; });
                yield return(null);

                yield return(null);
            }

            var routine = Routine.ByEnumerator(Enumerator);

            RoutineUtilities.OneStep(routine);

            routine.Cancel();

            Assert.True(routine.IsCanceled);
            Assert.True(wasCanceled);
        }
Example #9
0
        public void RoutineShouldThrowExceptionIfNestedRoutineHaveErrorTest()
        {
            var routineWithError = Routine.ByAction(() => throw new Exception("Its test exception"));

            LogAssert.Expect(LogType.Error, new Regex("."));
            routineWithError.Complete();


            IEnumerator TestRoutine(RoutineControl <int> control)
            {
                yield return(routineWithError);

                control.SetResult(50);
            }

            var routine = Routine.ByEnumerator <int>(TestRoutine);

            LogAssert.Expect(LogType.Error, new Regex("."));
            routine.Complete();
            Assert.True(routine.IsError);
        }
Example #10
0
        public IEnumerator ByEnumeratorWithArgAndRoutineControlShouldProvideRoutineTest()
        {
//            flagByEnumeratorWithArgAndRoutineControlShouldProvideRoutine = false;
            yield return(Routine.ByEnumerator(ByEnumeratorWithArgAndRoutineControlShouldProvideRoutine, true));
//            flagByEnumeratorWithArgAndRoutineControlShouldProvideRoutine = false;
        }