
    /hh                        S r SSKJr  SSKJr  \" S5        SSKrSSKrSSKJ	r	J
r
JrJrJr  SSKJr  SSKJr  SS	KJr  S
 rS r " S S\R,                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r\S:X  a  \R@                  " SS9  gg)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                  @    [        5       q[        R                  5         g Nr   rootwithdraw     H/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_textview.pysetUpModuler      s    4DMMOr   c                  V    [         R                  5         [         R                  5         B g r   r   update_idletasksdestroyr   r   r   tearDownModuler      s    LLNr   c                   >    \ rS rSr\" 5       r\" 5       r\" 5       rSrg)VW#   r   N)	__name__
__module____qualname____firstlineno__r   	transientgrab_setwait_window__static_attributes__r   r   r   r   r   #   s    IvH&Kr   r   c                   ,    \ rS rSrS rS rS rS rSrg)ViewWindowTest*   c                     [         R                  R                  5         [         R                  R                  5         [         R                  R                  5         g r   )r   r#   __init__r$   r%   selfs    r   setUpViewWindowTest.setUp,   s2    


!r   c                 <   [        [        SS5      nU R                  [         R                  R                  5        U R                  [         R
                  R                  5        U R                  [         R                  R                  5        UR                  5         g )NTitle	test text)r   r   
assertTruer#   calledr$   r%   okr-   views     r   test_init_modalViewWindowTest.test_init_modal1   s[    $-++,**+--.	r   c                 :   [        [        SSSS9nU R                  [         R                  R                  5        U R                  [         R
                  R                  5        U R                  [         R                  R                  5        UR                  5         g Nr1   r2   Fmodal)r   r   assertFalser#   r4   r$   r%   r5   r6   s     r   test_init_nonmodal!ViewWindowTest.test_init_nonmodal8   sc    $E:,,-++,../	r   c                     [        [        SSSS9n[        5       Ul        UR	                  5         U R                  UR                  R                  5        U?UR                  5         g r;   )r   r   r   r   r5   r3   r4   r6   s     r   test_okViewWindowTest.test_ok?   sH    $E:v	++,Lr   r   N)	r   r    r!   r"   r.   r8   r?   rB   r&   r   r   r   r(   r(   *   s    "
r   r(   c                       \ rS rSrS rSrg)AutoHideScrollbarTestH   c                     [         R                  " [        5      nU R                  [        UR
                  5        U R                  [        UR                  5        g r   )tvAutoHideScrollbarr   assertRaisesr   packplace)r-   scrolls     r   test_forbidden_geometry-AutoHideScrollbarTest.test_forbidden_geometryJ   s:    %%d+(FKK0(FLL1r   r   N)r   r    r!   r"   rN   r&   r   r   r   rE   rE   H   s    2r   rE   c                   L    \ rS rSr\S 5       r\S 5       r\4S jrS r	S r
Srg)	ScrollableTextFrameTestP   c                 F    [        5       =U l        nUR                  5         g r   r   clsr   s     r   
setUpClass"ScrollableTextFrameTest.setUpClassR   s    $4r   c                 p    U R                   R                  5         U R                   R                  5         U ? g r   r   rU   s    r   tearDownClass%ScrollableTextFrameTest.tearDownClassW   s'    !!#Hr   c                 |   ^ [         R                  " U R                  4SU0UD6mU4S jnU R                  U5        T$ )Nwrapc                  F   > T R                  5         T R                  5         g r   )r   r   )frames   r   cleanup_frame9ScrollableTextFrameTest.make_frame.<locals>.cleanup_frame_   s    ""$MMOr   )rH   ScrollableTextFramer   
addCleanup)r-   r]   kwargsr`   r_   s       @r   
make_frame"ScrollableTextFrameTest.make_frame]   s9    &&tyyFtFvF	 	&r   c                     U R                  5       nUR                  R                  SS5        U R                  UR                  R	                  SS5      S5        g )N1.0r2   1.end)re   textinsertassertEqualget)r-   r_   s     r   
test_line1"ScrollableTextFrameTest.test_line1e   sA    !

%-w7Er   c                    U R                  [        S9nU R                  UR                  R	                  S5      [        5        U R                  UR                  5        [        [        4 Hp  nU R                  US9   U R                  US9nU R                  UR                  R	                  S5      U5        U R                  UR                  5        S S S 5        Mr     g ! , (       d  f       M  = f)N)r]   r]   )re   r	   rl   rj   cgetassertIsNotNonexscrollr   r
   subTestassertIsNone)r-   r_   r]   s      r   test_horiz_scrollbar,ScrollableTextFrameTest.test_horiz_scrollbarj   s     T*0$7U]]+ 4LD4(T2  !8$?!!%--0 )( !((s   <AC
C.	r   N)r   r    r!   r"   classmethodrV   rZ   r	   re   rn   rv   r&   r   r   r   rQ   rQ   P   s=       
 # F
1r   rQ   c                   :    \ rS rSr\S 5       r\S 5       rS rSrg)ViewFrameTest|   c                 ~    [        5       =U l        nUR                  5         [        R                  " US5      U l        g )Nr2   )r   r   r   rH   	ViewFramer_   rT   s     r   rV   ViewFrameTest.setUpClass~   s+    $4LL{3	r   c                 t    U ? U R                  R                  5         U R                  R                  5         U ?g r   )r_   r   r   r   rY   s    r   rZ   ViewFrameTest.tearDownClass   s,    I!!#Hr   c                 v    U R                   R                  R                  nU R                  U" SS5      S5        g )Nrh   ri   r2   )r_   rj   rm   rl   )r-   rm   s     r   rn   ViewFrameTest.test_line1   s,    jjoo!!UG,k:r   r   N)	r   r    r!   r"   rx   rV   rZ   rn   r&   r   r   r   rz   rz   |   s-    4 4
  ;r   rz   c                   R    \ rS rSr\S 5       r\S 5       rS rS rS r	S r
S rS	rg
)ViewFunctionTest   c                 T    [         R                  U l        [        5       [         l        g r   )rH   	showerror
orig_errorr   rY   s    r   rV   ViewFunctionTest.setUpClass   s     {r   c                 2    U R                   [        l        U ? g r   )r   rH   r   rY   s    r   rZ   ViewFunctionTest.tearDownClass   s    ~~Nr   c                    [         R                  " [        SSSS9nU R                  U[         R                  5        U R                  UR
                  [         R                  5        UR
                  R                  5         g r;   )rH   	view_textr   assertIsInstance
ViewWindow	viewframer}   r5   r6   s     r   test_view_textViewFunctionTest.test_view_text   sR    ||D';eDdBMM2dnnbll;r   c                 ~   [         R                  " [        S[        SSS9nU R	                  U[         R
                  5        U R	                  UR                  [         R                  5        UR                  R                  R                  R                  nU R                  SU" SS5      5        UR                  5         g )Nr1   asciiFr<   Testrh   ri   )rH   	view_filer   __file__r   r   r   r}   	textframerj   rm   assertInr5   )r-   r7   rm   s      r   test_view_fileViewFunctionTest.test_view_file   s}    ||D'8WEJdBMM2dnnbll;nn&&++//fc%12	r   c                     [         R                  " [        SSSSS9nU R                  U5        U R	                  [         R
                  R                  S5        g )Nr1   zabc.xyzr   Fr<   zFile Load Error)rH   r   r   ru   rl   r   titler6   s     r   test_bad_fileViewFunctionTest.test_bad_file   sA    ||D'9gUK$++->?r   c                 <   [         R                  nUR                  UR                  UR	                  [
        5      SS5      5      n[        R                  " [        SUSSS9nU R                  U5        U R                  [        R                  R                  S5        g )Nz..zCREDITS.txtr1   r   Fr<   zUnicode Decode Error)ospathabspathjoindirnamer   rH   r   r   ru   rl   r   r   )r-   pfnr7   s       r   test_bad_encoding"ViewFunctionTest.test_bad_encoding   sn    GGYYqvvaii14GH||D'2weD$++-CDr   c                     [         R                  " [        SSSSS9nUR                  R                  R
                  nU R                  UR                  S5      S5        g )Nr1   testFnone)r=   r]   r]   )rH   r   r   r   r   rj   rl   rq   )r-   r7   text_widgets      r   test_nowrapViewFunctionTest.test_nowrap   sH    ||D'6VLnn..33))&16:r   r   N)r   r    r!   r"   rx   rV   rZ   r   r   r   r   r   r&   r   r   r   r   r      sC    # #  @E;r   r   c                   ,    \ rS rSrS rS rS rS rSrg)ButtonClickTest   c                      S U l         SU l        g )NF)r7   r4   r,   s    r   r.   ButtonClickTest.setUp   s    	r   c                 \    U R                   (       a  U R                   R                  5         g g r   )r7   r   r,   s    r   tearDownButtonClickTest.tearDown   s    99II r   c                   ^  U 4S jn[        [        SUS9nUR                  5         T R                  UR                  5        T R                  T R                  S5        T R                  T R                  R                  5       S5        T R                  T R                  R                  R                  R                  R                  SS5      S5        g )	Nc                  T   > ST l         [        R                  " [        SSSS9T l        g )NT
TITLE_TEXTCOMMAND)_utest)r4   rH   r   r   r7   r,   s   r   _commandAButtonClickTest.test_view_text_bind_with_button.<locals>._command   s     DKT<4PDIr   BUTTONrj   commandTr   rh   ri   r   )r   r   invokerc   r   rl   r4   r7   r   r   r   rj   rm   )r-   r   buttons   `  r   test_view_text_bind_with_button/ButtonClickTest.test_view_text_bind_with_button   s    	Q 8X>'d+*L9,,66;;??wO"	$r   c                   ^  U 4S jn[        [        SUS9nUR                  5         T R                  UR                  5        T R                  T R                  S5        T R                  T R                  R                  5       S5        T R                  R                  R                  R                  R                  n[        [        5       nT R                  U" SS5      UR                  5       R!                  5       5        UR                  5         T R                  U" SS	5      UR                  5       R!                  5       5        S S S 5        g ! , (       d  f       g = f)
Nc                  ^   > ST l         [        R                  " [        S[        SSS9T l        g )NT
TITLE_FILEr   )encodingr   )r4   rH   r   r   r   r7   r,   s   r   r   AButtonClickTest.test_view_file_bind_with_button.<locals>._command   s&    DKT<.5dDDIr   r   r   Tr   rh   ri   z3.0z3.end)r   r   r   rc   r   rl   r4   r7   r   r   r   rj   rm   openr   readlinestrip)r-   r   r   rm   fs   `    r   test_view_file_bind_with_button/ButtonClickTest.test_view_file_bind_with_button   s    	D 8X>'d+*L9ii!!++0044(^qS0!**,2D2D2FGJJLS0!**,2D2D2FG ^^s   A;E
E)r4   r7   N)	r   r    r!   r"   r.   r   r   r   r&   r   r   r   r   r      s     $Hr   r   __main__   )	verbosity)!__doc__idlelibr   rH   test.supportr   r   unittesttkinterr   r   r   r	   r
   tkinter.ttkr   idlelib.idle_test.mock_idler   idlelib.idle_test.mock_tkr   r   r   r   r   TestCaser(   rE   rQ   rz   r   r   r   mainr   r   r   <module>r      s    # !  	  2 2  , /
 X&& <2H-- 2)1h// )1X;H%% ;**;x(( *;\&Hh'' &HR zMMA r   