Ë
    #´˜jÄ  ã                   óä  — d Z ddlmZ ddlmZ  ed«       ddlZddlZddlm	Z	m
Z
mZmZmZ ddlmZ ddlmZ dd	lmZ d
„ Zd„ Z G d„ dej,                  «      Z G d„ dej0                  «      Z G d„ dej0                  «      Z G d„ dej0                  «      Z G d„ dej0                  «      Z G d„ dej0                  «      Z G d„ dej0                  «      Zedk(  r ej@                  d¬«       yy)a  Test textview, coverage 100%.

Since all methods and functions create (or destroy) a ViewWindow, which
is a widget containing a widget, etcetera, all tests must be gui tests.
Using mock Text would not change this.  Other mocks are used to retrieve
information about calls.
é    )Útextview)ÚrequiresÚguiN)ÚTkÚTclErrorÚCHARÚNONEÚWORD)ÚButton)ÚFunc)Ú	Mbox_funcc                  ó@   — t        «       at        j                  «        y ©N©r   ÚrootÚwithdraw© ó    ú1lib/python3.12/idlelib/idle_test/test_textview.pyÚsetUpModuler      s   € ä‹4€DÜ‡M�M…Or   c                  óV   — t         j                  «        t         j                  «        b y r   ©r   Úupdate_idletasksÚdestroyr   r   r   ÚtearDownModuler      s   € ä×ÑÔÜ‡L�L„NÙr   c                   ó6   — e Zd Z e«       Z e«       Z e«       Zy)ÚVWN)Ú__name__Ú
__module__Ú__qualname__r   Ú	transientÚgrab_setÚwait_windowr   r   r   r   r   #   s   „ Ù“€IÙ‹v€HÙ“&�Kr   r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚViewWindowTestc                 ó¸   — t         j                  j                  «        t         j                  j                  «        t         j                  j                  «        y r   )r   r!   Ú__init__r"   r#   ©Úselfs    r   ÚsetUpzViewWindowTest.setUp,   s2   € Ü
�‰×ÑÔÜ
�‰×ÑÔÜ
�‰×ÑÕ!r   c                 ó<  — t        t        dd«      }| j                  t         j                  j                  «       | j                  t         j
                  j                  «       | j                  t         j                  j                  «       |j                  «        y )NÚTitleú	test text)r   r   Ú
assertTruer!   Úcalledr"   r#   Úok©r)   Úviews     r   Útest_init_modalzViewWindowTest.test_init_modal1   s[   € Ü”$˜ Ó-ˆØ�‰œŸ™×+Ñ+Ô,Ø�‰œŸ™×*Ñ*Ô+Ø�‰œŸ™×-Ñ-Ô.Ø�‰�	r   c                 ó@  — t        t        ddd¬«      }| j                  t         j                  j                  «       | j                  t         j
                  j                  «       | j                  t         j                  j                  «       |j                  «        y ©Nr,   r-   F©Úmodal)r   r   ÚassertFalser!   r/   r"   r#   r0   r1   s     r   Útest_init_nonmodalz!ViewWindowTest.test_init_nonmodal8   sc   € Ü”$˜ °EÔ:ˆØ×ÑœŸ™×,Ñ,Ô-Ø×ÑœŸ™×+Ñ+Ô,Ø×ÑœŸ™×.Ñ.Ô/Ø�‰�	r   c                 óÖ   — t        t        ddd¬«      }t        «       |_        |j	                  «        | j                  |j                  j                  «       |`|j                  «        y r5   )r   r   r   r   r0   r.   r/   r1   s     r   Útest_okzViewWindowTest.test_ok?   sH   € Ü”$˜ °EÔ:ˆÜ“vˆŒØ�‰Œ	Ø�‰˜Ÿ™×+Ñ+Ô,ØˆLØ�‰�r   N)r   r   r    r*   r3   r9   r;   r   r   r   r%   r%   *   s   „ ò"ò
òór   r%   c                   ó   — e Zd Zd„ Zy)ÚAutoHideScrollbarTestc                 ó¶   — t        j                  t        «      }| j                  t        |j
                  «       | j                  t        |j                  «       y r   )ÚtvÚAutoHideScrollbarr   ÚassertRaisesr   ÚpackÚplace)r)   Úscrolls     r   Útest_forbidden_geometryz-AutoHideScrollbarTest.test_forbidden_geometryJ   s:   € Ü×%Ñ%¤dÓ+ˆØ×Ñœ( F§K¡KÔ0Ø×Ñœ( F§L¡LÕ1r   N)r   r   r    rE   r   r   r   r=   r=   H   s   „ ó2r   r=   c                   óB   — e Zd Zed„ «       Zed„ «       Zefd„Zd„ Zd„ Z	y)ÚScrollableTextFrameTestc                 óF   — t        «       x| _        }|j                  «        y r   r   ©Úclsr   s     r   Ú
setUpClassz"ScrollableTextFrameTest.setUpClassR   s   € ä›$ÐˆŒ�4Ø�‰�r   c                 óp   — | j                   j                  «        | j                   j                  «        | ` y r   r   ©rJ   s    r   ÚtearDownClassz%ScrollableTextFrameTest.tearDownClassW   s'   € à�‰×!Ñ!Ô#Ø�‰×ÑÔØ‰Hr   c                 óx   ‡— t        j                  | j                  fd|i|¤ŽŠˆfd„}| j                  |«       ‰S )NÚwrapc                  óF   •— ‰ j                  «        ‰ j                  «        y r   )r   r   )Úframes   €r   Úcleanup_framez9ScrollableTextFrameTest.make_frame.<locals>.cleanup_frame_   s   ø€ Ø×"Ñ"Ô$Ø�M‰M�Or   )r?   ÚScrollableTextFramer   Ú
addCleanup)r)   rP   ÚkwargsrS   rR   s       @r   Ú
make_framez"ScrollableTextFrameTest.make_frame]   s9   ø€ Ü×&Ñ& t§y¡yÑF°tÐF¸vÑFˆô	ð 	�‰˜Ô&Øˆr   c                 ó´   — | j                  «       }|j                  j                  dd«       | j                  |j                  j	                  dd«      d«       y )Nú1.0r-   ú1.end)rW   ÚtextÚinsertÚassertEqualÚget)r)   rR   s     r   Ú
test_line1z"ScrollableTextFrameTest.test_line1e   sA   € Ø—‘Ó!ˆØ�
‰
×Ñ˜% Ô-Ø×Ñ˜Ÿ™Ÿ™¨¨wÓ7¸ÕEr   c                 óä  — | j                  t        ¬«      }| j                  |j                  j	                  d«      t        «       | j                  |j                  «       t        t        fD ]u  }| j                  |¬«      5  | j                  |¬«      }| j                  |j                  j	                  d«      |«       | j                  |j                  «       d d d «       Œw y # 1 sw Y   Œ‚xY w)N)rP   rP   )rW   r	   r]   r[   ÚcgetÚassertIsNotNoneÚxscrollr   r
   ÚsubTestÚassertIsNone)r)   rR   rP   s      r   Útest_horiz_scrollbarz,ScrollableTextFrameTest.test_horiz_scrollbarj   s¯   € ð —‘¤T�Ó*ˆØ×Ñ˜Ÿ™Ÿ™¨Ó0´$Ô7Ø×Ñ˜UŸ]™]Ô+ô œ4“LˆDØ—‘ 4�Õ(ØŸ™¨T˜Ó2�Ø× Ñ  §¡§¡°Ó!8¸$Ô?Ø×!Ñ! %§-¡-Ô0÷ )Ð(ñ !ß(Ð(ús   ÂAC&Ã&C/	N)
r   r   r    ÚclassmethodrK   rN   r	   rW   r_   rf   r   r   r   rG   rG   P   s=   „ àñó ðð ñó ðð
 #ó òFó
1r   rG   c                   ó2   — e Zd Zed„ «       Zed„ «       Zd„ Zy)ÚViewFrameTestc                 ó|   — t        «       x| _        }|j                  «        t        j                  |d«      | _        y )Nr-   )r   r   r   r?   Ú	ViewFramerR   rI   s     r   rK   zViewFrameTest.setUpClass~   s+   € ä›$ÐˆŒ�4Ø�‰ŒÜ—L‘L  {Ó3ˆ�	r   c                 ót   — | ` | j                  j                  «        | j                  j                  «        | `y r   )rR   r   r   r   rM   s    r   rN   zViewFrameTest.tearDownClass„   s,   € àˆIØ�‰×!Ñ!Ô#Ø�‰×ÑÔØ‰Hr   c                 óv   — | j                   j                  j                  }| j                   |dd«      d«       y )NrY   rZ   r-   )rR   r[   r^   r]   )r)   r^   s     r   r_   zViewFrameTest.test_line1‹   s,   € Ø�j‰j�o‰o×!Ñ!ˆØ×Ñ™˜U GÓ,¨kÕ:r   N)r   r   r    rg   rK   rN   r_   r   r   r   ri   ri   |   s-   „ àñ4ó ð4ð
 ñó ðó;r   ri   c                   óJ   — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚViewFunctionTestc                 óT   — t         j                  | _        t        «       t         _        y r   )r?   Ú	showerrorÚ
orig_errorr   rM   s    r   rK   zViewFunctionTest.setUpClass“   s   € äŸ™ˆŒÜ “{Œ�r   c                 ó2   — | j                   t        _        | ` y r   )rr   r?   rq   rM   s    r   rN   zViewFunctionTest.tearDownClass˜   s   € à—~‘~ŒŒØ‰Nr   c                 ó  — t        j                  t        ddd¬«      }| j                  |t         j                  «       | j                  |j
                  t         j                  «       |j
                  j                  «        y r5   )r?   Ú	view_textr   ÚassertIsInstanceÚ
ViewWindowÚ	viewframerk   r0   r1   s     r   Útest_view_textzViewFunctionTest.test_view_text�   sR   € Ü�|‰|œD '¨;¸eÔDˆØ×Ñ˜d¤B§M¡MÔ2Ø×Ñ˜dŸn™n¬b¯l©lÔ;Ø�‰×ÑÕr   c                 ó‚  — t        j                  t        dt        dd¬«      }| j	                  |t         j
                  «       | j	                  |j                  t         j                  «       |j                  j                  j                  j                  }| j                  d |dd«      «       |j                  «        y )Nr,   ÚasciiFr6   ÚTestrY   rZ   )r?   Ú	view_filer   Ú__file__rv   rw   rx   rk   Ú	textframer[   r^   ÚassertInr0   )r)   r2   r^   s      r   Útest_view_filezViewFunctionTest.test_view_file£   s}   € Ü�|‰|œD '¬8°WÀEÔJˆØ×Ñ˜d¤B§M¡MÔ2Ø×Ñ˜dŸn™n¬b¯l©lÔ;Ø�n‰n×&Ñ&×+Ñ+×/Ñ/ˆØ�‰�f™c %¨Ó1Ô2Ø�‰�	r   c                 ó¶   — t        j                  t        dddd¬«      }| j                  |«       | j	                  t         j
                  j                  d«       y )Nr,   zabc.xyzr{   Fr6   zFile Load Error)r?   r}   r   re   r]   rq   Útitler1   s     r   Útest_bad_filezViewFunctionTest.test_bad_file«   sA   € ä�|‰|œD '¨9°gÀUÔKˆØ×Ñ˜$ÔØ×ÑœŸ™×+Ñ+Ð->Õ?r   c                 ó@  — t         j                  }|j                  |j                  |j	                  t
        «      dd«      «      }t        j                  t        d|dd¬«      }| j                  |«       | j                  t        j                  j                  d«       y )Nz..zCREDITS.txtr,   r{   Fr6   zUnicode Decode Error)ÚosÚpathÚabspathÚjoinÚdirnamer~   r?   r}   r   re   r]   rq   rƒ   )r)   ÚpÚfnr2   s       r   Útest_bad_encodingz"ViewFunctionTest.test_bad_encoding±   sn   € Ü�G‰GˆØ�Y‰Y�q—v‘v˜aŸi™i¬Ó1°4¸ÓGÓHˆÜ�|‰|œD '¨2¨w¸eÔDˆØ×Ñ˜$ÔØ×ÑœŸ™×+Ñ+Ð-CÕDr   c                 óÂ   — t        j                  t        dddd¬«      }|j                  j                  j
                  }| j                  |j                  d«      d«       y )Nr,   ÚtestFÚnone)r7   rP   rP   )r?   ru   r   rx   r   r[   r]   ra   )r)   r2   Útext_widgets      r   Útest_nowrapzViewFunctionTest.test_nowrap¸   sH   € Ü�|‰|œD '¨6¸ÀVÔLˆØ—n‘n×.Ñ.×3Ñ3ˆØ×Ñ˜×)Ñ)¨&Ó1°6Õ:r   N)r   r   r    rg   rK   rN   ry   r�   r„   r�   r’   r   r   r   ro   ro   ‘   sC   „ àñ#ó ð#ð ñó ðòòò@òEó;r   ro   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚButtonClickTestc                 ó    — d | _         d| _        y )NF)r2   r/   r(   s    r   r*   zButtonClickTest.setUpÁ   s   € ØˆŒ	Øˆ�r   c                 óR   — | j                   r| j                   j                  «        y y r   )r2   r   r(   s    r   ÚtearDownzButtonClickTest.tearDownÅ   s   € Ø�9Š9Ø�I‰I×ÑÕð r   c                 óª  ‡ — ˆ fd„}t        t        d|¬«      }|j                  «        ‰ j                  |j                  «       ‰ j                  ‰ j                  d«       ‰ j                  ‰ j                  j                  «       d«       ‰ j                  ‰ j                  j                  j                  j                  j                  dd«      d«       y )	Nc                  óX   •— d‰ _         t        j                  t        ddd¬«      ‰ _        y )NTÚ
TITLE_TEXTÚCOMMAND)Ú_utest)r/   r?   ru   r   r2   r(   s   €r   Ú_commandzAButtonClickTest.test_view_text_bind_with_button.<locals>._commandÊ   s    ø€ ØˆDŒKÜŸ™¤T¨<¸È4ÔPˆD�Ir   ÚBUTTON©r[   ÚcommandTrš   rY   rZ   r›   )r   r   ÚinvokerU   r   r]   r/   r2   rƒ   rx   r   r[   r^   )r)   r�   Úbuttons   `  r   Útest_view_text_bind_with_buttonz/ButtonClickTest.test_view_text_bind_with_buttonÉ   s—   ø€ ô	Qô œ 8°XÔ>ˆØ�‰ŒØ�‰˜Ÿ™Ô'à×Ñ˜Ÿ™ dÔ+Ø×Ñ˜Ÿ™Ÿ™Ó*¨LÔ9Ø×Ñ˜Ÿ™×,Ñ,×6Ñ6×;Ñ;×?Ñ?ÀÀwÓOØ"õ	$r   c                 óº  ‡ — ˆ fd„}t        t        d|¬«      }|j                  «        ‰ j                  |j                  «       ‰ j                  ‰ j                  d«       ‰ j                  ‰ j                  j                  «       d«       ‰ j                  j                  j                  j                  j                  }t        t        «      5 }‰ j                   |dd«      |j                  «       j!                  «       «       |j                  «        ‰ j                   |dd	«      |j                  «       j!                  «       «       d d d «       y # 1 sw Y   y xY w)
Nc                  ób   •— d‰ _         t        j                  t        dt        dd¬«      ‰ _        y )NTÚ
TITLE_FILEr{   )Úencodingrœ   )r/   r?   r}   r   r~   r2   r(   s   €r   r�   zAButtonClickTest.test_view_file_bind_with_button.<locals>._command×   s&   ø€ ØˆDŒKÜŸ™¤T¨<¼Ø.5¸dôDˆD�Ir   rž   rŸ   Tr¦   rY   rZ   z3.0z3.end)r   r   r¡   rU   r   r]   r/   r2   rƒ   rx   r   r[   r^   Úopenr~   ÚreadlineÚstrip)r)   r�   r¢   r^   Úfs   `    r   Útest_view_file_bind_with_buttonz/ButtonClickTest.test_view_file_bind_with_buttonÖ   sê   ø€ ô	Dô œ 8°XÔ>ˆØ�‰ŒØ�‰˜Ÿ™Ô'à×Ñ˜Ÿ™ dÔ+Ø×Ñ˜Ÿ™Ÿ™Ó*¨LÔ9Ø�i‰i×!Ñ!×+Ñ+×0Ñ0×4Ñ4ˆÜ”(Œ^˜qØ×Ñ™S ¨Ó0°!·*±*³,×2DÑ2DÓ2FÔGØ�J‰JŒLØ×Ñ™S ¨Ó0°!·*±*³,×2DÑ2DÓ2FÔG÷ �^‰^ús   ÃA;EÅEN)r   r   r    r*   r—   r£   r¬   r   r   r   r”   r”   ¿   s   „ òò ò$óHr   r”   Ú__main__é   )Ú	verbosity)!Ú__doc__Úidlelibr   r?   Útest.supportr   r†   ÚunittestÚtkinterr   r   r   r	   r
   Útkinter.ttkr   Úidlelib.idle_test.mock_idler   Úidlelib.idle_test.mock_tkr   r   r   rw   r   ÚTestCaser%   r=   rG   ri   ro   r”   r   Úmainr   r   r   Ú<module>rº      sÖ   ðñõ #Ý !Ù ˆ„ã 	Û ß 2Õ 2Ý Ý ,Ý /òò
ôˆ�‰ô ô�X×&Ñ&ô ô<2˜H×-Ñ-ô 2ô)1˜h×/Ñ/ô )1ôX;�H×%Ñ%ô ;ô**;�x×(Ñ(ô *;ô\&H�h×'Ñ'ô &HðR ˆzÒØ€H‡M�M˜AÖð r   