
    z%i:                         d Z ddlZddlmZ ddlmZ  G d d      Z G d deej                        Z G d	 d
eej                        Z	e
dk(  r ej                  dd       yy)zi Test mock_tk.Text class against tkinter.Text class

Run same tests with both by creating a mixin class.
    N)requires)TclErrorc                   Z    e Zd ZdZdZedz   Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TextTestz*Define items common to both sets of tests.zhello
world
c                     | j                  | j                  j                  d      d       | j                  | j                  j                  d      d       y )N1.0r   end )assertEqualtextgetselfs    O/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_text.py	test_initzTextTest.test_init   s<    u-t4u-r2    c                     | j                   j                  }dD ]  }| j                   ||      d        dD ]  }| j                   ||      d        y )N)      333333?1.-1r	   1.0 lineend1.end1.33insertr	   )r
   g       @2.133.442.0)r   indexr   r   r   dexs      r   test_index_emptyzTextTest.test_index_empty   sY    		 	0CU3Z/	0 . 	0CU3Z/	0r   c                 6   | j                   j                  }| j                   j                  d| j                         dD ]  }| j	                   ||      d        dD ]  }| j	                   ||      d        dD ]  }| j	                   ||      d        y )Nr	   )r   r   r   r	   )r   r   r   z1.5)r
   r   z3.0)r   r   r   hwr   r    s      r   test_index_datazTextTest.test_index_data    s    				(+ 	0CU3Z/	0 2 	0CU3Z/	0 # 	0CU3Z/	0r   c                 j   | j                   j                  }| j                  }| j                   j                  d| j                          | |d      d        | |dd      d        | |d      d        | |dd      d        | |dd      d        | |dd      d        | |dd	      d
        | |dd      d
        | |d	      d        | |dd      d        | |dd      | j                          | |dd      | j
                          | |dd      | j
                         y )Nr	   r
   r   h1.11.3helelr   hello1.10r   2.3zello
worz2.5z0.0z5.0)r   r   r   r   r$   hwn)r   r   Equals      r   test_getzTextTest.test_get-   s   iimm  		(c%j"c%$c%j#c%%c%'c%&c%'1c% '*c- $'c%-c%)c%*c%*r   c                    | j                   j                  }| j                   j                  }| j                  } |d| j                          | |dd      | j
                          |dd        | |dd      | j
                          |dd        | |dd      d        |dd        | |dd      d        |dd        | |dd      d	        |dd
        | |dd      d        |dd        | |dd      d       y )Nr	   r
   r   *z*hello
world
r   z*hello*
world
r.   z*hello*
wor*ld
xz*hello*
wor*ldx
1.4zx
z*helx
lo*
wor*ldx
)r   r   r   r   r$   r/   )r   r   r   r0   s       r   test_insertzTextTest.test_insert@   s    !!iimm  udggc%*ubc%*ucc%!23}c"c%!34ucc%!45ucc%!56uec%!89r   c                 `   | j                   j                  }| j                   j                  }| j                  }| j                   j	                  d| j
                          |d        | |dd      | j                          |d        | |dd      | j                          |dd        | |dd      | j                          |dd        | |dd      | j                          |dd        | |dd      | j                          |dd        | |dd      | j                         y )Nr	   r   r
   z5.5r5   )r   deleter   r   r   r$   r/   r   r8   r   r0   s       r   test_no_deletezTextTest.test_no_deleteZ   s    !!iimm  		(xc%*uc%*xc%*xc%*uec%*uec%*r   c                 $   | j                   j                  }| j                   j                  }| j                  }| j                   j	                  d| j
                          |d        | |dd      d        |dd        | |dd      d        |d        | |dd      d       | j                   j	                  dd        |d	        | |dd      d       | j                   j	                  dd        |dd
        | |dd      d       y )Nr	   r   ellor(   llolloworldr)   r   r-   r   r   r8   r   r   r   r$   r9   s       r   test_delete_charzTextTest.test_delete_chars   s    !!iimm  		(uc%!6*uec%!5) 	wc%!:.		%vc%!:.		%uec%!:.r   c                 R   | j                   j                  }| j                   j                  }| j                  }| j                   j	                  d| j
                          |dd        | |dd      d        |dd        | |dd      d       | j                   j	                  d| j
                          |dd        | |dd      d        |dd        | |dd      d       | j                   j	                  d| j
                          |dd	        | |dd      d
       y )Nr	   r   r
   z
world
r   r   zworld
z1.2r.   zheld
r?   r9   s       r   test_delete_slicezTextTest.test_delete_slice   s    !!iimm  		(um$c%-uec%&		(uec%+uec%&		(uec%*r   c                 \   | j                   j                  dd       | j                   j                  dd       | j                  | j                   j                  dd      d       | j                   j	                  dd       | j                  | j                   j                  dd      d       y )	Nr	   r,   r)   z	1
2
3
4
5r
   zhel1
2
3
4
5lo
z5.1zhello
)r   r   r   r   r8   r   s    r   test_multiple_lineszTextTest.test_multiple_lines   s}    		(		0ue46LM		&ue4i@r   c                    | j                   j                  }| j                  }| j                   j                  dd       | j	                  t
        |ddd       dD ]c  \  }}}}}} | |d|d      ||        | |d|d      ||        | |d|d      ||        | |d|d      ||        | |d	|d      ||       e y )
Nr	   zFirst
Second
Third
z2.2op))<TTFFF)z<=TTTFF)>FFFTT)z>=FFTTT)z==FFTFF)z!=TTFTTr(   r   r.   z3.3)r   comparer   r   assertRaisesr   )	r   rI   r0   rF   less1less0equalgreater0greater1s	            r   test_comparezTextTest.test_compare   s    ))##  		 89(GUD%@< 	;7BueXx '%U+UB7'%U+UB7'%U+UB7'%U+Xr:'%U+Xr:	;r   N)__name__
__module____qualname____doc__r$   r/   r   r"   r%   r1   r6   r:   r@   rB   rD   rP    r   r   r   r   	   sF    0	B
T'C
300+&:4+2/0+.A;r   r   c                   (    e Zd Zed        Zd Zd Zy)MockTextTestc                     ddl m} || _        y )Nr   )Text)idlelib.idle_test.mock_tkrY   )clsrY   s     r   
setUpClasszMockTextTest.setUpClass   s    2r   c                 .    | j                         | _        y N)rY   r   r   s    r   setUpzMockTextTest.setUp   s    IIK	r   c                    | j                   j                  }| j                  }| j                   j                  d| j                          | |dd      d        | |dd      d        | |dd      d        | |dd      d       y )Nr	   r
   )      z3.1r   )rb      )r   _decoder   r   r$   )r   decoder0   s      r   test_decodezMockTextTest.test_decode   sx    ""  		(fUB(fUB(fUQ(fUA'r   N)rQ   rR   rS   classmethodr\   r_   rg   rU   r   r   rW   rW      s      	(r   rW   c                   2    e Zd Zed        Zed        Zd Zy)
TkTextTestc                 P    t        d       ddlm}m} || _         |       | _        y )Nguir   )TkrY   )r   tkinterrm   rY   root)r[   rm   rY   s      r   r\   zTkTextTest.setUpClass   s    $4r   c                 <    | j                   j                          | ` y r^   )ro   destroy)r[   s    r   tearDownClasszTkTextTest.tearDownClass   s    Hr   c                 D    | j                  | j                        | _        y r^   )rY   ro   r   r   s    r   r_   zTkTextTest.setUp   s    IIdii(	r   N)rQ   rR   rS   rh   r\   rr   r_   rU   r   r   rj   rj      s-       )r   rj   __main__rb   F)	verbosityexit)rT   unittesttest.supportr   _tkinterr   r   TestCaserW   rj   rQ   mainrU   r   r   <module>r|      si     ! v; v;r(8X.. (.)8,, )$ zHMMAE* r   