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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
from __future__ import absolute_import
import unittest
from traits.testing.unittest_tools import UnittestTools
from ..toolkit import toolkit_object
from ..widget import Widget
GuiTestAssistant = toolkit_object('util.gui_test_assistant:GuiTestAssistant')
no_gui_test_assistant = (GuiTestAssistant.__name__ == 'Unimplemented')
class ConcreteWidget(Widget):
def _create_control(self, parent):
if toolkit_object.toolkit == 'wx':
import wx
control = wx.Window(parent)
control.Enable(self.enabled)
control.Show(self.visible)
elif toolkit_object.toolkit == 'qt4':
from pyface.qt import QtGui
control = QtGui.QWidget(parent)
control.setEnabled(self.enabled)
control.setVisible(self.visible)
else:
control = None
return control
class TestWidget(unittest.TestCase, UnittestTools):
def setUp(self):
self.widget = Widget()
def tearDown(self):
del self.widget
def test_defaults(self):
self.assertTrue(self.widget.enabled)
self.assertTrue(self.widget.visible)
def test_create(self):
# create is not Implemented
with self.assertRaises(NotImplementedError):
self.widget._create()
def test_destroy(self):
# test that destroy works even when no control
self.widget.destroy()
def test_show(self):
with self.assertTraitChanges(self.widget, 'visible', count=1):
self.widget.show(False)
self.assertFalse(self.widget.visible)
def test_visible(self):
with self.assertTraitChanges(self.widget, 'visible', count=1):
self.widget.visible = False
self.assertFalse(self.widget.visible)
def test_enable(self):
with self.assertTraitChanges(self.widget, 'enabled', count=1):
self.widget.enable(False)
self.assertFalse(self.widget.enabled)
def test_enabled(self):
with self.assertTraitChanges(self.widget, 'enabled', count=1):
self.widget.enabled = False
self.assertFalse(self.widget.enabled)
@unittest.skipIf(no_gui_test_assistant, 'No GuiTestAssistant')
class TestConcreteWidget(unittest.TestCase, GuiTestAssistant):
def setUp(self):
GuiTestAssistant.setUp(self)
self.widget = ConcreteWidget()
def tearDown(self):
if self.widget.control is not None:
with self.delete_widget(self.widget.control):
self.widget.destroy()
del self.widget
GuiTestAssistant.tearDown(self)
def test_lifecycle(self):
with self.event_loop():
self.widget._create()
with self.event_loop():
self.widget.destroy()
def test_initialize(self):
self.widget.visible = False
self.widget.enabled = False
with self.event_loop():
self.widget._create()
self.assertFalse(self.widget.control.isVisible())
self.assertFalse(self.widget.control.isEnabled())
def test_show(self):
with self.event_loop():
self.widget._create()
with self.assertTraitChanges(self.widget, 'visible', count=1):
with self.event_loop():
self.widget.show(False)
self.assertFalse(self.widget.control.isVisible())
def test_visible(self):
with self.event_loop():
self.widget._create()
with self.assertTraitChanges(self.widget, 'visible', count=1):
with self.event_loop():
self.widget.visible = False
self.assertFalse(self.widget.control.isVisible())
def test_enable(self):
with self.event_loop():
self.widget._create()
with self.assertTraitChanges(self.widget, 'enabled', count=1):
with self.event_loop():
self.widget.enable(False)
self.assertFalse(self.widget.control.isEnabled())
def test_enabled(self):
with self.event_loop():
self.widget._create()
with self.assertTraitChanges(self.widget, 'enabled', count=1):
with self.event_loop():
self.widget.enabled = False
self.assertFalse(self.widget.control.isEnabled())
|