Files
Phoenix/unittests/test_timer.py
Robin Dunn 5de01f8ab6 Add wx.Timer and wx.CallLater
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@69193 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-25 04:21:11 +00:00

94 lines
2.5 KiB
Python

import imp_unittest, unittest
import wtc
import wx
#---------------------------------------------------------------------------
class timer_Tests(wtc.WidgetTestCase):
def waitFor(self, milliseconds):
intervals = milliseconds/100
while intervals > 0:
wx.MilliSleep(100)
self.myYield()
if hasattr(self, 'flag') and self.flag:
break
intervals -= 1
def onTimerEvt(self, *evt):
self.flag = True
def test_timerOwner1(self):
t = wx.Timer(self.frame)
self.flag = False
self.frame.Bind(wx.EVT_TIMER, self.onTimerEvt, t)
t.Start(250, wx.TIMER_ONE_SHOT)
self.waitFor(500)
self.assertTrue(self.flag)
def test_timerOwner2(self):
t = wx.Timer(self.frame)
self.flag = False
self.frame.Bind(wx.EVT_TIMER, self.onTimerEvt, t)
t.Start(1000, wx.TIMER_ONE_SHOT)
# timer will not have expired yet by this time, so flag shouldn't be set
self.waitFor(500)
self.assertFalse(self.flag)
def test_timerPyTimer(self):
t = wx.PyTimer(self.onTimerEvt)
self.flag = False
t.Start(250, wx.TIMER_ONE_SHOT)
self.waitFor(500)
self.assertTrue(self.flag)
def test_timerDerivedClass(self):
class MyTimer(wx.Timer):
def __init__(self):
wx.Timer.__init__(self)
self.flag = False
def Notify(self):
self.flag = True
t = MyTimer()
t.Start(250, wx.TIMER_ONE_SHOT)
self.waitFor(500)
self.assertTrue(t.flag)
def onCallLater(self):
self.flag = True
return 1234
def test_timerCallLater1(self):
# simple CallLater usage
wx.CallLater(250, self.onCallLater)
self.waitFor(500)
self.assertTrue(self.flag)
def test_timerCallLater2(self):
# test getting the result and restarting the CallLater
cl = wx.CallLater(250, self.onCallLater)
self.assertTrue(cl.IsRunning())
self.waitFor(500)
self.assertTrue(self.flag)
self.assertTrue(cl.GetResult() == 1234)
self.flag = False
cl.Restart()
self.waitFor(500)
self.assertTrue(self.flag)
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()