o
    HXîhh  ã                   @   s\   d dl Z d dlmZ d dlZd dlZG dd„ dƒZG dd„ de jƒZedkr,e  	¡  dS dS )é    N)Úpatchc                   @   s   e Zd ZdZdZdZdS )Ú
CompleteMez6 Trivial class used in testing rlcompleter.Completer. é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚspamZ_ham© r   r   ú?/opt/python-3.10.19/usr/lib/python3.10/test/test_rlcompleter.pyr      s    r   c                   @   sb   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
j dd¡dd„ ƒZdd„ ZdS )ÚTestRlcompleterc                 C   s2   t  ¡ | _t  ttttd¡| _| j dd¡ d S )N)r
   Zeggr   Ú r   )	ÚrlcompleterÚ	CompleterÚstdcompleterÚdictÚintÚstrr   Ú	completerÚcomplete©Úselfr   r   r   ÚsetUp   s   

þzTestRlcompleter.setUpc                 C   sh   G dd„ dt ƒ}G dd„ dtƒ}|  | jj¡ |  | jj¡ |  t |ƒ ¡j¡ |  	t
tj|dƒ¡ d S )Nc                   @   ó   e Zd ZdS )z)TestRlcompleter.test_namespace.<locals>.AN©r   r   r   r   r   r   r   ÚA   ó    r   c                   @   r   )z)TestRlcompleter.test_namespace.<locals>.BNr   r   r   r   r   ÚB   r   r   )r   )r   ÚlistÚ
assertTruer   Zuse_main_nsÚassertFalser   r   r   ZassertRaisesÚ	TypeError)r   r   r   r   r   r   Útest_namespace   s   zTestRlcompleter.test_namespacec                 C   s¦   |   t| j d¡ƒdd„ ttƒD ƒ¡ |   t| j d¡ƒdd„ ttƒD ƒ¡ |   | j d¡g ¡ |   | j d¡dg¡ |   | j d	¡d
g¡ |   | j d¡dg¡ d S )NÚdic                 S   ó   g | ]}|  d ¡r|d ‘qS )r$   ú(©Ú
startswith©Ú.0Úxr   r   r   Ú
<listcomp>$   ó    z7TestRlcompleter.test_global_matches.<locals>.<listcomp>Ústc                 S   r%   )r.   r&   r'   r)   r   r   r   r,   &   r-   ZakaksajadhakZ	CompleteMzCompleteMe()Zegzegg()ÚassertEqualÚsortedr   Zglobal_matchesÚdirÚbuiltinsr   r   r   r   r   Útest_global_matches!   s    ÿÿÿÿÿz#TestRlcompleter.test_global_matchesc                 C   s  |   | j d¡dd„ ttƒD ƒ¡ |   | j d¡g ¡ tdd„ td ƒD ƒƒ}|   | j d¡|¡ |   | j d¡|¡ |   | j d	¡|¡ |   | j d
¡dg¡ |   | j d¡g ¡ |   | j d¡ddg¡ |   | j d¡dg¡ | j d¡}|D ]}|  | d¡|¡ qx|  	d|¡ |  	d|¡ t
jtdtdd% |   | j d¡dg¡ |   | j d¡dd„ ttƒD ƒ¡ W d   ƒ d S 1 sÁw   Y  d S )Nzstr.sc                 S   ó    g | ]}|  d ¡rd |¡‘qS )Úszstr.{}(©r(   Úformatr)   r   r   r   r,   5   ó    ÿz5TestRlcompleter.test_attr_matches.<locals>.<listcomp>ztuple.foospameggc                 S   s$   h | ]}d ||dkrdndf ’qS )z	None.%s%sr	   r&   r   r   r)   r   r   r   Ú	<setcomp>8   s    ÿz4TestRlcompleter.test_attr_matches.<locals>.<setcomp>zNone.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)ZcreatezCompleteMe.me.me.spzCompleteMe.me.me.spamzegg.sc                 S   r4   )r5   zegg.{}(r6   r)   r   r   r   r,   P   r8   )r/   r   Zattr_matchesr1   r   r0   r   r    r(   ZassertInr   Úobjectr   )r   ZexpectedÚmatchesr+   r   r   r   Útest_attr_matches2   sB   ÿÿÿÿÿÿÿ"ýz!TestRlcompleter.test_attr_matchesc                 C   sJ   G dd„ dƒ}|ƒ }t  t|d¡}|  | dd¡d¡ |  |jd¡ dS )	z;Ensure getattr() is invoked no more than once per attributec                       s$   e Zd ZdZdZ‡ fdd„Z‡  ZS )z3TestRlcompleter.test_excessive_getattr.<locals>.Foor   r   c                    s&   |dkr|  j d7  _ d S tƒ  |¡S )NÚbarr   )ÚcallsÚsuperÚ__getattribute__)r   Úname©Ú	__class__r   r   rA   ]   s   zDTestRlcompleter.test_excessive_getattr.<locals>.Foo.__getattribute__)r   r   r   r?   r>   rA   Ú__classcell__r   r   rC   r   ÚFooZ   s    rF   ©Úfúf.br   úf.barr   N)r   r   r   r/   r   r?   ©r   rF   rH   r   r   r   r   Útest_excessive_getattrS   s
   	z&TestRlcompleter.test_excessive_getattrc                 C   sH   G dd„ dƒ}|ƒ }t  t|d¡}|  | dd¡d¡ |  |j¡ d S )Nc                   @   s    e Zd ZdZdZedd„ ƒZdS )z<TestRlcompleter.test_property_method_not_called.<locals>.Foor   Fc                 S   s   d| _ | jS )NT)Úproperty_calledÚ_barr   r   r   r   r>   m   s   z@TestRlcompleter.test_property_method_not_called.<locals>.Foo.barN)r   r   r   rN   rM   Úpropertyr>   r   r   r   r   rF   i   s
    rF   rG   rI   r   rJ   )r   r   r   r/   r   r!   rM   rK   r   r   r   Útest_property_method_not_calledh   s
   	z/TestRlcompleter.test_property_method_not_calledc                 C   s8   G dd„ dƒ}t  t|ƒ d¡}|  | dd¡d¡ d S )Nc                   @   s   e Zd ZdZdS )z0TestRlcompleter.test_uncreated_attr.<locals>.Foo)r>   N)r   r   r   Ú	__slots__r   r   r   r   rF   {   s    rF   rG   zf.r   rJ   )r   r   r   r/   r   )r   rF   r   r   r   r   Útest_uncreated_attrx   s   z#TestRlcompleter.test_uncreated_attrzrlcompleter._readline_availableFc                 C   sÔ   t  ¡ }|  | 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¡d¡ d S )Nr   r   ú	Úazand r   zas Úasr   úassert ZanÚpaÚpassZFaÚFalseÚelzelif ÚelseÚtrútry:)r   r   r/   r   )r   r   r   r   r   Útest_complete€   s   zTestRlcompleter.test_completec                 C   sä   d d dd„ d dd„ dœ}t  |¡}|  | 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 S )Nc                   S   ó   d S ©Nr   r   r   r   r   Ú<lambda>’   ó    z8TestRlcompleter.test_duplicate_globals.<locals>.<lambda>c                   S   r_   r`   r   r   r   r   r   ra   ”   rb   )rY   ÚassertÚtryÚ
memoryviewÚEllipsisrY   r   r   rc   rV   rd   r]   re   rf   z
Ellipsis())r   r   r/   r   ZassertIsNone)r   Ú	namespacer   r   r   r   Útest_duplicate_globalsŽ   s"   û
z&TestRlcompleter.test_duplicate_globalsN)r   r   r   r   r#   r3   r=   rL   rP   rR   ÚunittestZmockr   r^   rh   r   r   r   r   r      s    	!
r   Ú__main__)
ri   Zunittest.mockr   r2   r   r   ZTestCaser   r   Úmainr   r   r   r   Ú<module>   s     ÿ