3  f @sdZddlmZddlmZedddlZddlmZddlm Z m Z Gdd d Z Gd d d ej Z ed kr|ejd ddS)zTest parenmatch, coverage 91%. This must currently be a gui test because ParenMatch methods use several text methods not defined on idlelib.idle_test.mock_tk.Text. ) ParenMatch)requiresZguiN)Mock)TkTextc@seZdZddZdS) DummyEditwincCs||_d|_d|_d|_dS)NT)textZ indentwidthZtabwidthZcontext_use_ps1)selfr r F/opt/alt/python36/lib64/python3.6/idlelib/idle_test/test_parenmatch.py__init__szDummyEditwin.__init__N)__name__ __module__ __qualname__r r r r r rsrc@sLeZdZeddZeddZddZddZd d Zd d Z d dZ dS)ParenMatchTestcCs8t|_|jjt|j|_t|j|_t|j_dS)N) rrootZwithdrawrr reditwinrZ text_frame)clsr r r setUpClasss    zParenMatchTest.setUpClasscCs$|`|`|jj|jj|`dS)N)r rrZupdate_idletasksZdestroy)rr r r tearDownClass!s  zParenMatchTest.tearDownClasscCs|jjdddS)Nz1.0end)r delete)r r r r tearDown(szParenMatchTest.tearDowncCst|j}dd|_|S)NcSsdS)Nr r r r r -sz/ParenMatchTest.get_parenmatch..)rrZbell)r pmr r r get_parenmatch+s  zParenMatchTest.get_parenmatchc Cs|j}|j}xd D]\}}}|j|d |jd d ||_|jd d|jd|jd|j|dkr|j |j dd d!|j |j dd ||jd d|j |j d|j|j|j dd f|jd|j |j dd |WdQRXqWdS)"z2 Test ParenMatch with each style. opener1.101.11defaultparens1.141.151.16 expression)stylez1.0rinsertzdef foobar(a, beventz<>Zparen)Nrrrrrr*r+rrrrr r-r.r"r#r#r$r!r0r1rr#rr$r%r3r4)r,r/r2r5)rr)r rZsubTestrZSTYLEr'flash_paren_eventZassertInZ event_infoZassertTupleEqualZ tag_nextrangeZ tag_prevrange restore_eventZ assertNotInZ assertEqualparen_closed_event)r r rr&Zrange1Zrange2r r r test_paren_styles0s4      z ParenMatchTest.test_paren_stylescCs^|j}|j}|jdd|jd|jdd|jd|jd|jdd|jddS)z Test corner cases in flash_paren_event and paren_closed_event. These cases force conditional expression and alternate paths. r'z# this is a commen)r(z defz a, *arg)N)r rr'r8r6)r r rr r r test_paren_cornerRs      z ParenMatchTest.test_paren_cornercCsN|j}t|_|jd|j|jj|jj|jd|j|jjdS)Nr)rrr7Zhandle_restore_timerZ assertTrueZcalledZ reset_mockZ assertFalse)r rr r r test_handle_restore_timeres   z(ParenMatchTest.test_handle_restore_timerN) rrr classmethodrrrrr9r:r<r r r r rs  "r__main__) verbosity)__doc__Zidlelib.parenmatchrZ test.supportrZunittestZ unittest.mockrZtkinterrrrZTestCaserrmainr r r r s   X