U :ec@sdZddlmZddlZddlmZddlmZddlm Z ddl m Z ej Z Gdd d ejZGd d d ejZd d ZGdddejZGdddejZedkrejdddS)zTest editor, coverage 35%.)editorN) namedtuple)requires)Tk)Funcc@s,eZdZeddZeddZddZdS)EditorWindowTestcCstdt|_|jdS)Ngui)rrrootwithdrawclsr B/usr/local/python38/lib/python3.8/idlelib/idle_test/test_editor.py setUpClassszEditorWindowTest.setUpClasscCs>|j|jjddD]}|j|q|j|`dSNZafterinfo)r update_idletaskstkcall after_canceldestroyr idr r r tearDownClasss   zEditorWindowTest.tearDownClasscCs(t|jd}||j|j|dS)Nr )Editorr assertEqual_close)selfer r r test_inits zEditorWindowTest.test_initN)__name__ __module__ __qualname__ classmethodrrr r r r rr s   rc@s$eZdZddZddZddZdS)TestGetLineIndentc CsHdD]>}dD]4}|j||d|tj||ddW5QRXq qdS)N)) )linetabwidthr.rrsubTestrrZget_line_indent)rr.r-r r rtest_empty_lines$s z"TestGetLineIndent.test_empty_linesc CsDd}|D]6\}}|j|d|tj|dd|W5QRXqdS)N) z no spacesr0)z space test)r(r() tab test)r&r() double tabs test)r'r*)z mixed testr*)z mixed test)r8r))z mixed testr7) mixed test)r() mixed test)r:r8) mixed test)r:r)z newline testr0r-r(r/r1rtestsr-expectedr r rtest_tabwidth_4-s  z!TestGetLineIndent.test_tabwidth_4c CsDd}|D]6\}}|j|d|tj|dd|W5QRXqdS)N) r4)z space test)r*r*)r5)r&r*)r6)r')z mixed test rC)z mixed test)rE )z mixed testrD)r9)r:r*)r;)r:rE)r<)r:rFr=r>r*r/r1r?r r rtest_tabwidth_8Fs  z!TestGetLineIndent.test_tabwidth_8N)r!r"r#r3rBrGr r r rr%#s r%cCs$|dd|d||dS)N1.0end)deleteinsertupdate)textstringr r rrK`s  rKc@s,eZdZeddZeddZddZdS)IndentAndNewlineTestcCs<tdt|_|jt|jd|_d|j_d|j_dS)Nrrr')rrr r rwindowZ indentwidthr.r r r rrhs  zIndentAndNewlineTest.setUpClasscCsL|j|`|j|jjddD]}|j|q(|j|`dSrrPrr rrrrrrr r rrqs   z"IndentAndNewlineTest.tearDownClassc Csh|j}|j}|j}|j}|j}tdddddg}|dddd |d d d d |dd d d|dddd|dddd|dddd |dddd|ddd d |d!dd"df }d#|_|D]T}|j|jd$<t ||j| d%|j |dd&||d'd(|j W5QRXqt |d)| d*d+d |d||d'd(d,d-|_t |d.| d%d/|d||d'd(d0dS)1NZTestslabelrMrAmarkz"Empty line inserts with no indent.z def __init__(self):z def __init__(self): z1.endz+Inside bracket before space, deletes space.z def f1(self, a, b):z def f1(self, a, b): z1.14z*Inside bracket after space, deletes space.z1.15z(Inside string with one line - no indent.z """Docstring."""z """Docstring. """ z&Inside string with more than one line.z% """Docstring. Docstring Line 2"""z) """Docstring. Docstring Line 2 """ z2.18zBackslash with one line.za =\za =\ z"Backslash with more than one line.za =\ multiline\z%a =\ multiline\ z2.endz Block opener - indents +1 level.z def f1(self): passz def f1(self): pass z Block closer - dedents -1 level.z def f1(self): pass r+)rRrK)eventrHrIz& def f1(self, a, b): return a + bZselz1.17z- def f1(self, a, return a + b z>>> z >>> a =z1.5z >>> a = )rrPrMgetZnewline_and_indent_eventrZprompt_last_liner2rRrKZmark_setrSrAZtag_add) reqwrMrUnlZTestInfor@testr r rtest_indent_and_newline_event{s&     z2IndentAndNewlineTest.test_indent_and_newline_eventN)r!r"r#r$rrrZr r r rrOfs   rOc@s:eZdZeddZeddZGdddZddZd S) RMenuTestcCs,tdt|_|jt|jd|_dS)Nrr)rrr r rrPr r r rrs zRMenuTest.setUpClasscCsL|j|`|j|jjddD]}|j|q(|j|`dSrrQrr r rrs   zRMenuTest.tearDownClassc@seZdZddZdS)zRMenuTest.DummyRMenucCsdSNr )xyr r rtk_popupzRMenuTest.DummyRMenu.tk_popupN)r!r"r#r_r r r r DummyRMenusracCsdSr\r )rr r r test_rclickszRMenuTest.test_rclickN)r!r"r#r$rrrarbr r r rr[s   r[__main__r') verbosity)__doc__ZidlelibrZunittest collectionsrZ test.supportrtkinterrZidlelib.idle_test.mock_idlerZ EditorWindowrZTestCaserr%rKrOr[r!mainr r r rs     =[