Beispiel #1
0
        public void TestCallbacks()
        {
            using TickedTimer timer = CreateTimer(1.0f, Timer_Ticked, 1.0f) as TickedTimer;

            while (!hasFired)
            {
                ;
            }

            Assert.AreEqual(timer.ElapsedMilliseconds, (long)timer.MillisecondInterval);
        }
Beispiel #2
0
        public void SingleFireCannotBeFiredAfterPlannedFire()
        {
            int fireCount = 0;

            using TickedTimer timer = CreateTimer(0.0f, (Handle timer, any? data) =>
            {
                fireCount++;
                return(Action.Plugin_Continue);
            }) as TickedTimer;
            timer.Close();
            TriggerTimer(timer);
            Thread.Sleep(1);
            Assert.AreEqual(1, fireCount);
        }
Beispiel #3
0
        public void SingleFireCanBeResetBeforePlannedFire()
        {
            bool      early = true;
            Stopwatch watch = new Stopwatch();

            watch.Start();
            long totalDuration = 0;

            using TickedTimer timer = CreateTimer(1.0f, (Handle timer, any? data) =>
            {
                if (early)
                {
                    Assert.AreNotEqual(((TickedTimer)timer).ElapsedMilliseconds, ((TickedTimer)timer).MillisecondInterval);
                }
                else
                {
                    Assert.AreEqual(((TickedTimer)timer).ElapsedMilliseconds, ((TickedTimer)timer).MillisecondInterval);
                }
                early = !early;
                return(Action.Plugin_Continue);
            }) as TickedTimer;

            Thread.Sleep(500);

            TriggerTimer(timer, reset: true);

            while (IsValidHandle(timer))
            {
                totalDuration = watch.ElapsedMilliseconds;
            }
            watch.Stop();
            // add 1 cause of innaccuracies
            if (totalDuration <= 1000 + 1)
            {
                Assert.Fail($"Expected duration: 1500, Received duration: {totalDuration}");
            }
        }