a
    zez;                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZmZ dd ZG dd dZ	G dd	 d	Z
G d
d dZG dd dZG dd dZG dd dZG dd dZd dlmZ dd ZG dd deZG dd deZG dd de jZdS )    N)support)	ALWAYS_EQNEVER_EQc                 c   s   | D ]
}|V  qd S N seqnir   r   $/usr/lib/python3.9/test/seq_tests.pyiterfunc   s    r   c                   @   s   e Zd Zdd Zdd ZdS )Sequencec                 C   s
   || _ d S r   r   selfr   r   r   r
   __init__   s    zSequence.__init__c                 C   s
   | j | S r   r   r   r	   r   r   r
   __getitem__   s    zSequence.__getitem__N)__name__
__module____qualname__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S )IterFuncc                 C   s   || _ d| _d S Nr   r   r   r   r   r
   r      s    zIterFunc.__init__c                 C   s   | S r   r   r   r   r   r
   __iter__   s    zIterFunc.__iter__c                 C   s2   | j t| jkrt| j| j  }|  j d7  _ |S N   r	   lenr   StopIterationr   vr   r   r
   __next__    s    zIterFunc.__next__Nr   r   r   r   r   r!   r   r   r   r
   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )IterGenc                 C   s   || _ d| _d S r   r   r   r   r   r
   r   (   s    zIterGen.__init__c                 c   s   | j D ]
}|V  qd S r   r   )r   valr   r   r
   r   +   s    
zIterGen.__iter__Nr   r   r   r   r   r   r   r   r
   r#   &   s   r#   c                   @   s   e Zd Zdd Zdd ZdS )IterNextOnlyc                 C   s   || _ d| _d S r   r   r   r   r   r
   r   1   s    zIterNextOnly.__init__c                 C   s2   | j t| jkrt| j| j  }|  j d7  _ |S r   r   r   r   r   r
   r!   4   s    zIterNextOnly.__next__N)r   r   r   r   r!   r   r   r   r
   r&   /   s   r&   c                   @   s   e Zd Zdd Zdd ZdS )
IterNoNextc                 C   s   || _ d| _d S r   r   r   r   r   r
   r   <   s    zIterNoNext.__init__c                 C   s   | S r   r   r   r   r   r
   r   ?   s    zIterNoNext.__iter__Nr%   r   r   r   r
   r'   :   s   r'   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
IterGenExcc                 C   s   || _ d| _d S r   r   r   r   r   r
   r   D   s    zIterGenExc.__init__c                 C   s   | S r   r   r   r   r   r
   r   G   s    zIterGenExc.__iter__c                 C   s   dd  d S )N   r   r   r   r   r   r
   r!   I   s    zIterGenExc.__next__Nr"   r   r   r   r
   r(   B   s   r(   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )IterFuncStopc                 C   s   d S r   r   r   r   r   r
   r   N   s    zIterFuncStop.__init__c                 C   s   | S r   r   r   r   r   r
   r   P   s    zIterFuncStop.__iter__c                 C   s   t d S r   )r   r   r   r   r
   r!   R   s    zIterFuncStop.__next__Nr"   r   r   r   r
   r*   L   s   r*   )chainc                 C   s   t tdd ttt| S )Nc                 S   s   | S r   r   )xr   r   r
   <lambda>X       zitermulti.<locals>.<lambda>)r+   mapr   r#   r   r   r   r   r
   	itermultiV   s    r0   c                   @   s   e Zd Zdd ZdS )
LyingTuplec                 c   s
   dV  d S r   r   r   r   r   r
   r   [   s    zLyingTuple.__iter__Nr   r   r   r   r   r   r   r
   r1   Z   s   r1   c                   @   s   e Zd Zdd ZdS )	LyingListc                 c   s
   dV  d S r   r   r   r   r   r
   r   _   s    zLyingList.__iter__Nr2   r   r   r   r
   r3   ^   s   r3   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) ZdS )*
CommonTestNc                 C   s  g }dg}ddg}|   }|  |}|  |}|  |}|  |}|  |}	|  |}
|  |}|  t|}G dd d}||}|  |}| t|t| d}|  |}| t|t| ddtdd	td
ddfD ]}ttttt	fD ] }| |  |||  | q| |  t
||    | |  dd dD |  d | t| j t| | t| j t| | t| j t| q| |  td|  d | |  tdg|  dg d S )Nr   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z.CommonTest.test_constructors.<locals>.OtherSeqc                 S   s
   || _ d S r   _OtherSeq__data)r   Zinitseqr   r   r
   r   w   s    z7CommonTest.test_constructors.<locals>.OtherSeq.__init__c                 S   s
   t | jS r   )r   r6   r   r   r   r
   __len__y   s    z6CommonTest.test_constructors.<locals>.OtherSeq.__len__c                 S   s
   | j | S r   r5   r   r   r   r
   r   {   s    z:CommonTest.test_constructors.<locals>.OtherSeq.__getitem__N)r   r   r   r   r7   r   r   r   r   r
   OtherSeqv   s   r8   zthis is also a sequenceZ123   )Zdog333333?i  i     c                 s   s   | ]
}|V  qd S r   r   ).0cr   r   r
   	<genexpr>   r.   z/CommonTest.test_constructors.<locals>.<genexpr>)   )r   r?   )	type2testtupleassertEqualr   ranger   r   r#   r0   r   r*   assertRaises	TypeErrorr&   r'   ZeroDivisionErrorr(   r1   r3   )r   Zl0l1l2uZu0u1u2uuZuu0Zuu1Zuu2r    r8   sZv0Zvvgr   r   r
   test_constructorsf   s>    








"zCommonTest.test_constructorsc                 C   s$   |  |   | | dg d S )N*   )ZassertFalser@   Z
assertTruer   r   r   r
   
test_truth   s    zCommonTest.test_truthc                 C   s|  |  g d}tt|D ](}| || | | |t| | qtt| dD ]8}| || t||  | |t| t||  qT| t|jt| d  | t|jt| | t|jt	ddd |   }| t|jd | t|jd | t
|j |  ddg}| |d d | |d d | |d d | |d d | t|jd | t|jd	 d S )
Nr   r   r?   r)      r   r   
      r)   )r@   rC   r   rB   intrD   
IndexErrorr   
ValueErrorslicerE   )r   rI   r	   ar   r   r
   test_getitem   s*    zCommonTest.test_getitemc                 C   s0  g d}|  |}| |dd |    | |dd |  dg | |dd |  dg | |dd	 | | |d	d |  g  | |d d  | | |dd  |  g d
 | |d d |  g d | |d d  | | |d d d |  g d | |dd d |  ddg | |d d d |  g d | |d d d |  g d | |dd d |  ddg | |ddd |  g  | |ddd |  dg | |ddd |  dg | |ddd |  ddg | |d d d |  dg | |dd |  g  | |dd | | |ddd |d d d  | |ddd |  g  | |ddd |  g d |  g d}| |tdd d |  g d | |dtdd |  ddg | |dd tj |  dg d S )NrR   r   r   r?   rW   rT   r)   ir:   )r   r?   r)   rS   r   r   r?   )r   r?   rS   )rS   r)   r?   r   r   )rS   r?   r   irS   d         )r@   rB   powsysmaxsize)r   lrI   r]   r   r   r
   test_getslice   s<    
        &$zCommonTest.test_getslicec                 C   s`   |  g d}|D ]}| || qt|d t|d fD ]}| || q<| t|j d S )Nr_   r   )r@   assertInminmaxassertNotInrD   rE   __contains__)r   rI   r	   r   r   r
   test_contains   s    zCommonTest.test_containsc                 C   sx   |  t| g  | t| dg | d| tg |  t| g  |  t| tg | t| tg d S r   )rk   r   r@   rh   r   r   r   r   r
   test_contains_fake   s    zCommonTest.test_contains_fakec                    sb   G dd dt  G  fddd}| d| g}| d| | | dg}|  |jd d S )Nc                   @   s   e Zd ZdS )z3CommonTest.test_contains_order.<locals>.DoNotTestEqNr   r   r   r   r   r   r
   DoNotTestEq   s   rp   c                       s   e Zd Z fddZdS )z4CommonTest.test_contains_order.<locals>.StopComparesc                    s    d S r   r   r   otherrp   r   r
   __eq__   s    z;CommonTest.test_contains_order.<locals>.StopCompares.__eq__Nr   r   r   rt   r   rs   r   r
   StopCompares   s   rv   r   )	Exceptionr@   rh   rD   rl   )r   rv   Z
checkfirstZ	checklastr   rs   r
   test_contains_order   s    zCommonTest.test_contains_orderc                 C   s`   |  t|  d |  t| g d |  t| dgd |  t| g dd d S )Nr   r   r_   r)   )rB   r   r@   r   r   r   r
   test_len   s    zCommonTest.test_lenc                 C   s2   |  g d}| t|d | t|d d S )Nr_   r   r?   )r@   rB   ri   rj   r   rI   r   r   r
   test_minmax   s    zCommonTest.test_minmaxc                 C   s  |  dg}|  ddg}| |||     | ||   |  | ||  dg | | |  dg| |  ddg | |   |d  | |   d|  | |   |d  | |   d|  | ||d  | |d|  | ||d  | |d|  | || |d  | || d|  | || |d  | || d|  | || | |d  | || | d|  G dd d| j }|ddg}| ||d  | ||d  d S )Nr   r   rT   r?   r)   c                   @   s   e Zd ZdS )z(CommonTest.test_addmul.<locals>.subclassNro   r   r   r   r
   subclass  s   r|   )r@   rB   ZassertIsNot)r   rJ   rK   r|   u3r   r   r
   test_addmul  s0    "zCommonTest.test_addmulc                 C   s   |  ddg}||   7 }| ||  ddg ||  ddg7 }| ||  g d ||  ddg7 }| ||  g d |  d	}||  d
7 }| ||  d d S )Nr   r   r?   r)   r   r   r?   r)   rS   r;   )r   r   r?   r)   rS   r;   ZspamZeggsZspameggsr@   rB   rz   r   r   r
   	test_iadd!  s    
zCommonTest.test_iaddc                 C   sJ   |  ddg}|d9 }| ||  g d |d9 }| ||  g  d S )Nr   r   r)   )r   r   r   r   r   r   r   rz   r   r   r
   	test_imul.  s
    zCommonTest.test_imulc                 C   s.   G dd d| j }| tt|dd d S )Nc                   @   s   e Zd Zdd ZdS )z/CommonTest.test_getitemoverwriteiter.<locals>.Tc                 S   s   t |d S )Nz!!!)str)r   keyr   r   r
   r   8  s    z;CommonTest.test_getitemoverwriteiter.<locals>.T.__getitem__N)r   r   r   r   r   r   r   r
   T7  s   r   )r   r?   r   )r@   rB   nextiter)r   r   r   r   r
   test_getitemoverwriteiter5  s    z$CommonTest.test_getitemoverwriteiterc                 C   s   t dD ]t}tt |}t ddD ]$}| | || | ||  q"| | |d | g  | t|t|d  qd S )NrS   rX   r;   r   )rC   rA   rB   r@   id)r   mrM   nr   r   r
   test_repeat<  s    "zCommonTest.test_repeatc                 C   sL   t jdkrH| dg}|d9 }| t|jd t|drH| t|jd d S )Nir   i   __imul__)rd   re   r@   rD   MemoryError__mul__hasattrr   )r   r,   r   r   r
   test_bigrepeatD  s    

zCommonTest.test_bigrepeatc                 C   sD  |  ddg}| |dd | |dd | |dd | |dd | t|jd | t|jd | |tdd|  dg | |tdd	|  dg | |tdd	|  ddg | |tdd|  ddg | |tdd
|  g  | t|jtddd | t|jd d S )NrU   rV   r   r   rW   rT   rX   r)   r?   r;   r,   )r@   rB   r   rD   rZ   r\   r[   rE   )r   r]   r   r   r
   test_subscriptL  s      ""zCommonTest.test_subscriptc                    s   |  g dd }| |dd | |dd | |dd | |td | |  ttgdd | |  ttgtd | |  ttgtd | t|j G dd dt G  fd	d
d
}|  |j|  d S )Nr_   r)   r   r   	   r?   c                   @   s   e Zd ZdS )z%CommonTest.test_count.<locals>.BadExcNro   r   r   r   r
   BadExci  s   r   c                       s   e Zd Z fddZdS )z%CommonTest.test_count.<locals>.BadCmpc                    s   |dkr  dS Nr?   Fr   rq   r   r   r
   rt   m  s    z,CommonTest.test_count.<locals>.BadCmp.__eq__Nru   r   r   r   r
   BadCmpl  s   r   )r@   rB   countr   r   rD   rE   rw   )r   r]   r   r   r   r
   
test_count\  s    zCommonTest.test_countc                    s  |  ddg}| |dd | |dd | t|jd |  g d}| |dd | |dd | |ddd | |ddd | |ddd | |dddd | t|jddd | |td | |  ttgdd | |  ttgtd | t|  ttgjt | t|j G d	d
 d
t	 G  fddd}|  g d}|  |j|  |  g 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t
j dt
j d | t|jddt
j dt
j  | t|jddd d S )Nr   r   r?   )rW   rT   r   r   r   r?   rW   ir)   rS   c                   @   s   e Zd ZdS )z%CommonTest.test_index.<locals>.BadExcNro   r   r   r   r
   r     s   r   c                       s   e Zd Z fddZdS )z%CommonTest.test_index.<locals>.BadCmpc                    s   |dkr  dS r   r   rq   r   r   r
   rt     s    z,CommonTest.test_index.<locals>.BadCmp.__eq__Nru   r   r   r   r
   r     s   r   r   r   rX   )r@   rB   indexrD   r[   r   r   r   rE   rw   rd   re   )r   rI   r   r]   r   r   r
   
test_indext  sB    " zCommonTest.test_indexc                 C   sX   |  g d}ttjd D ]6}tt||}| || | t|t| qd S )N)rS   r;         r   )	r@   rC   pickleHIGHEST_PROTOCOLloadsdumpsrB   ZassertNotEqualr   )r   ZlstprotoZlst2r   r   r
   test_pickle  s
    zCommonTest.test_picklec                 C   s$   t | t| j t | t| j d S r   )r   Zcheck_free_after_iteratingr   r@   reversedr   r   r   r
   test_free_after_iterating  s    z$CommonTest.test_free_after_iterating)r   r   r   r@   rO   rQ   r^   rg   rm   rn   rx   ry   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r4   b   s*   .%	/r4   )Zunittestrd   r   testr   Ztest.supportr   r   r   r   r   r#   r&   r'   r(   r*   	itertoolsr+   r0   rA   r1   listr3   ZTestCaser4   r   r   r   r
   <module>   s"   	
	