MCPcopy Index your code
hub / github.com/python/cpython / test_menu

Method test_menu

Lib/test/test_ttk/test_extensions.py:232–282  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

230
231
232 def test_menu(self):
233 items = ('a', 'b', 'c')
234 default = 'a'
235 optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items)
236 found_default = False
237 for i in range(len(items)):
238 value = optmenu['menu'].entrycget(i, 'value')
239 self.assertEqual(value, items[i])
240 if value == default:
241 found_default = True
242 self.assertTrue(found_default)
243 optmenu.destroy()
244
245 # default shouldn't be in menu if it is not part of values
246 default = 'd'
247 optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items)
248 curr = None
249 i = 0
250 while True:
251 last, curr = curr, optmenu['menu'].entryconfigure(i, 'value')
252 if last == curr:
253 # no more menu entries
254 break
255 self.assertNotEqual(curr, default)
256 i += 1
257 self.assertEqual(i, len(items))
258
259 # check that variable is updated correctly
260 optmenu.pack()
261 gc_collect() # For PyPy or other GCs.
262 optmenu['menu'].invoke(0)
263 self.assertEqual(optmenu._variable.get(), items[0])
264
265 # changing to an invalid index shouldn't change the variable
266 self.assertRaises(tkinter.TclError, optmenu['menu'].invoke, -1)
267 self.assertEqual(optmenu._variable.get(), items[0])
268
269 optmenu.destroy()
270
271 # specifying a callback
272 success = []
273 def cb_test(item):
274 self.assertEqual(item, items[1])
275 success.append(True)
276 optmenu = ttk.OptionMenu(self.root, self.textvar, 'a', command=cb_test,
277 *items)
278 optmenu['menu'].invoke(1)
279 if not success:
280 self.fail("Menu callback not invoked")
281
282 optmenu.destroy()
283
284 def test_unique_radiobuttons(self):
285 # check that radiobuttons are unique across instances (bpo25684)

Callers

nothing calls this directly

Calls 12

destroyMethod · 0.95
gc_collectFunction · 0.90
entrycgetMethod · 0.80
assertTrueMethod · 0.80
entryconfigureMethod · 0.80
assertNotEqualMethod · 0.80
assertEqualMethod · 0.45
packMethod · 0.45
invokeMethod · 0.45
getMethod · 0.45
assertRaisesMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected