Download lib/python3.9/idlelib/idle_test/test_editmenu.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 2.56 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/idlelib/idle_test/test_editmenu.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/idlelib/idle_test/test_editmenu.py
-
curl -L -o test_editmenu.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/idlelib/idle_test/test_editmenu.py
2.56 kB
| '''Test (selected) IDLE Edit menu items. | |
| Edit modules have their own test files | |
| ''' | |
| from test.support import requires | |
| requires('gui') | |
| import tkinter as tk | |
| from tkinter import ttk | |
| import unittest | |
| from idlelib import pyshell | |
| class PasteTest(unittest.TestCase): | |
| '''Test pasting into widgets that allow pasting. | |
| On X11, replacing selections requires tk fix. | |
| ''' | |
| def setUpClass(cls): | |
| cls.root = root = tk.Tk() | |
| cls.root.withdraw() | |
| pyshell.fix_x11_paste(root) | |
| cls.text = tk.Text(root) | |
| cls.entry = tk.Entry(root) | |
| cls.tentry = ttk.Entry(root) | |
| cls.spin = tk.Spinbox(root) | |
| root.clipboard_clear() | |
| root.clipboard_append('two') | |
| def tearDownClass(cls): | |
| del cls.text, cls.entry, cls.tentry | |
| cls.root.clipboard_clear() | |
| cls.root.update_idletasks() | |
| cls.root.destroy() | |
| del cls.root | |
| def test_paste_text(self): | |
| "Test pasting into text with and without a selection." | |
| text = self.text | |
| for tag, ans in ('', 'onetwo\n'), ('sel', 'two\n'): | |
| with self.subTest(tag=tag, ans=ans): | |
| text.delete('1.0', 'end') | |
| text.insert('1.0', 'one', tag) | |
| text.event_generate('<<Paste>>') | |
| self.assertEqual(text.get('1.0', 'end'), ans) | |
| def test_paste_entry(self): | |
| "Test pasting into an entry with and without a selection." | |
| # Generated <<Paste>> fails for tk entry without empty select | |
| # range for 'no selection'. Live widget works fine. | |
| for entry in self.entry, self.tentry: | |
| for end, ans in (0, 'onetwo'), ('end', 'two'): | |
| with self.subTest(entry=entry, end=end, ans=ans): | |
| entry.delete(0, 'end') | |
| entry.insert(0, 'one') | |
| entry.select_range(0, end) | |
| entry.event_generate('<<Paste>>') | |
| self.assertEqual(entry.get(), ans) | |
| def test_paste_spin(self): | |
| "Test pasting into a spinbox with and without a selection." | |
| # See note above for entry. | |
| spin = self.spin | |
| for end, ans in (0, 'onetwo'), ('end', 'two'): | |
| with self.subTest(end=end, ans=ans): | |
| spin.delete(0, 'end') | |
| spin.insert(0, 'one') | |
| spin.selection('range', 0, end) # see note | |
| spin.event_generate('<<Paste>>') | |
| self.assertEqual(spin.get(), ans) | |
| if __name__ == '__main__': | |
| unittest.main(verbosity=2) | |