File: test_deadobj.py

package info (click to toggle)
wxpython4.0 4.2.3%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 221,752 kB
  • sloc: cpp: 962,555; python: 230,573; ansic: 170,731; makefile: 51,756; sh: 9,342; perl: 1,564; javascript: 584; php: 326; xml: 200
file content (49 lines) | stat: -rw-r--r-- 1,564 bytes parent folder | download | duplicates (2)
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()