File: test_deadobj.py

package info (click to toggle)
wxpython4.0 4.0.7%2Bdfsg-10
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 210,992 kB
  • sloc: cpp: 888,989; python: 226,808; makefile: 52,078; ansic: 45,837; sh: 3,014; xml: 1,534; javascript: 436; perl: 264
file content (49 lines) | stat: -rw-r--r-- 1,563 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 detroyed.
        p = wx.Panel(self.frame)
        p.Destroy()
        with self.assertRaises(RuntimeError):
            p.IsShown()


#---------------------------------------------------------------------------


if __name__ == '__main__':
    unittest.main()