3 2aeU@sddlmZddlmZmZddlZddlmZmZm Z m Z m Z ddl m Z ddlmZddlmZmZmZddlmZdd lmZdd lmZdd lmZe jZd d ZGdddejZGdddejZ GdddejZ!e"dkrej#dddS)) namedtuple)TextTkN)MockNonCallableMagicMockpatchsentinelANY)requires)idleConf)count_lines_with_wrappingExpandingButtonSqueezer)macosx) view_text)Hovertip)PyShellcs0tdtjfdd}|j|S)NZguicsjjdS)N)Zupdate_idletasksZdestroy)rootr2/opt/alt/python36/lib64/python3.6/test_squeezer.py cleanup_rootsz&get_test_tk_root..cleanup_root)r rZwithdraw addCleanup)Z test_instancerr)rrget_test_tk_roots   rc@s<eZdZddZddZddZddZd d Zd d Zd S)CountLinesTestcCs|j|t|||S)N) assertEqualr )selfexpectedtext linewidthtabwidthrrrcheck#szCountLinesTest.checkcCs|jtdddS)Nr)rr )rrrrtest_count_empty)szCountLinesTest.test_count_emptycCs|jtdddS)Nz text)rr )rrrr!test_count_begins_with_empty_line-sz0CountLinesTest.test_count_begins_with_empty_linecCs|jtdddS)Nztext )rr )rrrrtest_count_ends_with_empty_line1sz.CountLinesTest.test_count_ends_with_empty_linecCs|jtdddS)Nz1 2 3 )rr )rrrrtest_count_several_lines5sz'CountLinesTest.test_count_several_linescCs|jddddd|jddddd|jddddd|jddddd|jddddd|jddd dd|jd dd dd|jddd dd|jddddd|jddddd|jddddd|jddd dd|jddd dd|jddddddS)Nr% )rrrrr#r'  r)z z z z z z z z z z z z z )r )rrrrtest_tab_width9szCountLinesTest.test_tab_widthN) __name__ __module__ __qualname__r r"r$r&r(r3rrrrr!s rc@seZdZddZd$ddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZeddZeejejejejfddZed d!Zd"d#ZdS)% SqueezerTestcCst}t|_|S)N)rr __class__)reditwinrrrmake_mock_editor_windowSsz$SqueezerTest.make_mock_editor_windowNcCs|dkr|j}t|S)N)r:r)rZ editor_windowrrrmake_squeezer_instance[sz#SqueezerTest.make_squeezer_instancecCs$xd D]\}}|j||dqWdS)Nr+Pr%Or*r'x)rrr+r<r%r=r*r<r'r>)r?r@rArB)_test_count_lines_helper)rrrrrrtest_count_linesaszSqueezerTest.test_count_linesc sdd}d}||j_|d|||jj_||ddfdd|j_t}fdd}||j_td |}|j|j |j dS) Nr-r#r%)ZborderZpadxZfontcs|S)Nr)opt) text_optsrr|szDSqueezerTest._prepare_mock_editwin_for_count_lines..cs|dkr StddS)N0z%measure should only be called on '0'!) ValueError)char) CHAR_WIDTHrrmeasureszCSqueezerTest._prepare_mock_editwin_for_count_lines..measurezidlelib.squeezer.Font) Zget_tk_tabwidth return_valuerZ winfo_widthcgetrrLrstartrstop) rr9rrZ BORDER_WIDTHZ PADDING_WIDTHZ mock_fontrLZpatcherr)rKrFr%_prepare_mock_editwin_for_count_linesks  z2SqueezerTest._prepare_mock_editwin_for_count_linesc Csh|j}|j||||j|}ttd}d}td|&|j|j|t|j|||WdQRXdS)N)rMTEXTz*idlelib.squeezer.count_lines_with_wrapping) r:rQr;rSENTINEL_VALUErassertIs count_linesassert_called_with)rrrr9squeezerZmock_count_linesrrrrrCs  z%SqueezerTest._test_count_lines_helpercCs2|j}|j|}|j|j||j|jgdS)N)r:r;rTr9rexpandingbuttons)rr9rWrrr test_inits zSqueezerTest.test_initcCs|j}xxddddddgD]`}ttd|_}|j|}|j|jj|ft|j|jd|j|f|jt |j d qWdS) Nr!rRz LONG TEXTiz MANY_LINES d)rMr%r) r:rrSwriter;rr9 call_countrVlenrX)rr9r orig_writerWrrrtest_write_no_tagss  zSqueezerTest.test_write_no_tagscCsx~ddddddgD]f}|j}t|j_|j}|j|}|j|jj|dt|j|jd|j|d|jt |j d qWdS) Nr!rRz LONG TEXTiz MANY_LINES rZstderrr%r) r:rSr[rMr;rr9r\rVr]rX)rrr9r^rWrrrtest_write_not_stdouts  z"SqueezerTest.test_write_not_stdoutcCs|j}|j|dddxndD]f}ttd|_}|j|}d|_|j|jj|dt|j|j d |j |d|jt |j d qWxnd d d dgD]Z}ttd|_}|j|}d|_|j|jj|dd|j|j d |jt |j d qWdS)Nr<r*)rrr!rR)rM2stdoutr%rz LONG TEXTiz MANY_LINES rZ)r!rR) r:rQrrSr[r;auto_squeeze_min_linesrr9r\rVr]rX)rr9rr^rWrrrtest_write_stdouts&     zSqueezerTest.test_write_stdoutcCst|}t|}|jdd|j}||_|j|}d|_tdd|_|j ddd|j |j ddd |j t |j d dS) Niomarkz1.0r,r1)rMzTEXT rcend r%)rrmark_setr:rr;rdrrUr[rgetr]rX)rr text_widgetr9rWrrrtest_auto_squeezes   zSqueezerTest.test_auto_squeezecCs,t|}xdD]}t|}|jdd|j}||_|j_|j|}tdd|_ |j dd||jdd|j |j dd d |j t |jd |jtd }|j |d |j |j dd d|j t |jd|j |jd jd|jd jtd |j |j dd d |j t |jd qWdS)Nrcr`rfz1.0r1)rMz SOME TEXT insertrgz SOME TEXT r)eventbreakz r%z SOME TEXT)rcr`)rrrir:rperbottomr;rrUrmrrjr]rXsqueeze_current_text_eventsexpand)rrZtag_namerkr9rWretvalrrrtest_squeeze_current_text_events(     z,SqueezerTest.test_squeeze_current_text_eventcCst|}t|}|jdd|j}||_|j_|j|}tdd|_ |j ddd|jdd|j |j ddd |j t |jd |jtd }|j |d |j |j ddd |j t |jd dS) Nrfz1.0r1)rMz SOME TEXT ZTAGrmrgz SOME TEXT r)rnro)rrrir:rrprqr;rrUrmrrjr]rXrr)rrrkr9rWrurrr/test_squeeze_current_text_event_no_allowed_tagss     zs zSqueezerTest._make_sigcCs|dd\}}|j||S)Nr#)r)r|Z mock_call_objargskwargsrrrget_GetOption_signatureFsz$SqueezerTest.get_GetOption_signaturecCs8|jtjttjddddtj|jtjddS)Nmainrzauto-squeeze-min-linesZ42*)ZassertIsInstancerrdintr Z SetOptionreloadr)rrrr test_reloadKszSqueezerTest.test_reload)N)r4r5r6r:r;rDrQrCrYr_rarerlrvrwrzrr{ classmethodrZ NOT_GIVENrrrrrrrr7Qs,    " r7c@sPeZdZddZededddZddZd d Zd d Z d dZ ddZ dS)ExpandingButtonTestcCs$t|}t}t||j_d|_|S)Nrb)rrrr9rrd)rrrWrrrmake_mock_squeezerWs  z&ExpandingButtonTest.make_mock_squeezerzidlelib.squeezer.Hovertip)autospeccCs|j}|jj}tddd|}|j|jd|j|j||jd|jdk|j|j ddd|j d |j d t j rd nd }|j ||j |j|jd |j|ttd|jdd }|j d|jdS)NrRTAGSrbz50 linesrz1.0rgrhzz 23r%)Z hover_delayrz right-click)rr9rr rrsZmasterryrNrjZassertInZbindrZisAquaTkr\rVr call_argslower)rZ MockHovertiprWrkexpandingbuttonZright_button_codeZ tooltip_textrrrrYaszExpandingButtonTest.test_initcCs|j}tddd|}|j}|jd|d|j|_|jtd}|j|d|j|jddd|j d }|j|jd|d|j|j ddd|f|j|j j j d |j j j|dS) NrRrrbz1.0)window)rnrgzTEXT zend-1cr%)rr r window_create base_textrtrrrjindexZ tag_nextrangerXremover\rV)rrWrrkruZtext_end_indexrrr test_expand~s   zExpandingButtonTest.test_expandcCs|j}dd}t|dd|}|j|j|j|j}|jd|d|j|_td$}d |j _ d |j _ |j t d }WdQRX|j|d |j|jjdd d td$}d|j _ d|j _ |j t d }WdQRX|j|d|j|jjdd |dS)Nar-r,rrbz1.0)rzidlelib.squeezer.tkMessageBoxF)rnrozend-1cr!Ti)rr Zset_is_dangerousryZ is_dangerousrrrrZ askokcancelrMZaskyesnortrrrj)rrWrrrkZ mock_msgboxrurrrtest_expand_dangerous_oupputs(     z0ExpandingButtonTest.test_expand_dangerous_oupputcCsp|j}tddd|}t|_t|_|jtd}|j|d|j|jjd|j|jjd|jjddS)NrRrrb)rnr%) rr rZclipboard_clearZclipboard_appendcopyrr\rV)rrWrrurrr test_copys zExpandingButtonTest.test_copyc Csl|j}tddd|}t|_tdtd8}|jtd|j|jd|j|j dd dWdQRXdS) NrRrrbzidlelib.squeezer.view_text)r)rnr%rr#) rr rZ selection_ownrrZviewrr\r)rrWrZmock_view_textrrr test_views zExpandingButtonTest.test_viewc Cs|j}tddd|}tdj}t}||_t}d|_d|_|j|d|j|j j t |j x"|j D]^}}|j j |tdqhWWdQRXdS)NrRrrbz tkinter.Menur-)rn)labelZcommand)rr rrrMxyZcontext_menu_eventrZ add_commandr\r]Z rmenu_specsZassert_any_callr )rrWrZ mock_MenuZ mock_menuZ mock_eventrdatarrr test_rmenus    zExpandingButtonTest.test_rmenuN) r4r5r6rrrrYrrrrrrrrrrSs )r__main__r#) verbosity)$ collectionsrZtkinterrrZunittestZ unittest.mockrrrrr Z test.supportr Zidlelib.configr Zidlelib.squeezerr r rZidlelibrZidlelib.textviewrZidlelib.tooltiprZidlelib.pyshellrrSrZTestCaserr7rr4rrrrrs(       0*