public void TestLongHandler() { TickTimer.TickProvider = new TickProviderDateTime(); _TestText.Clear(); TickTimerThread timerThread = new TickTimerThread(); // A: 100, 600, 1100, 2100 TickTimer timerA = new TickTimer(1, 100, 500, 4); timerA.Handler = TimerProcLongHandler; // B: 305, 1305, 2305, 3305 TickTimer timerB = new TickTimer(2, 305, 1000, 4); timerB.Handler = TimerProcLongHandler; // AB: *100, 305, *600, *1100, 1305, *2100, 2305, *3305 timerThread.AddTimer(timerA); timerThread.AddTimer(timerB); timerThread.Start(); // TO REVIEW: Waiting 3500 adds an extra 'B'. Why is this? Look at precise timing of handler calls. Thread.Sleep(3000); String textSoFar = _TestText.ToString(); Debug.WriteLine("TickTimerThreadTest.TestLongHandler, after wait, test text = " + textSoFar); Assert.AreEqual("AAAAB", textSoFar); timerThread.Stop(); }
public void TestBasic() { TickTimer.TickProvider = new TickProviderDateTime(); int threadID = Thread.CurrentThread.ManagedThreadId; Debug.WriteLine("Main thread ID = " + threadID); _TestText.Clear(); TickTimerThread timerThread = new TickTimerThread(); // A: 100, 600, 1100 TickTimer timerA = new TickTimer(1, 100, 500, 3); timerA.Handler = TimerProcBasic; // B: 205, 1205 TickTimer timerB = new TickTimer(2, 205, 1000, 2); timerB.Handler = TimerProcBasic; // C: 310, 510, 710, 910, 1110 TickTimer timerC = new TickTimer(3, 310, 200, 5); timerC.Handler = TimerProcBasic; timerThread.AddTimer(timerA); timerThread.AddTimer(timerB); timerThread.AddTimer(timerC); timerThread.Start(); Thread.Sleep(750); String textSoFar = _TestText.ToString(); Debug.WriteLine("TickTimerThreadTest.TestBasic, after 750 ms, test text = " + textSoFar); Assert.AreEqual("ABCCAC", textSoFar); Thread.Sleep(550); textSoFar = _TestText.ToString(); Debug.WriteLine("TickTimerThreadTest.TestBasic, after 1300 ms, test text = " + textSoFar); Assert.AreEqual("ABCCACCACB", textSoFar); timerThread.Stop(); }