public void TestCancelTimerInLoop() { TestTimerManager manager = new TestTimerManager(); Action dummyCallback = () => {}; Action callback = () => { callbacks.Add(dummyCallback); Assert.AreEqual(0, manager.FreeDelayedCount); manager.Cancel(TimerCallback1); Assert.AreEqual(1, manager.FreeDelayedCount); manager.Cancel(TimerCallback2); Assert.AreEqual(2, manager.FreeDelayedCount); }; manager.Schedule(callback, 0.25f); manager.Schedule(TimerCallback1, 0.25f); manager.Schedule(TimerCallback2, 0.25f); manager.Schedule(TimerCallback3, 0.25f); manager.Update(0.25f); Assert.AreEqual(0, manager.FreeDelayedCount); AssertCallbacks(dummyCallback, TimerCallback3); Assert.AreEqual(0, manager.Count()); }
public void TestCancelTimer() { TestTimerManager manager = new TestTimerManager(); manager.Schedule(TimerCallback1, 0.75f); manager.Schedule(TimerCallback2, 0.5f); manager.Update(0.25f); // 0.25 AssertCallbacks(); Assert.AreEqual(2, manager.Count()); manager.Update(0.25f); // 0.5 AssertCallbacks(TimerCallback2); Assert.AreEqual(1, manager.Count()); manager.Schedule(TimerCallback3, 1.0f); // fires at 1.5 Assert.AreEqual(2, manager.Count()); manager.Cancel(TimerCallback1); manager.Update(0.25f); // 0.75 AssertCallbacks(TimerCallback2); Assert.AreEqual(1, manager.Count()); manager.Update(0.25f); // 1.0 AssertCallbacks(TimerCallback2); Assert.AreEqual(1, manager.Count()); manager.Schedule(TimerCallback4, 0.15f); // fires at 1.15 Assert.AreEqual(2, manager.Count()); manager.Cancel(TimerCallback3); manager.Update(0.25f); // 1.25 AssertCallbacks(TimerCallback2, TimerCallback4); Assert.AreEqual(0, manager.Count()); manager.Update(0.25f); // 1.5 AssertCallbacks(TimerCallback2, TimerCallback4); Assert.AreEqual(0, manager.Count()); manager.Update(0.25f); // 1.75 AssertCallbacks(TimerCallback2, TimerCallback4); Assert.AreEqual(0, manager.Count()); }