
    z%iU+                         	 d dl Z d dlmZmZ d dlmZ d dlmZmZ d dl	Z	d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ  G d d      Z G d	 d
e j,                        Zedk(  r e j2                  d       yy)    N)Mockpatch)requires)TkText)Func)Eventc                       e Zd Zd Zy)DummyEditwinc                 J    || _         || _        d| _        d| _        d| _        y )N   z>>>)roottextindentwidthtabwidthprompt_last_line)selfr   r   s      W/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_autocomplete.py__init__zDummyEditwin.__init__   s'    		 %    N)__name__
__module____qualname__r    r   r   r   r      s    &r   r   c                       e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Z G d d      Zd Zd Zd Zd Zy)AutoCompleteTestc                     t        d       t               | _        | j                  j                          t	        | j                        | _        t        | j                  | j
                        | _        y )Ngui)r   r   r   withdrawr   r   r   editorclss    r   
setUpClasszAutoCompleteTest.setUpClass   sG    4>!#((CHH5
r   c                 x    | ` | `| j                  j                          | j                  j	                          | `y N)r    r   r   update_idletasksdestroyr!   s    r   tearDownClasszAutoCompleteTest.tearDownClass#   s0    J!!#Hr   c                     | j                   j                  dd       t        j                  | j                        | _        y )N1.0end)r   deleteacAutoCompleter    autocompleter   s    r   setUpzAutoCompleteTest.setUp*   s+    		&OODKK8r   c                     | j                  | j                  j                  | j                         | j                  | j                  j                  | j                         y r%   )assertEqualr/   editwinr    r   r0   s    r   	test_initzAutoCompleteTest.test_init.   sB    **22DKK@**//;r   c                 x    | j                   j                         }| j                  |t        j                         y r%   )r/   _make_autocomplete_windowassertIsInstanceacwAutoCompleteWindow)r   testwins     r   test_make_autocomplete_windowz.AutoCompleteTest.test_make_autocomplete_window2   s,    ##==?gs'='=>r   c                     | j                   }t               x|_        }|j                          |j                  j                          | j                  |j                         y r%   )r/   r   autocompletewindow_remove_autocomplete_windowhide_windowassert_called_onceassertIsNone)r   acpms      r   test_remove_autocomplete_windowz0AutoCompleteTest.test_remove_autocomplete_window6   sL    %)V+'')	((*#001r   c                     | j                   }t               }||_        | j                  |j	                  d      d       | j                  |j
                  d   t        j                         y )Neventbreakr   )r/   r   open_completionsr3   force_open_completions_eventargsr-   FORCE)r   rC   open_cs      r   !test_force_open_completions_eventz2AutoCompleteTest.test_force_open_completions_event=   sS    %99'BGLQ2r   c                 R   | j                   }| j                  }t        d      }| j                  |j	                  |             |`| j                  j                  dd       | j                  |j	                  |             | j                  j                  dd       | j                  j                  dd       t               x|_
        }t        d      |_         ||j	                  |      d       |j                  j                          d |_
        t        d	
      }||_         ||j	                  |      d         ||j                   d   t"        j$                         d|_         ||j	                  |      d        ||j                   d   t"        j$                         y )NT)mc_stater*   z        """Docstring.
    r+   zre.)return_valuerH   Fresultr   )r3   r/   r	   rB   autocomplete_eventrP   r   insertr,   r   r>   	is_activecompleterA   r   rI   rK   r-   TABrS   )r   EqualrC   evmockrM   s         r   test_autocomplete_eventz(AutoCompleteTest.test_autocomplete_eventE   sU      D!#0045K 			 =>#0045		& 			&(,.40c$$R('2((*!% U#%c$$R($/fkk!nbff%c$$R('2fkk!nbff%r   c                    | j                   }| j                  }| j                  }|j                  }t	        d      }||j                  _         |         ||j                  d       |j                  dd        |         ||j                  d       |j                  dd       d |_         |         ||j                  |j                  d              ||j                  |j                  |j                  t        j                  f       |j                  } ||d       |j                  dd       d	|_        t	               }||j                  _         |         ||j                  |j                  d              ||j                  |f        ||j                  |j                  |j                  t        j$                  f        ||j                  d	       y )
Nafter1rR   r   r*   rerU   z re.z "./Lib/after2)r3   r   r/   try_open_completions_eventr   aftercalledrU   _delayed_completion_id_delayed_completion_indexindexrK   	popupwait_delayed_open_completionsr-   TRY_ArS   after_cancelTRY_F)r   rY   r   rC   trycompletionsrb   cb1cancels           r   test_try_open_completions_eventz0AutoCompleteTest.test_try_open_completions_eventd   s|     yy77H% 	ellAE4 ellA 	Hf%%)"c++TZZ-ABejj}}c;;RXXF	H((c8 	Hj) &c++TZZ-ABfkkC6"ejj}}c;;RXXF	Hc(((3r   c                 B   | j                   }| j                  }t               }||_        | j                  j                  dd       d|_        | j                  j                  d      |_        |j                  d       | j                  |j                          ||j                  d       | j                  j                  d      |_        |j                  dd	d
t        j                  f       | j                  |j                  d   dd	d
t        j                  f       y )Nr*   z"dict.rb   z	insert+1cdummyr   rU            )r3   r/   r   rI   r   rU   rd   rf   re   rh   rB   rc   r-   FILESrK   )r   rY   rC   rM   s       r   test_delayed_open_completionsz.AutoCompleteTest.test_delayed_open_completions   s      %		) &-"(,		(D%%%g.#445fmmQ )-		(A%%%q!Q&9:Q!Q288)<=r   c                 "   | j                   }| j                  }d|_        t        d      }||j                  _        | j                  j                  dd        ||j                  t        j                                ||j                         y )Nrb   rR         ?z	# comment)
rB   r/   rd   r   r   rj   rU   rI   r-   rX   )r   nonerC   rb   s       r   test_oc_cancel_commentz'AutoCompleteTest.test_oc_cancel_comment   sq       &-"G$ %		k*S!!"&&)*S''(r   c                    | j                   }t        g g f      }||_        | j                  j	                  dd       | j                  |j                  t        j                               | j                  j	                  dd       | j                  |j                  t        j                               | j                  |j                  d       y )NrR   r*   objectrU   .rs   )r/   r   fetch_completionsr   rU   rB   rI   r-   rX   r3   rc   )r   rC   fetchs      r   test_oc_no_listz AutoCompleteTest.test_oc_no_list   s    RG$ %		)#..rvv67		3'#..rvv67q)r   c                    | j                   }| j                  }| j                  j                  dd        ||j	                  t
        j                               | j                  j                  dd        ||j	                  t
        j                               | j                  j                  dd       | j                  |j	                  t
        j                               | j                  j                  dd       | j                  |j	                  t
        j                               | j                  j                  dd       y )Nrx   r}   rU   z int().r+   r*   ")	rB   r/   r   rU   rI   r-   rX   r,   assertFalse)r   ry   rC   s      r   test_open_completions_nonez+AutoCompleteTest.test_open_completions_none   s       			c"S!!"&&)*		9-S!!"&&)* 			e$--bff56		$--bff56		&r   c                   :    e Zd Z e       Z ed      Z e       Zy)AutoCompleteTest.dummy_acwFrR   N)r   r   r   r   r   show_windowr@   r   r   r   	dummy_acwr      s    6%(fr   r   c                 ,     j                   }t        dgddgf      }||_         fd}||_         j                  j                  dd       |j                  t        j                          j                  |j                   j                          j                  j                  dd        j                  j                  dd        j                  |j                  t        j                                j                  j                  dd       y )	Ntem_temrR   c                  $     j                         S r%   )r   r0   s   r   make_acwz8AutoCompleteTest.test_open_completions.<locals>.make_acw   s    t~~//r   r*   zint.r+   z"t)r/   r   r~   r7   r   rU   rI   r-   rX   r8   r>   r   r,   
assertTrue)r   rC   r   r   s   `   r   test_open_completionsz&AutoCompleteTest.test_open_completions   s    eWeV_56 %/(0%		'RVV$c44dnnE		& 			%,,RVV45		&r   c                     | j                  dt        j                         | j                  dt        j                         | j                  dt        j                         y )NandcaseNone)assertInr-   completion_kwdsassertNotInr0   s    r   test_completion_kwdsz%AutoCompleteTest.test_completion_kwds   s@    eR//0fb001!3!34r   c           
      
   | j                   }|j                  dt        j                        \  }}t	        t
        d      r3t
        j                  t        j                  k7  r| j                  d|       |j                  dt        j                        \  }}| j                  t        |      t        |             | j                  t        t        d |                   | j                  t        t        d |                   t        j                  dddd	gi      5  |j                  dt        j                        \  }}| j!                  |dd	g       | j#                  d
|       | j#                  d|       | j#                  d|       |j%                  d      }| j'                  ||dz      d       d d d        t)               }t)               |_        t        j                  dd|i      5  |j                  dt        j                        \  }}| j                  d|       | j#                  d|       | j!                  |t-        t/        |            D cg c]  }|d d dk7  s| c}       | j!                  |t-        t/        |                   d d d        d }	t        j0                  t2        d|	      5  |j                  dt        j4                        \  }}| j!                  |ddg       | j!                  |g d       |j                  dt        j4                        \  }}| j!                  |ddg       | j!                  |g d       d d d        y # 1 sw Y   xY wc c}w # 1 sw Y   xY w# 1 sw Y   y xY w)N __file__r.   c                 $    | j                  d      S N_
startswithxs    r   <lambda>z9AutoCompleteTest.test_fetch_completions.<locals>.<lambda>       Q\\#-> r   c                 $    | j                  d      S r   r   r   s    r   r   z9AutoCompleteTest.test_fetch_completions.<locals>.<lambda>   r   r   __main__.__dict____all__abr   sumnonlocalFalserr   foo_privater   c                     | dk(  rg dS g dS )Nr}   )r   bar.hidden)montypythonr   r   )paths    r   _listdirz9AutoCompleteTest.test_fetch_completions.<locals>._listdir	  s    s{0011r   listdirr   )r   r   r   ~r   r   )r   r   r   )r/   r~   r-   ATTRShasattr__main__r   r   
assertLesslenr   allfilteranyr   dictr3   r   rf   assertNotEqualr   r   sorteddirr|   osru   )
r   rC   smalllargesr   posr[   ir   s
             r   test_fetch_completionsz'AutoCompleteTest.test_fetch_completions   s    ,,BHHu8Z(X->->"++-M^U3 $$R21E
CJ/F#>BCDF#>BCD ZZ+i#s-DE 	3((RXX6DAqQc
+MM*a(MM%#MM*a('''"C#a%'2	3 vZZ+eT]; 	3((9DAqZ+MM*a(QF3t9,= Nq2A# NOQs4y 12	3	2 \\"i2 	@((RXX6DAqQ/Q 9:((bhh7DAqQ( 34Q >?	@ 	@5	3 	3  !O		3 	3	@ 	@s?   BM.A*M-M(&M(*+M-;BM9M%(M--M69Nc                 j   | j                   }| j                  } ||j                  d      t               t	               }t        j                  dd|i      5   ||j                  d      |       d d d        ddd}t        j                  dd|i      5   ||j                  d      |       d d d        t        j                  di       5  | j                  t              5  |j                  d	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)
Nintzsys.modulestempfile
      )r   r   r   d	not_exist)	r/   r3   
get_entityr   r   r   r   assertRaises	NameError)r   rC   rY   r[   dis        r   test_get_entityz AutoCompleteTest.test_get_entity  s      cnnU#S) vZZ
D'9: 	4#..,d3	4 #ZZ+c2Y7 	+#..%r*	+ ZZ+R0 	,""9- ,{+,	, 	,	4 	4
	+ 	+
, ,	, 	,s<   DDD)"D4D)DDD&	"D))D2N)r   r   r   classmethodr#   r(   r1   r5   r<   rE   rN   r\   ro   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r      s    6 6  9<?23&>#4J>(
)*'$ 
'$5
4@l,r   r   r   rs   )	verbosity)unittestunittest.mockr   r   test.supportr   tkinterr   r   r   r   idlelib.autocompleter/   r-   idlelib.autocomplete_wautocomplete_wr9   idlelib.idle_test.mock_idler   idlelib.idle_test.mock_tkr	   r   TestCaser   r   mainr   r   r   <module>r      sb    "  % !  	  ! $ , +& &T,x(( T,n zHMMA r   