|
11 | 11 |
|
12 | 12 |
|
13 | 13 | class TestUtilities(BaseWidgetTest): |
| 14 | + def setUp(self): |
| 15 | + BaseWidgetTest.setUp(self) |
| 16 | + self._dummy_flag = False |
| 17 | + |
14 | 18 | def assertIsChild(self, child, parent): |
15 | 19 | self.assertIn(child, parent.children.values()) |
16 | 20 | parent_of_parent = parent.winfo_parent() |
17 | 21 | if not parent_of_parent.endswith("."): |
18 | 22 | parent_of_parent += "." |
19 | 23 | 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 |
20 | 28 |
|
21 | | - def _dummy_bind(self, event): |
22 | | - pass |
| 29 | + def _dummy_bind(self, _=None): |
| 30 | + self._dummy_flag = True |
23 | 31 |
|
24 | 32 | def test_move_widget(self): |
25 | 33 | label = ttk.Label(self.window) |
@@ -64,16 +72,57 @@ def test_move_widget_with_binding(self): |
64 | 72 | self.assertIsChild(label, tl) |
65 | 73 | self.assertIn('<Enter>', label.bind()) |
66 | 74 |
|
| 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 | + |
67 | 114 | 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 | + |
77 | 126 | def test_parse_geometry(self): |
78 | 127 | g = parse_geometry('1x1+1+1') |
79 | 128 | self.assertEqual(g, (1, 1, 1, 1)) |
|
0 commit comments