HEX
Server: LiteSpeed
System: Linux kapuas.iixcp.rumahweb.net 5.14.0-427.42.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 1 14:58:02 EDT 2024 x86_64
User: mirz4654 (1666)
PHP: 8.1.33
Disabled: system,exec,escapeshellarg,escapeshellcmd,passthru,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,popen,pclose,dl,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setsid,posix_setuid,posix_setpgid,ini_alter,show_source,define_syslog_variables,symlink,syslog,openlog,openlog,closelog,ocinumcols,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dll,ftp,myshellexec,socket_bind,mail,posix_getwpuid
Upload Files
File: //opt/alt/python27/lib64/python2.7/idlelib/idle_test/test_editmenu.py
'''Test (selected) IDLE Edit menu items.

Edit modules have their own test files files
'''
from test.test_support import requires
import Tkinter as tk
import unittest
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()
        root.withdraw()
        PyShell.fix_x11_paste(root)
        cls.text = tk.Text(root)
        cls.entry = tk.Entry(root)
        cls.spin = tk.Spinbox(root)
        root.clipboard_clear()
        root.clipboard_append('two')

    @classmethod
    def tearDownClass(cls):
        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_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
        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_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_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
        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__':
    unittest.main(verbosity=2)