a  zec@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 Q/opt/bitninja-python-dojo/embedded/lib/python3.9/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 Cs\dD]R}dD]H}|j||d&|tj||ddWdq 1sJ0Yq qdS)N)) )linetabwidthr.rrsubTestrrZget_line_indent)rr.r-r r rtest_empty_lines$s z"TestGetLineIndent.test_empty_linesc CsXd}|D]J\}}|j|d&|tj|dd|Wdq1sH0YqdS)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 CsXd}|D]J\}}|j|d&|tj|dd|Wdq1sH0YqdS)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 Csz|j}|j}|j}|j}|j}tdgd}|dddd|ddd d |d dd d |d ddd |dddd|dddd|dddd|dddd|ddddf }d |_|D]j}|j|jd!Ft ||j| d"|j |dd#||d$d%|j Wdq1s0Yqt |d&| d'd(d|d||d$d%d)d*|_t |d+| d"d,|d||d$d%d-dS).NZTests)labelrMrAmarkz"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&  4   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     =[