1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
import unittest
from unittests import wtc
import wx
#---------------------------------------------------------------------------
class deadobj_Tests(wtc.WidgetTestCase):
def test_deadobj__nonzero__1(self):
# A __nonzero__ method has been added to the wx.Window class that
# will return True if the C++ part of the object still exists. This
# can be used with if's or other conditional statements to see if it
# is still safe to call methods of that window object.
p = wx.Panel(self.frame)
self.assertTrue(True if p else False)
p.Destroy()
self.assertFalse(True if p else False)
def test_deadobj__nonzero__2(self):
# check that it also works with TLWs whose destruction is delayed
# until there are idle events.
f = wx.Frame(self.frame)
f.Show()
self.assertTrue(True if f else False)
f.Close()
self.myYield()
# TODO: figure out if this is a bug in wxMSW, or just an oddity of
# the test environment.
if 'wxMSW' not in wx.PlatformInfo:
self.assertFalse(True if f else False)
def test_deadobjException(self):
# There should be a RuntimeError exception if we try to use an object
# after it's C++ parts have been destroyed.
p = wx.Panel(self.frame)
p.Destroy()
with self.assertRaises(RuntimeError):
p.IsShown()
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()
|