o
    GXîhh  ã                   @   sx   d dl mZ d dlZd dlmZ G dd„ dƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ dejƒZ	e
dkr:e ¡  dS dS )é    )ÚdequeN)ÚNEVER_EQc                   @   ó   e Zd Zdd„ ZdS )Úbase_setc                 C   s
   || _ d S ©N©Úel©Úselfr   © r   ú</opt/python-3.10.19/usr/lib/python3.10/test/test_contains.pyÚ__init__   ó   
zbase_set.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      ó    r   c                   @   r   )Úmysetc                 C   s
   | j |kS r   r   r	   r   r   r   Ú__contains__   r   zmyset.__contains__N©r   r   r   r   r   r   r   r   r   
   r   r   c                   @   r   )Úseqc                 C   s   | j g| S r   r   )r
   Únr   r   r   Ú__getitem__   s   zseq.__getitem__N)r   r   r   r   r   r   r   r   r      r   r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestContainsc                    s´   t dƒ‰ tdƒ}tdƒ}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  t‡ fdd„¡ |  t‡ fdd„¡ |  dd¡ |  dd¡ |  d	d	¡ |  d	d¡ |  td
d„ ¡ d S )Né   r   c                      ó   dˆ v S ©Nr   r   r   ©Úar   r   Ú<lambda>   ó    z0TestContains.test_common_tests.<locals>.<lambda>c                      s   dˆ vS r   r   r   r   r   r   r      r    ÚcÚabcÚdÚ c                   S   s   d dv S )Nr"   r   r   r   r   r   r   %   r    )r   r   r   ÚassertInÚassertNotInÚassertRaisesÚ	TypeError)r
   Úbr!   r   r   r   Útest_common_tests   s   zTestContains.test_common_testsc                 C   sŽ   t dƒ}|D ]}|  ||¡ q|  d|¡ |  ||¡ t|ƒ}|D ]}|  ||¡ q!|  d|¡ |  ||¡ G dd„ dƒ}|  |ƒ |j¡ d S )Né
   é   c                   @   s$   e Zd ZdZeedƒƒZdd„ ZdS )z:TestContains.test_builtin_sequence_types.<locals>.Deviant1z²Behaves strangely when compared

            This class is designed to make sure that the contains code
            works when the list is modified during the check.
            é   c                 S   s0   |dkr| j  d¡ | j  d¡ | j  d¡ dS )Né   é   é   r   )ÚaListÚremove©r
   Úotherr   r   r   Ú__eq__<   s
   zATestContains.test_builtin_sequence_types.<locals>.Deviant1.__eq__N)r   r   r   Ú__doc__ÚlistÚranger1   r5   r   r   r   r   ÚDeviant15   s    r9   )r8   r%   r&   Útupler1   )r
   r   Úir9   r   r   r   Útest_builtin_sequence_types'   s   z(TestContains.test_builtin_sequence_typesc                 C   sp   t dƒdd dtf}tttjtttf}|D ]!}||ƒ}|D ]}|  	||¡ q|  
|||ƒk¡ |  
||k¡ qd S )NÚnanr   r"   )Úfloatr   r7   r:   ÚdictÚfromkeysÚsetÚ	frozensetr   r%   Z
assertTrue)r
   ÚvaluesZconstructorsÚconstructorÚ	containerÚelemr   r   r   Útest_nonreflexiveE   s   ûzTestContains.test_nonreflexivec                    sd   G dd„ dt ƒ}|ƒ }G dd„ d|ƒ}|ƒ ‰ |  d|v ¡ |  dtˆ ƒv ¡ |  t‡ fdd„¡ d S )Nc                   @   r   )z4TestContains.test_block_fallback.<locals>.ByContainsc                 S   s   dS )NFr   r3   r   r   r   r   U   s   zATestContains.test_block_fallback.<locals>.ByContains.__contains__Nr   r   r   r   r   Ú
ByContainsT   r   rH   c                   @   s   e Zd ZdZdd„ ZdZdS )z7TestContains.test_block_fallback.<locals>.BlockContainsaÄ  Is not a container

            This class is a perfectly good iterable (as tested by
            list(bc)), as well as inheriting from a perfectly good
            container, but __contains__ = None prevents the usual
            fallback to iteration in the container protocol. That
            is, normally, 0 in bc would fall back to the equivalent
            of any(x==0 for x in bc), but here it's blocked from
            doing so.
            c                 s   s    d S r   r   )r
   r   r   r   Ú__iter__c   s   €z@TestContains.test_block_fallback.<locals>.BlockContains.__iter__N)r   r   r   r6   rI   r   r   r   r   r   ÚBlockContainsX   s    
rJ   r   c                      r   )Nr   r   r   ©Zbcr   r   r   j   r    z2TestContains.test_block_fallback.<locals>.<lambda>)ÚobjectZassertFalser7   r'   r(   )r
   rH   r!   rJ   r   rK   r   Útest_block_fallbackR   s   z TestContains.test_block_fallbackN)r   r   r   r*   r<   rG   rM   r   r   r   r   r      s
    r   Ú__main__)Úcollectionsr   ZunittestZtest.supportr   r   r   r   ZTestCaser   r   Úmainr   r   r   r   Ú<module>   s    Zÿ