diff options
Diffstat (limited to 'Lib/idlelib/idle_test/test_editmenu.py')
-rw-r--r-- | Lib/idlelib/idle_test/test_editmenu.py | 105 |
1 files changed, 66 insertions, 39 deletions
diff --git a/Lib/idlelib/idle_test/test_editmenu.py b/Lib/idlelib/idle_test/test_editmenu.py index 1747847..51d5c16 100644 --- a/Lib/idlelib/idle_test/test_editmenu.py +++ b/Lib/idlelib/idle_test/test_editmenu.py @@ -1,73 +1,100 @@ '''Test (selected) IDLE Edit menu items. -Edit modules have their own test files +Edit modules have their own test files files ''' -from test.support import requires -requires('gui') -import tkinter as tk -from tkinter import ttk +from test.test_support import requires +import Tkinter as tk import unittest -from idlelib import pyshell +from idlelib import PyShell + class PasteTest(unittest.TestCase): '''Test pasting into widgets that allow pasting. On X11, replacing selections requires tk fix. ''' + @classmethod def setUpClass(cls): + requires('gui') cls.root = root = tk.Tk() - cls.root.withdraw() - pyshell.fix_x11_paste(root) + 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') @classmethod def tearDownClass(cls): - del cls.text, cls.entry, cls.tentry + del cls.text, cls.entry, cls.spin cls.root.clipboard_clear() cls.root.update_idletasks() + cls.root.update() cls.root.destroy() del cls.root - def test_paste_text(self): - "Test pasting into text with and without a selection." + def test_paste_text_no_selection(self): + "Test pasting into text without a selection." + text = self.text + tag, ans = '', 'onetwo\n' + 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_text_selection(self): + "Test pasting into text with 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) + tag, ans = 'sel', 'two\n' + 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_entry_no_selection(self): + "Test pasting into an entry without a selection." + # On 3.6, generated <<Paste>> fails without empty select range + # for 'no selection'. Live widget works fine. + entry = self.entry + end, ans = 0, 'onetwo' + entry.delete(0, 'end') + entry.insert(0, 'one') + entry.select_range(0, end) # see note + entry.event_generate('<<Paste>>') + self.assertEqual(entry.get(), ans) - def test_paste_spin(self): - "Test pasting into a spinbox with and without a selection." + def test_paste_entry_selection(self): + "Test pasting into an entry with a selection." + entry = self.entry + end, ans = 'end', 'two' + 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_no_selection(self): + "Test pasting into a spinbox 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) + end, ans = 0, 'onetwo' + spin.delete(0, 'end') + spin.insert(0, 'one') + spin.selection('range', 0, end) # see note + spin.event_generate('<<Paste>>') + self.assertEqual(spin.get(), ans) + + def test_paste_spin_selection(self): + "Test pasting into a spinbox with a selection." + spin = self.spin + end, ans = 'end', 'two' + spin.delete(0, 'end') + spin.insert(0, 'one') + spin.selection('range', 0, end) + spin.event_generate('<<Paste>>') + self.assertEqual(spin.get(), ans) if __name__ == '__main__': |