Exemplo n.º 1
0
        public IEnumerator CancelTaskRoutineShouldCancelTaskYetTest()
        {
            bool?cancellationExit = null;

            Routine.Task(token =>
            {
                var timeMeter = TimeMeter.New();
                while (timeMeter.ToSeconds() < 1)
                {
                    Thread.Sleep(15);
                    if (token.IsCancellationRequested)
                    {
                        cancellationExit = true;
                        return;
                    }
                }

                cancellationExit = false;
            }).Self(out var taskRoutine).InBackground();

            yield return(Routine.Delay(0.1f));

            taskRoutine.Cancel();

            // Отклик на отмену задачи ~15 мс ( Thread.Sleep(15) ), поэтому нужно немного подождать
            yield return(Routine.Delay(0.03f));

            Assert.NotNull(cancellationExit);
            Assert.True(cancellationExit);
        }
Exemplo n.º 2
0
        public IEnumerator RoutineShouldBeTrueWhenRoutineIsNotProcessingTest()
        {
            yield return(Routine.Delay(0.025f)
                         .Self(out var routine));

            Assert.True(routine);
        }
Exemplo n.º 3
0
        public IEnumerator RoutineShouldBeTrueWhenRoutineIsCompleted()
        {
            var routine = Routine.Delay(0.025f);

            yield return(routine);

            Assert.True(routine); // completed
        }
        public void SynchronousCompleteRoutineShouldThrowExceptionByTimeoutTest()
        {
            var timeOut = 0.175f;
            var delay   = timeOut * 2 + 1;
            var routine = Routine.Delay(delay);

            Assert.Throws <TimeoutException>(() => routine.Complete(timeOut));
        }
        public void DelayRoutineShouldCompleteSynchronousTest()
        {
            var delay = 0.15f;

            var startTime = DateTime.Now;

            Routine.Delay(delay).Complete();
            var deltaTime = (DateTime.Now - startTime).TotalSeconds;

            Assert.Greater(deltaTime, delay);
        }
Exemplo n.º 6
0
        public IEnumerator CancelDelayRoutineShouldBeCancelTest()
        {
            var timeMeter = TimeMeter.New();
            var routine   = Routine.Delay(1);

            routine.Cancel();
            yield return(routine);

            var elapsed = timeMeter.ToSeconds();

            Assert.Less(elapsed, 1f);
        }
Exemplo n.º 7
0
        public IEnumerator RoutineShouldCompleteWhenHisRoutinesIsCompletedTest()
        {
            var routineWithDelay160Ms = Routine.Delay(TimeSpan.FromMilliseconds(160));
            var routineWithDelay150Ms = Routine.Delay(TimeSpan.FromMilliseconds(150));

            var startTestTime = DateTime.Now;

            yield return(Routine.WhenAll(routineWithDelay160Ms, routineWithDelay150Ms));

            var deltaTime = DateTime.Now - startTestTime;

            Assert.Greater(TimeSpan.FromMilliseconds(160 + 150).TotalSeconds, deltaTime.TotalSeconds);
        }
Exemplo n.º 8
0
        public void DelayRoutineShouldFulfilledSetTimeWhenUserUseForceCompleteTest()
        {
            var targetTime = TimeSpan.FromMilliseconds(50);

            var startTime            = DateTime.Now;
            var scheduledReleaseTime = startTime + targetTime;

            Routine.Delay(targetTime).Complete();

            var delta = (DateTime.Now - scheduledReleaseTime).TotalSeconds;

            Assert.Positive(delta);
            Assert.GreaterOrEqual(Time.unscaledDeltaTime, delta);
        }
Exemplo n.º 9
0
        public IEnumerator DelayRoutineShouldFulfilledSetTimeTest()
        {
            var targetTime = TimeSpan.FromMilliseconds(50);

            var startTime            = DateTime.Now;
            var scheduledReleaseTime = startTime + targetTime;

            yield return(Routine.Delay(targetTime));

            var delta = (DateTime.Now - scheduledReleaseTime).TotalSeconds;

            Assert.Positive(delta);
            Assert.GreaterOrEqual(Time.unscaledDeltaTime, delta);
        }
Exemplo n.º 10
0
        public IEnumerator DelayInBackgroundShouldCompleteTest()
        {
            var interval = TimeSpan.FromMilliseconds(100);
            var delay    = Routine.Delay(interval);

            delay.InBackground();

            var startTime = Time.time;

            while (!delay.IsComplete && startTime + interval.TotalSeconds * 2 > Time.time)
            {
                yield return(null);
            }

            Assert.True(delay.IsComplete);
        }
        public void ComplexRoutineShouldCompleteSynchronousTest()
        {
            var complexLevel = 5;

            Routine CreateRoutine(int level, float delay)
            {
                return(level == 0
                    ? (Routine)Routine.Delay(delay)
                    : new TestRoutine(CreateRoutine(level - 1, delay)));
            }

            var startTime = DateTime.Now;

            CreateRoutine(complexLevel, 0.15f).Complete();
            var deltaTime = (DateTime.Now - startTime).TotalSeconds;

            Assert.Greater(deltaTime, 0.15f);
        }
Exemplo n.º 12
0
        public IEnumerator WaitingRoutineWhichIsProcessedFromOutsideTest()
        {
            var gameObject        = new GameObject();
            var testMonoBehaviour = gameObject.AddComponent <TestMonoBehaviour>();

            var delay        = TimeSpan.FromMilliseconds(75);
            var delayRoutine = Routine.Delay(delay);

            testMonoBehaviour.StartCoroutine(delayRoutine);

            var startTime = DateTime.UtcNow;

            yield return(delayRoutine);

            var delta = DateTime.UtcNow - startTime;

            Utilities.Object.AutoDestroy(gameObject);

            Assert.GreaterOrEqual(delta, delay);
        }
Exemplo n.º 13
0
        public void RoutineShouldBeFalseWhenRoutineIsNotStartedTest()
        {
            var routine = Routine.Delay(0.025f);

            Assert.False(routine); // not started
        }
Exemplo n.º 14
0
        public void DelayRoutineShouldCompleteWhenUserUseForceCompleteTest()
        {
            var targetTime = TimeSpan.FromMilliseconds(50);

            Routine.Delay(targetTime).Complete();
        }