예제 #1
0
        public void TestSpawn()
        {
            var timerManager = IoCManager.Resolve <ITimerManager>();

            var fired = false;

            Timer.Spawn(TimeSpan.FromMilliseconds(500), () => fired = true);
            Assert.That(fired, Is.False);

            // Set timers ahead 250 ms
            timerManager.UpdateTimers(new FrameEventArgs(.25f));
            Assert.That(fired, Is.False);
            // Another 300ms should do it.
            timerManager.UpdateTimers(new FrameEventArgs(.30f));
            Assert.That(fired, Is.True);
        }
예제 #2
0
        public void TestCancellation()
        {
            var timerManager = IoCManager.Resolve <ITimerManager>();
            var taskManager  = IoCManager.Resolve <ITaskManager>();

            var cts = new CancellationTokenSource();
            var ran = false;

            Timer.Spawn(1000, () => ran = true, cts.Token);

            timerManager.UpdateTimers(new FrameEventArgs(.5f));

            Assert.That(ran, Is.False);

            cts.Cancel();

            timerManager.UpdateTimers(new FrameEventArgs(.6f));

            Assert.That(ran, Is.False);
        }
예제 #3
0
        public void TestAsyncDelay()
        {
            var timerManager = IoCManager.Resolve <ITimerManager>();
            var ran          = false;

            async void Run()
            {
                await Timer.Delay(TimeSpan.FromMilliseconds(500));

                ran = true;
            }

            Run();
            Assert.That(ran, Is.False);

            // Set timers ahead 250 ms
            timerManager.UpdateTimers(new FrameEventArgs(.25f));
            Assert.That(ran, Is.False);

            // Another 300ms should do it.
            timerManager.UpdateTimers(new FrameEventArgs(.30f));
            Assert.That(ran, Is.True);
        }