Coverage for tests/guitestcase.py: 93%

28 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-03-20 05:56 +0000

1import unittest 

2 

3import wx 

4 

5 

6class GUITestCase(unittest.TestCase): 

7 """Base class for GUI tests that sets up an app and a frame. 

8 

9 @see: https://github.com/wxWidgets/Phoenix/blob/master/unittests/wtc.py 

10 """ 

11 

12 def setUp(self): 

13 self.app = wx.App() 

14 wx.Log.SetActiveTarget(wx.LogStderr()) 

15 self.frame = wx.Frame(None) 

16 self.frame.Show() 

17 self.frame.PostSizeEvent() 

18 

19 def tearDown(self): 

20 def _cleanup(): 

21 for w in wx.GetTopLevelWindows(): # type: ignore 

22 if w: 

23 if isinstance(w, wx.Dialog) and w.IsModal(): 

24 w.EndModal(wx.ID_CANCEL) 

25 wx.CallAfter(w.Destroy) 

26 else: 

27 w.Close(force=True) 

28 wx.WakeUpIdle() 

29 

30 timer = wx.PyTimer(_cleanup) 

31 timer.Start(100) 

32 self.app.MainLoop() 

33 del self.app 

34 

35 def add_to_frame(self, widget): 

36 sizer = wx.BoxSizer(wx.HORIZONTAL) 

37 sizer.Add(widget, 1, wx.EXPAND) 

38 sizer.ShowItems(True) 

39 

40 self.frame.SetSizer(sizer) 

41 self.frame.Layout()