public void TestCallbacks() { using TickedTimer timer = CreateTimer(1.0f, Timer_Ticked, 1.0f) as TickedTimer; while (!hasFired) { ; } Assert.AreEqual(timer.ElapsedMilliseconds, (long)timer.MillisecondInterval); }
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); }
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}"); } }