Skip to content

Commit a69f41f

Browse files
committed
Extend tests for move_widget for widgets with bindings
1 parent 71f624c commit a69f41f

File tree

1 file changed

+60
-11
lines changed

1 file changed

+60
-11
lines changed

tests/test_utilities.py

Lines changed: 60 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,23 @@
1111

1212

1313
class TestUtilities(BaseWidgetTest):
14+
def setUp(self):
15+
BaseWidgetTest.setUp(self)
16+
self._dummy_flag = False
17+
1418
def assertIsChild(self, child, parent):
1519
self.assertIn(child, parent.children.values())
1620
parent_of_parent = parent.winfo_parent()
1721
if not parent_of_parent.endswith("."):
1822
parent_of_parent += "."
1923
self.assertEquals(child.winfo_parent(), parent_of_parent + parent.winfo_name())
24+
25+
def assertHasBeenInvoked(self):
26+
self.assertTrue(self._dummy_flag)
27+
self._dummy_flag = False
2028

21-
def _dummy_bind(self, event):
22-
pass
29+
def _dummy_bind(self, _=None):
30+
self._dummy_flag = True
2331

2432
def test_move_widget(self):
2533
label = ttk.Label(self.window)
@@ -64,16 +72,57 @@ def test_move_widget_with_binding(self):
6472
self.assertIsChild(label, tl)
6573
self.assertIn('<Enter>', label.bind())
6674

75+
def test_move_widget_with_command(self):
76+
widget = ttk.Button(self.window, command=self._dummy_bind)
77+
self.assertIsChild(widget, self.window)
78+
widget.invoke()
79+
self.assertHasBeenInvoked()
80+
81+
parent = tk.Toplevel()
82+
child = move_widget(widget, parent)
83+
self.assertIsChild(child, parent)
84+
widget.invoke()
85+
self.assertHasBeenInvoked()
86+
87+
def test_move_widget_with_bound_method_on_parent(self):
88+
tl1 = tk.Toplevel(self.window)
89+
tl2 = tk.Toplevel(self.window)
90+
tl1._dummy_bind = self._dummy_bind
91+
92+
button = ttk.Button(tl1)
93+
button.bind("<Enter>", tl1._dummy_bind)
94+
button.event_generate("<Enter>")
95+
self.assertHasBeenInvoked()
96+
97+
button = move_widget(button, tl2)
98+
button.event_generate("<Enter>")
99+
self.assertHasBeenInvoked()
100+
101+
def test_move_widget_with_command_method_on_parent(self):
102+
tl1 = tk.Toplevel(self.window)
103+
tl2 = tk.Toplevel(self.window)
104+
tl1._dummy_bind = self._dummy_bind
105+
106+
button = ttk.Button(tl1, command=tl1._dummy_bind)
107+
button.invoke()
108+
self.assertHasBeenInvoked()
109+
110+
button = move_widget(button, tl2)
111+
button.invoke()
112+
self.assertHasBeenInvoked()
113+
67114
def test_move_widget_with_binding_on_parent(self):
68-
self.window.bind('<Enter>', self._dummy_bind)
69-
label = ttk.Label(self.window)
70-
label.pack()
71-
tl = tk.Toplevel(self.window)
72-
label = move_widget(label, tl)
73-
label.pack()
74-
self.assertTrue(label.winfo_parent() == tl.winfo_parent() + '.' + tl.winfo_name())
75-
self.assertIn('<Enter>', tl.bind())
76-
115+
widget = ttk.Label(self.window)
116+
widget._dummy_bind = self._dummy_bind
117+
self.window.bind("<Enter>", widget._dummy_bind)
118+
119+
self.window.event_generate("<Enter>")
120+
self.assertHasBeenInvoked()
121+
122+
move_widget(widget, tk.Toplevel())
123+
self.window.event_generate("<Enter>")
124+
self.assertHasBeenInvoked()
125+
77126
def test_parse_geometry(self):
78127
g = parse_geometry('1x1+1+1')
79128
self.assertEqual(g, (1, 1, 1, 1))

0 commit comments

Comments
 (0)