Files
Phoenix/unittests/test_lib_agw_flatmenu.py
James Wettenhall ff677ea1d5 Monkey-patch self.frame's PushEventHandler and PopEventHandler methods,
because they don't behave well without a MainLoop.
2017-03-23 21:57:54 +11:00

108 lines
3.4 KiB
Python

import unittest
from unittests import wtc
import wx
import wx.lib.agw.flatmenu as FM
#---------------------------------------------------------------------------
class lib_agw_flatmenu_Tests(wtc.WidgetTestCase):
def setUp(self):
'''
Monkey patch some methods which don't behave well without
a MainLoop. We could restore them in tearDown, but there's
no need because self.frame will be destroyed in tearDown.
'''
super(lib_agw_flatmenu_Tests, self).setUp()
self.realPushEventHandlerMethod = self.frame.PushEventHandler
def MockPushEventHandler(handler): pass
self.frame.PushEventHandler = MockPushEventHandler
self.realPopEventHandlerMethod = self.frame.PopEventHandler
def MockPopEventHandler(deleteHandler=False): pass
self.frame.PopEventHandler = MockPopEventHandler
def test_lib_agw_flatmenuCtor(self):
self._popUpMenu = FM.FlatMenu()
# First we create the sub-menu item
subMenu = FM.FlatMenu()
subSubMenu = FM.FlatMenu()
# Create the menu items
menuItem = FM.FlatMenuItem(self._popUpMenu, 20001, "First Menu Item", "", wx.ITEM_CHECK)
self._popUpMenu.AppendItem(menuItem)
menuItem = FM.FlatMenuItem(self._popUpMenu, 20002, "Sec&ond Menu Item", "", wx.ITEM_CHECK)
self._popUpMenu.AppendItem(menuItem)
menuItem = FM.FlatMenuItem(self._popUpMenu, wx.ID_ANY, "Checkable-Disabled Item", "", wx.ITEM_CHECK)
menuItem.Enable(False)
self._popUpMenu.AppendItem(menuItem)
menuItem = FM.FlatMenuItem(self._popUpMenu, 20003, "Third Menu Item", "", wx.ITEM_CHECK)
self._popUpMenu.AppendItem(menuItem)
self._popUpMenu.AppendSeparator()
def test_lib_agw_flatmenuOpen(self):
def CreateLongPopupMenu(self):
popMenu = FM.FlatMenu()
sub = FM.FlatMenu()
#-----------------------------------------------
# Flat Menu test
#-----------------------------------------------
for ii in range(30):
if ii == 0:
menuItem = FM.FlatMenuItem(popMenu, wx.ID_ANY, "Menu Item #%ld"%(ii+1), "", wx.ITEM_NORMAL, sub)
popMenu.AppendItem(menuItem)
for k in range(5):
menuItem = FM.FlatMenuItem(sub, wx.ID_ANY, "Sub Menu Item #%ld"%(k+1))
sub.AppendItem(menuItem)
else:
menuItem = FM.FlatMenuItem(popMenu, wx.ID_ANY, "Menu Item #%ld"%(ii+1))
popMenu.AppendItem(menuItem)
return popMenu
popMenu = CreateLongPopupMenu(self)
fPt = self.frame.GetPosition()
popMenu.Popup(wx.Point(fPt.x, fPt.y), self.frame)
popMenu.Dismiss(True, True)
# Clear the capture since the test won't do a normal shudown of the flatmenu
cap = wx.Window.GetCapture()
if cap:
cap.ReleaseMouse()
def test_lib_agw_flatmenuConstantsExist(self):
FM.FM_OPT_IS_LCD
FM.FM_OPT_MINIBAR
FM.FM_OPT_SHOW_CUSTOMIZE
FM.FM_OPT_SHOW_TOOLBAR
def test_lib_agw_flatmenuEvents(self):
FM.EVT_FLAT_MENU_DISMISSED
FM.EVT_FLAT_MENU_ITEM_MOUSE_OUT
FM.EVT_FLAT_MENU_ITEM_MOUSE_OVER
FM.EVT_FLAT_MENU_SELECTED
#---------------------------------------------------------------------------
if __name__ == '__main__':
unittest.main()