a 9êdg ã@s´dZddlmZmZddlmZedƒddlmZddlZddl m Z m Z m Z ddl Z dd „Zd d „Zd d „Zdd„ZGdd„de jƒZGdd„de jƒZedkr°e jdddS)zßTest tooltip, coverage 100%. Coverage is 100% after excluding 6 lines with "# pragma: no cover". They involve TclErrors that either should or should not happen in a particular situation, and which are 'pass'ed if they do. é)Ú TooltipBaseÚHovertip)ÚrequiresZgui)ÚwrapsN)ÚButtonÚTkÚToplevelcCs tƒadS©N)rÚroot©r r ú:/usr/local/lib/python3.9/idlelib/idle_test/test_tooltip.pyÚ setUpModulesr cCst ¡t ¡bdSr )r Zupdate_idletasksÚdestroyr r r r ÚtearDownModulesrcs tˆƒ‡‡fdd„ƒ‰gˆ_ˆS)Ncsˆj ||f¡ˆ|i|¤ŽSr )Úcall_args_listÚappend)ÚargsÚkwargs©ÚfuncÚ wrapped_funcr r rsz'add_call_counting..wrapped_func)rr)rr rr Úadd_call_countingsrcCsNttƒ}| |j¡| d¡t|dd}| ¡| |j¡| ¡||fS)Nz Test tooltipúToolTip test button©Útext)rr Ú addCleanuprÚtitlerÚpackZlift)ZtestobjÚtopÚbuttonr r r Ú_make_top_and_button&s    r c@seZdZdd„Zdd„ZdS)ÚToolTipBaseTestcCst|ƒ\|_|_dSr ©r rr©Úselfr r r ÚsetUp3szToolTipBaseTest.setUpcCsrttƒ}| |j¡t|dd}| ¡| |j¡| t¡ t|ƒ}|  ¡Wdƒn1sd0YdS)Nrr) rr rrrrZ assertRaisesÚNotImplementedErrorrÚshowtip)r$rrÚtooltipr r r Útest_base_class_is_unusable6s    z+ToolTipBaseTest.test_base_class_is_unusableN)Ú__name__Ú __module__Ú __qualname__r%r)r r r r r!2sr!c@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)Ú HovertipTestcCst|ƒ\|_|_dSr r"r#r r r r%EszHovertipTest.setUpcCs|jo|j ¡Sr )Ú tipwindowZwinfo_viewable©r$r(r r r Úis_tipwindow_shownHszHovertipTest.is_tipwindow_showncCsDt|jdƒ}| |j¡| | |¡¡| ¡| | |¡¡dS©Nú ToolTip text)rrrÚhidetipÚ assertFalser0r'Ú assertTruer/r r r Ú test_showtipKs   zHovertipTest.test_showtipcCspt|jdƒ}| |j¡| | |¡¡| ¡| | |¡¡|j}| ¡| | |¡¡|  |j|¡dSr1) rrrr3r4r0r'r5r.ZassertIs)r$r(Zorig_tipwindowr r r Útest_showtip_twiceRs  zHovertipTest.test_showtip_twicecCs<t|jdƒ}| |j¡| ¡| ¡| | |¡¡dSr1)rrrr3r'r4r0r/r r r Ú test_hidetip]s   zHovertipTest.test_hidetipcCs‚t|jddd}| |j¡t|jƒ|_t ¡| |  |¡¡|jj ddddt ¡|  |  |¡¡|  t |jjƒd¡dS)Nr2©Z hover_delayúr©ÚxÚy)rrrr3rr'r Úupdater4r0Úevent_generater5Ú assertGreaterÚlenrr/r r r Ú$test_showtip_on_mouse_enter_no_delayds  z1HovertipTest.test_showtip_on_mouse_enter_no_delaycCs(t|jddd}| |j¡t|jƒ|_t ¡| |  |¡¡|jj ddddt ¡| |  |¡¡t|jddd}| |j¡t|jƒ|_t ¡|jj ddddt ¡|jj ddddt ¡t   d¡t ¡|  |  |¡¡| t|jjƒd¡| |  |¡¡| |jjg¡dS) Nr2édr9r:rr;úg333333Ã?)rrrr3rr'r r>r4r0r?ÚtimeÚsleepr5r@rArZ assertEqual)r$Ztooltip1Ztooltip2r r r Útest_hover_with_delayos,     z"HovertipTest.test_hover_with_delaycCsŒt|jddd}| |j¡t|jƒ|_t ¡|jjddddt ¡|jjddddt ¡|  |  |¡¡|  t |jj ƒd¡dS)Nr2r9r:rr;rD)rrrr3rr'r r>r?r4r0r@rArr/r r r Útest_hidetip_on_mouse_leave“s  z(HovertipTest.test_hidetip_on_mouse_leaveN) r*r+r,r%r0r6r7r8rBrGrHr r r r r-Ds  $r-Ú__main__é)Ú verbosity)Ú__doc__Zidlelib.tooltiprrZ test.supportrÚ functoolsrrEÚtkinterrrrZunittestr rrr ZTestCaser!r-r*Úmainr r r r Ús    \