summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/idle_test/test_editmenu.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/idlelib/idle_test/test_editmenu.py')
-rw-r--r--Lib/idlelib/idle_test/test_editmenu.py105
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__':