B 0‘cxNã@søddlmZddlmZmZddlZddlmZmZm Z m Z m Z ddl m Z ddlmZddlmZmZmZddlmZdd lmZdd lmZdd lmZe jZd d „ZGdd„dejƒZGdd„dejƒZ Gdd„dejƒZ!e"dkrôej#dddS)é)Údedent)ÚTextÚTkN)ÚMockÚNonCallableMagicMockÚpatchÚsentinelÚANY)Úrequires)ÚidleConf)Úcount_lines_with_wrappingÚExpandingButtonÚSqueezer)Úmacosx)Ú view_text)ÚHovertip)ÚPyShellcs0tdƒtƒ‰ˆ ¡‡fdd„}| |¡ˆS)NZguicsˆ ¡ˆ ¡dS)N)Zupdate_idletasksZdestroy©)ÚrootrúD/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_squeezer.pyÚ cleanup_rootsz&get_test_tk_root..cleanup_root)r rZwithdrawÚ addCleanup)Z test_instancerr)rrÚget_test_tk_roots   rc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)ÚCountLinesTestcCs| |t||ƒ¡S)N)Ú assertEqualr )ÚselfÚexpectedÚtextÚ linewidthrrrÚcheck%szCountLinesTest.checkcCs| tdƒd¡dS)NÚr)rr )rrrrÚtest_count_empty+szCountLinesTest.test_count_emptycCs| tdƒd¡dS)Nz texté)rr )rrrrÚ!test_count_begins_with_empty_line/sz0CountLinesTest.test_count_begins_with_empty_linecCs| tdƒd¡dS)Nztext é)rr )rrrrÚtest_count_ends_with_empty_line3sz.CountLinesTest.test_count_ends_with_empty_linecCs| tdƒd¡dS)Nz1 2 3 é)rr )rrrrÚtest_count_several_lines7sz'CountLinesTest.test_count_several_linescCs4|jdddd|jdddd|jdddddS) Nr$Ú éP)rrrr"z é z )r)rrrrÚtest_empty_lines;szCountLinesTest.test_empty_linescCs$|jdddd|jdddddS)Nr&ZÈaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar))rrrzÉaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa )r)rrrrÚtest_long_line@szCountLinesTest.test_long_linecCs`tdƒ}|jd|dd|jd|ddd|jd|dd|jd|d d|jd |d ddS) Nz€ 13 characters 43 is the number of characters on this line 7 chars 13 charactersér))rrrr(éé(ééé r*)rr)rrrrrÚ$test_several_lines_different_lengthsDsz3CountLinesTest.test_several_lines_different_lengthsN) Ú__name__Ú __module__Ú __qualname__rr!r#r%r'r+r,r3rrrrr#src@sŠeZdZd!dd„Zd"dd„Zd#dd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „ZdS)$Ú SqueezerTestFcCs:tƒ}d|_|r6t|ƒ|_|j|jd}||_|j_|S)Nr))r)rÚwidthrrÚmake_text_widgetrZperZbottom)rÚwith_text_widgetÚeditwinÚ text_widgetrrrÚmake_mock_editor_windowTs z$SqueezerTest.make_mock_editor_windowNcCs|dkr| ¡}t|ƒ}|S)N)r=r)rZ editor_windowÚsqueezerrrrÚmake_squeezer_instance`sz#SqueezerTest.make_squeezer_instancecCs0|dkrt|ƒ}t|ƒ}d|d<| dd¡|S)N)ZCourierr*ZfontZiomarkz1.0)rrÚmark_set)rrr<rrrr9gs  zSqueezerTest.make_text_widgetcCs6t |||¡}t ||||¡| tj||||¡dS)N)r Z GetOptionZ SetOptionr)rZ configTypeÚsectionÚoptionÚvalueÚprev_valrrrÚ set_idleconf_option_with_cleanuposz-SqueezerTest.set_idleconf_option_with_cleanupc Csz| ¡}| |¡}xbdD]Z\}}}|j|||d:t|ƒ}t |d|¡| | |¡|¡WdQRXWdQRXqWdS)N))z'\n'r)r$)z'\n' * 3r)r&)z'a' * 40 + '\n'r)r$)z'a' * 80 + '\n'r)r$)z'a' * 200 + '\n'r)r&)z 'aa\t' * 20r)r")z 'aa\t' * 21r)r&)z 'aa\t' * 20r/é)Ú text_codeÚ line_widthrr8)r=r?ZsubTestÚevalrÚobjectrÚ count_lines)rr;r>rGrHrrrrrÚtest_count_linesus   zSqueezerTest.test_count_linescCs2| ¡}| |¡}| |j|¡| |jg¡dS)N)r=r?ZassertIsr;rÚexpandingbuttons)rr;r>rrrÚ test_init‹s zSqueezerTest.test_initcCs‚| ¡}xtdddddgD]`}ttd|_}| |¡}| |j |d¡t¡| |jd¡| |d¡| t |j ƒd ¡qWdS) Nr ÚTEXTz LONG TEXTièaLMANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES )Ú return_valuerr$r) r=rÚSENTINEL_VALUEÚwriter?rr;Ú call_countÚassert_called_withÚlenrM)rr;rÚ orig_writer>rrrÚtest_write_no_tags’s  zSqueezerTest.test_write_no_tagscCs€xzdddddgD]f}| ¡}t|j_|j}| |¡}| |j |d¡t¡| |jd¡| |d¡| t |j ƒd¡qWdS) Nr rOz LONG TEXTièaLMANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES Ústderrr$r) r=rQrRrPr?rr;rSrTrUrM)rrr;rVr>rrrÚtest_write_not_stdoutžs  z"SqueezerTest.test_write_not_stdoutcCsè| ¡}xndD]f}ttd|_}| |¡}d|_| |j |d¡t¡| |jd¡|  |d¡| t |j ƒd¡qWxjddd gD]Z}ttd|_}| |¡}d|_| |j |d¡d¡| |jd¡| t |j ƒd¡q†WdS) N)r rO)rPé2Ústdoutr$rz LONG TEXTièaLMANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES MANY_LINES ) r=rrQrRr?Úauto_squeeze_min_linesrr;rSrTrUrM)rr;rrVr>rrrÚtest_write_stdout¬s"    zSqueezerTest.test_write_stdoutcCsd|jdd}|j}| |¡}d|_tdd|_| dd¡| | dd ¡d ¡| t |j ƒd ¡dS) NT)r:r-r.)rPzTEXT TEXT TEXT TEXT TEXT TEXT r[z1.0Úendr(r$) r=rr?r\rrKrRrÚgetrUrM)rr;r<r>rrrÚtest_auto_squeezeÄs    zSqueezerTest.test_auto_squeezecCs xdD]ú}|jdd}|j}| |¡}tdd|_| dd|¡| dd¡| | dd ¡d ¡| t |j ƒd ¡|j tƒd }| |d ¡| | dd ¡d¡| t |j ƒd¡| |j d j d¡|j d j tƒd | | dd ¡d ¡| t |j ƒd ¡qWdS)N)r[rXT)r:r.)rPz1.0z SOME TEXT Úinsertr^z SOME TEXT r)ÚeventÚbreakz r$z SOME TEXT)r=rr?rrKrar@rr_rUrMÚsqueeze_current_text_eventÚsÚexpand)rZtag_namer;r<r>ÚretvalrrrÚtest_squeeze_current_text_eventÐs"      z,SqueezerTest.test_squeeze_current_text_eventcCs¬|jdd}|j}| |¡}tdd|_| ddd¡| dd¡| | dd ¡d ¡| t |j ƒd ¡|j tƒd }| |d ¡| | dd ¡d ¡| t |j ƒd ¡dS)NT)r:r.)rPz1.0z SOME TEXT ZTAGrar^z SOME TEXT r)rbrc) r=rr?rrKrar@rr_rUrMrd)rr;r<r>rgrrrÚ/test_squeeze_current_text_event_no_allowed_tagsís     zrgrrrÚ/test_squeeze_text_before_existing_squeezed_texts$      zZorig_auto_squeeze_min_linesZnew_auto_squeeze_min_linesrrrÚ test_reloads   zSqueezerTest.test_reloadcCs t ¡dS)N)rro)rrrrÚ!test_reload_no_squeezer_instances,sz.SqueezerTest.test_reload_no_squeezer_instances)F)N)N)r4r5r6r=r?r9rErLrNrWrYr]r`rhrirlrprqrrrrr7Rs    r7c@sPeZdZdd„Zededdd„ƒZdd„Zd d „Zd d „Z d d„Z dd„Z dS)ÚExpandingButtonTestcCs$t|ƒ}tƒ}t|ƒ|j_d|_|S)NrZ)rrrr;rr\)rrr>rrrÚmake_mock_squeezer5s  z&ExpandingButtonTest.make_mock_squeezerzidlelib.squeezer.Hovertip)ÚautospeccCsÖ| ¡}|jj}tddd|ƒ}| |jd¡| |j|¡| d| d¡k¡| |  dd¡d¡|  d |  ¡¡d t   ¡r€d nd }|  ||  ¡¡| |jd ¡|j|ttd|jdd }|  d| ¡¡dS)NrOÚTAGSrZz50 linesrz1.0r^r(zz Ú2Ú3r$)Z hover_delayrz right-click)rsr;rr rreZmasterrkZcgetr_ZassertInZbindrZisAquaTkrSrTr Ú call_argsÚlower)rZ MockHovertipr>r<ÚexpandingbuttonZright_button_codeZ tooltip_textrrrrN?szExpandingButtonTest.test_initcCsº| ¡}tddd|ƒ}|j}|jd|d|j|_|jtƒd}| |d¡| | dd¡d¡|  d ¡}| | d|¡d¡| |  dd¡d|f¡| |j j j d ¡|j j  |¡dS) NrOrurZz1.0)Úwindow)rbr^zTEXT zend-1cr$)rsr rÚ window_createÚ base_textrfrrr_ÚindexZ tag_nextrangerMÚremoverSrT)rr>rzr<rgZtext_end_indexrrrÚ test_expand\s   zExpandingButtonTest.test_expandc Csú| ¡}dd}t|dd|ƒ}| ¡| |j¡|j}|jd|d|j|_tdƒ$}d|j _ d|j _ |j t ƒd }WdQRX| |d ¡| |j dd ¡d ¡tdƒ$}d |j _ d |j _ |j t ƒd }WdQRX| |d¡| |j dd ¡|¡dS)NÚai †rurZz1.0)r{zidlelib.squeezer.tkMessageBoxF)rbrczend-1cr T)rsr Zset_is_dangerousrkZ is_dangerousrr|r}rZ askokcancelrPZaskyesnorfrrr_)rr>rrzr<Z mock_msgboxrgrrrÚtest_expand_dangerous_oupput|s(     z0ExpandingButtonTest.test_expand_dangerous_oupputcCsp| ¡}tddd|ƒ}tƒ|_tƒ|_|jtƒd}| |d¡| |jjd¡| |jjd¡|j d¡dS)NrOrurZ)rbr$) rsr rZclipboard_clearZclipboard_appendÚcopyrrSrT)rr>rzrgrrrÚ test_copy¤s zExpandingButtonTest.test_copyc Csl| ¡}tddd|ƒ}tƒ|_tdtd8}|jtƒd| |jd¡| |j dd d¡WdQRXdS) NrOrurZzidlelib.squeezer.view_text)rt)rbr$rr") rsr rZ selection_ownrrZviewrrSrx)rr>rzZmock_view_textrrrÚ test_view¸s zExpandingButtonTest.test_viewc Cs’| ¡}tddd|ƒ}tdƒj}tƒ}||_tƒ}d|_d|_|j|d| |j j t |j ƒ¡x"|j D]^}}|j j |tdqhWWdQRXdS)NrOrurZz tkinter.Menur*)rb)ÚlabelZcommand)rsr rrrPÚxÚyZcontext_menu_eventrZ add_commandrSrUZ rmenu_specsZassert_any_callr )rr>rzZ mock_MenuZ mock_menuZ mock_eventr†ÚdatarrrÚ test_rmenuÉs    zExpandingButtonTest.test_rmenuN) r4r5r6rsrrrNr€r‚r„r…rŠrrrrrr1s  (rrÚ__main__r")Ú verbosity)$ÚtextwraprZtkinterrrZunittestZ unittest.mockrrrrr Z test.supportr Zidlelib.configr Zidlelib.squeezerr r rZidlelibrZidlelib.textviewrZidlelib.tooltiprZidlelib.pyshellrrQrZTestCaserr7rrr4rmrrrrÚs&       /`*