a
    äzeh  ã                   @   st   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rpe ¡  dS )é    )ÚdequeN)ÚNEVER_EQc                   @   s   e Zd Zdd„ ZdS )Úbase_setc                 C   s
   || _ d S ©N©Úel©Úselfr   © r
   ú(/usr/lib/python3.9/test/test_contains.pyÚ__init__   s    zbase_set.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r
   r
   r
   r   r      s   r   c                   @   s   e Zd Zdd„ ZdS )Úmysetc                 C   s
   | j |kS r   r   r   r
   r
   r   Ú__contains__   s    zmyset.__contains__N©r   r   r   r   r
   r
   r
   r   r   
   s   r   c                   @   s   e Zd Zdd„ ZdS )Ú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      s   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                      s   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 ]}|  ||¡ qB|  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Úranger-   r1   r
   r
   r
   r   ÚDeviant15   s   r5   )r4   r!   r"   Útupler-   )r	   r   Úir5   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 ]B}||ƒ}|D ]}|  	||¡ q8|  
|||ƒk¡ |  
||k¡ q(d S )NÚnanr   r   )Úfloatr   r3   r6   Ú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                   @   s   e Zd Zdd„ ZdS )z4TestContains.test_block_fallback.<locals>.ByContainsc                 S   s   dS )NFr
   r/   r
   r
   r   r   U   s    zATestContains.test_block_fallback.<locals>.ByContains.__contains__Nr   r
   r
   r
   r   Ú
ByContainsT   s   rD   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   r2   rE   r   r
   r
   r
   r   ÚBlockContainsX   s   
rF   r   c                      s   dˆ v S )Nr   r
   r
   ©Zbcr
   r   r   j   r   z2TestContains.test_block_fallback.<locals>.<lambda>)ÚobjectZassertFalser3   r#   r$   )r	   rD   r   rF   r
   rG   r   Útest_block_fallbackR   s    z TestContains.test_block_fallbackN)r   r   r   r&   r8   rC   rI   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