
    z%i&                         d dl Z d dlmZ d dlZd dlZ G d d      Z G d de j                        Zedk(  r e j                          yy)    N)patchc                       e Zd ZdZdZdZy)
CompleteMez6 Trivial class used in testing rlcompleter.Completer.       N)__name__
__module____qualname____doc__spam_ham     I/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_rlcompleter.pyr   r      s    @DDr   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  dd	      d
        Zd Zy)TestRlcompleterc                     t        j                         | _        t        j                  t        t        t
        t                    | _        | j                  j                  dd       y )N)r   eggr    r   )	rlcompleter	Completerstdcompleterdictintstrr   	completercompleteselfs    r   setUpzTestRlcompleter.setUp   sN    '113$..t8;?I0K L
 	""2q)r   c                     G d dt               } G d dt              }| j                  | j                  j                         | j                  | j                  j                         | j                  t        j                   |             j                         | j                  t        t        j                   |d             y )Nc                       e Zd Zy))TestRlcompleter.test_namespace.<locals>.ANr   r	   r
   r   r   r   Ar#          r   r%   c                       e Zd Zy))TestRlcompleter.test_namespace.<locals>.BNr$   r   r   r   Br(      r&   r   r)   )r   )r   list
assertTruer   use_main_nsassertFalser   r   r   assertRaises	TypeError)r   r%   r)   s      r   test_namespacezTestRlcompleter.test_namespace   s    	 		 	 	))556334..qs3??@)[%:%:AdGDr   c           	         | j                  t        | j                  j                  d            t	        t
              D cg c]  }|j                  d      s|dz    c}       | j                  t        | j                  j                  d            t	        t
              D cg c]  }|j                  d      s|dz    c}       | j                  | j                  j                  d      g        | j                  | j                  j                  d      dg       | j                  | j                  j                  d      dg       | j                  | j                  j                  d      dg       y c c}w c c}w )	Ndi(stakaksajadhak	CompleteMzCompleteMe()egzegg()assertEqualsortedr   global_matchesdirbuiltins
startswithr   )r   xs     r   test_global_matchesz#TestRlcompleter.test_global_matches!   s.    1 1 @ @ FG),XMA!,,t:L!C%M	O 1 1 @ @ FG),XMA!,,t:L!C%M	O**99.I2N 	66{C()	+66t< 	# 	66{C()	+ NMs    E9
E9
$E>
;E>
c           
      `   | j                  | j                  j                  d      t        t              D cg c]$  }|j                  d      rdj                  |      & c}       | j                  | j                  j                  d      g        t        t        d       D ch c]  }d||dk7  rdnd c}      }| j                  | j                  j                  d      |       | j                  | j                  j                  d	      |       | j                  | j                  j                  d
      |       | j                  | j                  j                  d      dg       | j                  | j                  j                  d      g        | j                  | j                  j                  d      ddg       | j                  | j                  j                  d      dg       | j                  j                  d      }|D ]#  }| j                  |j                  d      |       % | j                  d|       | j                  d|       t        j                  t        dt        d      5  | j                  | j                  j                  d      dg       | j                  | j                  j                  d      t        t              D cg c]$  }|j                  d      rdj                  |      & c}       d d d        y c c}w c c}w c c}w # 1 sw Y   y xY w)Nzstr.sszstr.{}(ztuple.foospameggzNone.r   r3   r   zNone._zNone.__zCompleteMe.spzCompleteMe.spamzCompleteme.eggzCompleteMe.zCompleteMe.mro()zCompleteMe._zCompleteMe._hamzCompleteMe.__zCompleteMe.__name__zCompleteMe.__new__(meT)createzCompleteMe.me.me.spzCompleteMe.me.me.spamzegg.szegg.{}()r8   r   attr_matchesr;   r   r=   formatr9   r   r+   assertInr   objectr   )r   r>   expectedmatchess       r   test_attr_matchesz!TestRlcompleter.test_attr_matches2   s   **77@7:3x 0!\\#. $**1- 0	1 	**778JKRP$'I/  +,ANS-JK / 0**77@(K**77A8L**77	BHM 	44_E+,	.445EFK44]C,.?@	B44^D+,	...--o> 	>AOOALL91=	>+W5+W5\\*dJtD 	5T^^889NO568T^^88A;>s8 4a!"c!2 (..q1 45	5 	5/0/04		5 	5s*   )L
$L9A#L$)LL$L$$L-c                      G d d      } |       }t        j                  t        |            }| j                  |j	                  dd      d       | j                  |j
                  d       y)	z;Ensure getattr() is invoked no more than once per attributec                   &     e Zd ZdZdZ fdZ xZS )3TestRlcompleter.test_excessive_getattr.<locals>.Foor   r   c                 X    |dk(  r| xj                   dz  c_         y t        | 	  |      S )Nbarr   )callssuper__getattribute__)r   name	__class__s     r   rR   zDTestRlcompleter.test_excessive_getattr.<locals>.Foo.__getattribute__]   s*    5=JJ!OJw/55r   )r   r	   r
   rP   rO   rR   __classcell__)rT   s   @r   FoorM   Z   s    EC6 6r   rV   ff.br   f.barr   N)r   r   r   r8   r   rP   r   rV   rX   r   s       r   test_excessive_getattrz&TestRlcompleter.test_excessive_getattrS   sZ    	6 	6 E))$)4	++E15w?!$r   c                      G d d      } |       }t        j                  t        |            }| j                  |j	                  dd      d       | j                  |j                         y )Nc                   $    e Zd ZdZdZed        Zy)<TestRlcompleter.test_property_method_not_called.<locals>.Foor   Fc                 (    d| _         | j                  S )NT)property_called_barr   s    r   rO   z@TestRlcompleter.test_property_method_not_called.<locals>.Foo.barm   s    '+$yy r   N)r   r	   r
   rb   ra   propertyrO   r   r   r   rV   r_   i   s    D#O! !r   rV   rW   rY   r   rZ   )r   r   r   r8   r   r-   ra   r[   s       r   test_property_method_not_calledz/TestRlcompleter.test_property_method_not_calledh   sZ    	! 	! E))$)4	++E15w?**+r   c                      G d d      }t        j                  t         |                   }| j                  |j	                  dd      d       y )Nc                       e Zd ZdZy)0TestRlcompleter.test_uncreated_attr.<locals>.Foo)rO   N)r   r	   r
   	__slots__r   r   r   rV   rg   {   s     Ir   rV   rW   zf.r   rZ   )r   r   r   r8   r   )r   rV   r   s      r   test_uncreated_attrz#TestRlcompleter.test_uncreated_attrx   s?    	! 	!))$-8	++D!4g>r   zrlcompleter._readline_availableFc                    t        j                         }| j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd	      d
       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       y )Nr   r   	azand r   zas asr   assert anpapassFaFalseelzelif elsetrtry:_matchzmatch casezcase )r   r   r8   r   )r   r   s     r   test_completezTestRlcompleter.test_complete   s   ))+	++B2D9++C3V<++C3U;++D!4i@++D!4f=++D!4f=++D!4g>++D!4g>++D!4f=++D!4f=++C3S9++GQ7B++FA6@r   c                    d d d d d d}t        j                  |      }| j                  |j                  dd      d       | j	                  |j                  dd             | j                  |j                  dd      d       | j	                  |j                  dd             | j                  |j                  d	d      d
       | j	                  |j                  d	d             | j                  |j                  dd      d       | j	                  |j                  dd             | j                  |j                  dd      d       | j	                  |j                  dd             y )Nc                       y Nr   r   r   r   <lambda>z8TestRlcompleter.test_duplicate_globals.<locals>.<lambda>       r   c                       y r~   r   r   r   r   r   z8TestRlcompleter.test_duplicate_globals.<locals>.<lambda>   r   r   )rs   asserttry
memoryviewEllipsisrs   r   r   r   rn   r   rw   r   r   z
Ellipsis())r   r   r8   r   assertIsNone)r   	namespacer   s      r   test_duplicate_globalsz&TestRlcompleter.test_duplicate_globals   sB   $
	  )))4	++GQ7A),,Wa89++Ha8)D),,Xq9:++E15v>),,UA67++L!<lK),,\1=>++J:LI),,Z;<r   N)r   r	   r
   r    r0   r?   rJ   r\   rd   ri   unittestmockr   r{   r   r   r   r   r   r      sU    *	E+"5B%*, ? ]]:EBA CA =r   r   __main__)
r   unittest.mockr   r<   r   r   TestCaser   r   mainr   r   r   <module>r      sJ        Y=h'' Y=v zHMMO r   