404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@18.191.195.57: ~ $
from idlelib.tooltip import TooltipBase, Hovertip
from test.support import requires
requires('gui')

from functools import wraps
import time
from tkinter import Button, Tk, Toplevel
import unittest


def setUpModule():
    global root
    root = Tk()

def root_update():
    global root
    root.update()

def tearDownModule():
    global root
    root.update_idletasks()
    root.destroy()
    del root

def add_call_counting(func):
    @wraps(func)
    def wrapped_func(*args, **kwargs):
        wrapped_func.call_args_list.append((args, kwargs))
        return func(*args, **kwargs)
    wrapped_func.call_args_list = []
    return wrapped_func


def _make_top_and_button(testobj):
    global root
    top = Toplevel(root)
    testobj.addCleanup(top.destroy)
    top.title("Test tooltip")
    button = Button(top, text='ToolTip test button')
    button.pack()
    testobj.addCleanup(button.destroy)
    top.lift()
    return top, button


class ToolTipBaseTest(unittest.TestCase):
    def setUp(self):
        self.top, self.button = _make_top_and_button(self)

    def test_base_class_is_unusable(self):
        global root
        top = Toplevel(root)
        self.addCleanup(top.destroy)

        button = Button(top, text='ToolTip test button')
        button.pack()
        self.addCleanup(button.destroy)

        with self.assertRaises(NotImplementedError):
            tooltip = TooltipBase(button)
            tooltip.showtip()


class HovertipTest(unittest.TestCase):
    def setUp(self):
        self.top, self.button = _make_top_and_button(self)

    def test_showtip(self):
        tooltip = Hovertip(self.button, 'ToolTip text')
        self.addCleanup(tooltip.hidetip)
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        tooltip.showtip()
        self.assertTrue(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())

    def test_showtip_twice(self):
        tooltip = Hovertip(self.button, 'ToolTip text')
        self.addCleanup(tooltip.hidetip)
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        tooltip.showtip()
        self.assertTrue(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        orig_tipwindow = tooltip.tipwindow
        tooltip.showtip()
        self.assertTrue(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        self.assertIs(tooltip.tipwindow, orig_tipwindow)

    def test_hidetip(self):
        tooltip = Hovertip(self.button, 'ToolTip text')
        self.addCleanup(tooltip.hidetip)
        tooltip.showtip()
        tooltip.hidetip()
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())

    def test_showtip_on_mouse_enter_no_delay(self):
        tooltip = Hovertip(self.button, 'ToolTip text', hover_delay=None)
        self.addCleanup(tooltip.hidetip)
        tooltip.showtip = add_call_counting(tooltip.showtip)
        root_update()
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        self.button.event_generate('<Enter>', x=0, y=0)
        root_update()
        self.assertTrue(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        self.assertGreater(len(tooltip.showtip.call_args_list), 0)

    def test_showtip_on_mouse_enter_hover_delay(self):
        tooltip = Hovertip(self.button, 'ToolTip text', hover_delay=50)
        self.addCleanup(tooltip.hidetip)
        tooltip.showtip = add_call_counting(tooltip.showtip)
        root_update()
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        self.button.event_generate('<Enter>', x=0, y=0)
        root_update()
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        time.sleep(0.1)
        root_update()
        self.assertTrue(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        self.assertGreater(len(tooltip.showtip.call_args_list), 0)

    def test_hidetip_on_mouse_leave(self):
        tooltip = Hovertip(self.button, 'ToolTip text', hover_delay=None)
        self.addCleanup(tooltip.hidetip)
        tooltip.showtip = add_call_counting(tooltip.showtip)
        root_update()
        self.button.event_generate('<Enter>', x=0, y=0)
        root_update()
        self.button.event_generate('<Leave>', x=0, y=0)
        root_update()
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        self.assertGreater(len(tooltip.showtip.call_args_list), 0)

    def test_dont_show_on_mouse_leave_before_delay(self):
        tooltip = Hovertip(self.button, 'ToolTip text', hover_delay=50)
        self.addCleanup(tooltip.hidetip)
        tooltip.showtip = add_call_counting(tooltip.showtip)
        root_update()
        self.button.event_generate('<Enter>', x=0, y=0)
        root_update()
        self.button.event_generate('<Leave>', x=0, y=0)
        root_update()
        time.sleep(0.1)
        root_update()
        self.assertFalse(tooltip.tipwindow and tooltip.tipwindow.winfo_viewable())
        self.assertEqual(tooltip.showtip.call_args_list, [])


if __name__ == '__main__':
    unittest.main(verbosity=2)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
README.txt File 8.52 KB 0644
__init__.py File 712 B 0644
htest.py File 13.67 KB 0644
mock_idle.py File 1.83 KB 0644
mock_tk.py File 11.35 KB 0644
template.py File 642 B 0644
test_autocomplete.py File 4.99 KB 0644
test_autocomplete_w.py File 709 B 0644
test_autoexpand.py File 4.53 KB 0644
test_browser.py File 7.8 KB 0644
test_calltip.py File 7.6 KB 0644
test_calltip_w.py File 686 B 0644
test_codecontext.py File 14.15 KB 0644
test_colorizer.py File 1.03 KB 0644
test_config.py File 32.04 KB 0644
test_config_key.py File 3.61 KB 0644
test_configdialog.py File 48.6 KB 0644
test_debugger.py File 571 B 0644
test_debugger_r.py File 631 B 0644
test_debugobj.py File 1.52 KB 0644
test_debugobj_r.py File 545 B 0644
test_delegator.py File 1.53 KB 0644
test_editmenu.py File 2.5 KB 0644
test_editor.py File 1.11 KB 0644
test_filelist.py File 795 B 0644
test_grep.py File 2.6 KB 0644
test_help.py File 849 B 0644
test_help_about.py File 5.68 KB 0644
test_history.py File 5.39 KB 0644
test_hyperparser.py File 8.87 KB 0644
test_iomenu.py File 870 B 0644
test_macosx.py File 3.23 KB 0644
test_mainmenu.py File 594 B 0644
test_multicall.py File 1.02 KB 0644
test_outwin.py File 5.42 KB 0644
test_paragraph.py File 14.02 KB 0644
test_parenmatch.py File 3.43 KB 0644
test_pathbrowser.py File 2.37 KB 0644
test_percolator.py File 3.97 KB 0644
test_pyparse.py File 18.15 KB 0644
test_pyshell.py File 1.28 KB 0644
test_query.py File 11.49 KB 0644
test_redirector.py File 4.08 KB 0644
test_replace.py File 8.11 KB 0644
test_rpc.py File 805 B 0644
test_rstrip.py File 1.57 KB 0644
test_run.py File 9.19 KB 0644
test_runscript.py File 777 B 0644
test_scrolledlist.py File 496 B 0644
test_search.py File 2.4 KB 0644
test_searchbase.py File 5.35 KB 0644
test_searchengine.py File 11.27 KB 0644
test_squeezer.py File 21.35 KB 0644
test_stackviewer.py File 1.18 KB 0644
test_statusbar.py File 1.11 KB 0644
test_text.py File 6.81 KB 0644
test_textview.py File 5.5 KB 0644
test_tooltip.py File 5.01 KB 0644
test_tree.py File 792 B 0644
test_undo.py File 4.13 KB 0644
test_warning.py File 2.68 KB 0644
test_window.py File 1.05 KB 0644
test_zoomheight.py File 999 B 0644