mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2025-09-05 01:10:12 +02:00
188 lines
5.8 KiB
Python
188 lines
5.8 KiB
Python
import sys
|
|
import unittest
|
|
from unittests import wtc
|
|
import wx
|
|
##import os; print 'PID:', os.getpid(); raw_input('Ready to start, press enter...')
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
class PyEvents(unittest.TestCase):
|
|
|
|
def test_PyEvent(self):
|
|
id = wx.Window.NewControlId()
|
|
typ = wx.NewEventType()
|
|
evt = wx.PyEvent(id, typ)
|
|
evt.newAttr = "hello"
|
|
evt2 = evt.Clone()
|
|
self.assertTrue(type(evt2) == wx.PyEvent)
|
|
self.assertTrue(evt is not evt2)
|
|
self.assertTrue(getattr(evt2, 'newAttr'))
|
|
self.assertTrue(evt.newAttr == evt2.newAttr)
|
|
self.assertTrue(evt.Id == evt2.Id)
|
|
self.assertTrue(evt.EventType == evt2.EventType)
|
|
|
|
|
|
|
|
def test_PyCommandEvent(self):
|
|
id = wx.Window.NewControlId()
|
|
typ = wx.NewEventType()
|
|
evt = wx.PyCommandEvent(id, typ)
|
|
evt.newAttr = "hello"
|
|
evt2 = evt.Clone()
|
|
self.assertTrue(type(evt2) == wx.PyCommandEvent)
|
|
self.assertTrue(evt is not evt2)
|
|
self.assertTrue(getattr(evt2, 'newAttr'))
|
|
self.assertTrue(evt.newAttr == evt2.newAttr)
|
|
self.assertTrue(evt.Id == evt2.Id)
|
|
self.assertTrue(evt.EventType == evt2.EventType)
|
|
|
|
|
|
def test_PyEvtCloneRefCounts(self):
|
|
# Since we're doing some funky stuff under the covers with Clone, make
|
|
# sure that the reference counts on everything (before and after)
|
|
# still make sense
|
|
evt1 = wx.PyEvent()
|
|
rc1 = sys.getrefcount(evt1)
|
|
evt1.attr = 'Howdy!'
|
|
evt2 = evt1.Clone()
|
|
rc2 = sys.getrefcount(evt2)
|
|
rc3 = sys.getrefcount(evt1)
|
|
self.assertTrue(rc1 == rc2 == rc3)
|
|
self.assertTrue(evt1.attr == evt2.attr)
|
|
|
|
|
|
def test_CppClone(self):
|
|
# test what happens when Clone is called from C++
|
|
if hasattr(wx, 'testCppClone'):
|
|
evt1 = wx.PyEvent()
|
|
evt1.attr = 'testCppClone'
|
|
evt2 = wx.testCppClone(evt1)
|
|
self.assertTrue(evt1.attr == evt2.attr)
|
|
|
|
|
|
def test_CppCloneDerived(self):
|
|
# test what happens when Clone is called from C++
|
|
if hasattr(wx, 'testCppClone'):
|
|
evt1 = MyPyEvent()
|
|
evt1.attr = 'testCppClone'
|
|
evt2 = wx.testCppClone(evt1)
|
|
self.assertTrue(evt1.attr == evt2.attr)
|
|
self.assertTrue(isinstance(evt2, MyPyEvent))
|
|
|
|
|
|
@unittest.skip('not testing refcounts for now, needs checking...')
|
|
def test_CppCloneRefCounts(self):
|
|
# Since we're doing some funky stuff under the covers with Clone, make
|
|
# sure that the reference counts on everything (before and after)
|
|
# still make sense
|
|
if hasattr(wx, 'testCppClone'):
|
|
evt1 = wx.PyEvent()
|
|
rc1 = sys.getrefcount(evt1)
|
|
evt1.attr = 'Howdy!'
|
|
evt2 = wx.testCppClone(evt1)
|
|
rc2 = sys.getrefcount(evt2)
|
|
rc3 = sys.getrefcount(evt1)
|
|
self.assertTrue(rc1 == rc2 == rc3)
|
|
self.assertTrue(evt1.attr == evt2.attr)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MyPyEvent(wx.PyEvent):
|
|
def __init__(self, *args, **kw):
|
|
wx.PyEvent.__init__(self, *args, **kw)
|
|
self.one = 1
|
|
self.two = 2
|
|
self.three = 3
|
|
|
|
class MyPyCommandEvent(wx.PyCommandEvent):
|
|
def __init__(self, *args, **kw):
|
|
wx.PyEvent.__init__(self, *args, **kw)
|
|
self.one = 1
|
|
self.two = 2
|
|
self.three = 3
|
|
|
|
|
|
|
|
class SendingPyEvents(wtc.WidgetTestCase):
|
|
def test_PyEventDerivedClone(self):
|
|
evt1 = MyPyEvent(id=123)
|
|
evt1.four = 4
|
|
evt2 = evt1.Clone()
|
|
|
|
self.assertEqual(evt2.GetId(), 123)
|
|
self.assertEqual(evt2.one, 1)
|
|
self.assertEqual(evt2.two, 2)
|
|
self.assertEqual(evt2.three, 3)
|
|
self.assertEqual(evt2.four, 4)
|
|
self.assertTrue(isinstance(evt2, MyPyEvent))
|
|
self.assertTrue(evt1 is not evt2)
|
|
|
|
|
|
def test_PyCommandEventDerivedClone(self):
|
|
evt1 = MyPyCommandEvent(id=123)
|
|
evt1.four = 4
|
|
evt2 = evt1.Clone()
|
|
|
|
self.assertEqual(evt2.GetId(), 123)
|
|
self.assertEqual(evt2.one, 1)
|
|
self.assertEqual(evt2.two, 2)
|
|
self.assertEqual(evt2.three, 3)
|
|
self.assertEqual(evt2.four, 4)
|
|
self.assertTrue(isinstance(evt2, MyPyCommandEvent))
|
|
self.assertTrue(evt1 is not evt2)
|
|
|
|
|
|
def test_PyEventDerivedProcessEvent(self):
|
|
self.flag = False
|
|
|
|
def evtHandlerFunction(evt):
|
|
self.assertEqual(evt.GetId(), 123)
|
|
self.assertEqual(evt.one, 1)
|
|
self.assertEqual(evt.two, 2)
|
|
self.assertEqual(evt.three, 3)
|
|
self.assertEqual(evt.four, 4)
|
|
self.assertTrue(isinstance(evt, MyPyEvent))
|
|
self.flag = True
|
|
|
|
testType = wx.NewEventType()
|
|
EVT_TEST = wx.PyEventBinder(testType)
|
|
self.frame.Bind(EVT_TEST, evtHandlerFunction)
|
|
evt = MyPyEvent(id=123, eventType=testType)
|
|
evt.four = 4
|
|
self.frame.GetEventHandler().ProcessEvent(evt)
|
|
self.assertTrue(self.flag)
|
|
|
|
|
|
def test_PyEventDerivedPostEvent(self):
|
|
self.flag = False
|
|
|
|
def evtHandlerFunction(evt):
|
|
self.assertEqual(evt.GetId(), 123)
|
|
self.assertEqual(evt.one, 1)
|
|
self.assertEqual(evt.two, 2)
|
|
self.assertEqual(evt.three, 3)
|
|
self.assertEqual(evt.four, 4)
|
|
self.assertTrue(isinstance(evt, MyPyEvent))
|
|
self.flag = True
|
|
|
|
testType = wx.NewEventType()
|
|
EVT_TEST = wx.PyEventBinder(testType)
|
|
self.frame.Bind(EVT_TEST, evtHandlerFunction)
|
|
evt = MyPyEvent(id=123, eventType=testType)
|
|
evt.four = 4
|
|
wx.PostEvent(self.frame, evt)
|
|
del evt
|
|
self.myYield()
|
|
self.assertTrue(self.flag)
|
|
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|