o
    GXîhz;  ã                   @   sì   d Z 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 )z3
Tests common to tuple, list and UserList.UserList
é    N)Úsupport)Ú	ALWAYS_EQÚNEVER_EQc                 c   s    | D ]}|V  qdS )zRegular generatorN© ©ÚseqnÚir   r   ú8/opt/python-3.10.19/usr/lib/python3.10/test/seq_tests.pyÚiterfunc   s   €ÿr
   c                   @   ó    e Zd ZdZdd„ Zdd„ ZdS )ÚSequencezSequence using __getitem__c                 C   ó
   || _ d S ©N©r   ©Úselfr   r   r   r	   Ú__init__   ó   
zSequence.__init__c                 C   ó
   | j | S r   r   ©r   r   r   r   r	   Ú__getitem__   r   zSequence.__getitem__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r	   r      s    r   c                   @   ó(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚIterFuncz Sequence using iterator protocolc                 C   ó   || _ d| _d S ©Nr   r   r   r   r   r	   r      ó   
zIterFunc.__init__c                 C   ó   | S r   r   ©r   r   r   r	   Ú__iter__   ó   zIterFunc.__iter__c                 C   ó2   | j t| jƒkr
t‚| j| j  }|  j d7  _ |S ©Né   ©r   Úlenr   ÚStopIteration©r   Úvr   r   r	   Ú__next__    ó   zIterFunc.__next__N©r   r   r   r   r   r"   r,   r   r   r   r	   r      ó
    r   c                   @   r   )ÚIterGenz9Sequence using iterator protocol defined with a generatorc                 C   r   r   r   r   r   r   r	   r   (   r   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	   r0   &   ó    r0   c                   @   r   )ÚIterNextOnlyz Missing __getitem__ and __iter__c                 C   r   r   r   r   r   r   r	   r   1   r   zIterNextOnly.__init__c                 C   r$   r%   r'   r*   r   r   r	   r,   4   r-   zIterNextOnly.__next__N)r   r   r   r   r   r,   r   r   r   r	   r4   /   r3   r4   c                   @   r   )Ú
IterNoNextzIterator missing __next__()c                 C   r   r   r   r   r   r   r	   r   <   r   zIterNoNext.__init__c                 C   r    r   r   r!   r   r   r	   r"   ?   r#   zIterNoNext.__iter__Nr2   r   r   r   r	   r5   :   r3   r5   c                   @   r   )	Ú
IterGenExczTest propagation of exceptionsc                 C   r   r   r   r   r   r   r	   r   D   r   zIterGenExc.__init__c                 C   r    r   r   r!   r   r   r	   r"   G   r#   zIterGenExc.__iter__c                 C   s   dd  d S )Né   r   r   r!   r   r   r	   r,   I   ó   zIterGenExc.__next__Nr.   r   r   r   r	   r6   B   r/   r6   c                   @   r   )	ÚIterFuncStopzTest immediate stopc                 C   s   d S r   r   r   r   r   r	   r   N   r#   zIterFuncStop.__init__c                 C   r    r   r   r!   r   r   r	   r"   P   r#   zIterFuncStop.__iter__c                 C   s   t ‚r   )r)   r!   r   r   r	   r,   R   r#   zIterFuncStop.__next__Nr.   r   r   r   r	   r9   L   s
    r9   )Úchainc                 C   s   t tdd„ ttt| ƒƒƒƒƒS )z Test multiple tiers of iteratorsc                 S   r    r   r   )Úxr   r   r	   Ú<lambda>X   s    zitermulti.<locals>.<lambda>)r:   Úmapr
   r0   r   r   r   r   r	   Ú	itermultiV   s   r>   c                   @   ó   e Zd Zdd„ ZdS )Ú
LyingTuplec                 c   ó    dV  d S r%   r   r!   r   r   r	   r"   [   ó   €
zLyingTuple.__iter__N©r   r   r   r"   r   r   r   r	   r@   Z   ó    r@   c                   @   r?   )Ú	LyingListc                 c   rA   r%   r   r!   r   r   r	   r"   _   rB   zLyingList.__iter__NrC   r   r   r   r	   rE   ^   rD   rE   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 ]V}ttttt	fD ]}|  |   ||ƒ¡|   |¡¡ qx|  |   t
|ƒ¡|   ¡ ¡ |  |   dd„ dD ƒ¡|   d¡¡ |  t| j t|ƒ¡ |  t| j t|ƒ¡ |  t| j t|ƒ¡ qo|  |   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   r   r   ©Ú_OtherSeq__data)r   Zinitseqr   r   r	   r   w   r   z7CommonTest.test_constructors.<locals>.OtherSeq.__init__c                 S   s
   t | jƒS r   )r(   rH   r!   r   r   r	   Ú__len__y   r   z6CommonTest.test_constructors.<locals>.OtherSeq.__len__c                 S   r   r   rG   r   r   r   r	   r   {   r   z:CommonTest.test_constructors.<locals>.OtherSeq.__getitem__N)r   r   r   r   rI   r   r   r   r   r	   ÚOtherSeqv   s    rJ   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>‹   s   € z/CommonTest.test_constructors.<locals>.<genexpr>)é   )r&   rQ   )Ú	type2testÚtupleÚassertEqualr(   Úranger   r   r0   r>   r
   r9   ÚassertRaisesÚ	TypeErrorr4   r5   ÚZeroDivisionErrorr6   r@   rE   )r   Zl0Úl1Úl2ÚuZu0Úu1Úu2ÚuuZuu0Zuu1Zuu2r+   rJ   ÚsZv0ZvvÚgr   r   r	   Útest_constructorsf   s>   








ÿ"$zCommonTest.test_constructorsc                 C   s$   |   |  ¡ ¡ |  |  dg¡¡ d S )Né*   )ZassertFalserR   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 ]}|  || t|ƒ| ¡ |  |t|ƒ t|ƒ| ¡ q*|  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&   rQ   r7   é   éÿÿÿÿr&   r   é
   é   éþÿÿÿéýÿÿÿr7   )rR   rU   r(   rT   ÚintrV   Ú
IndexErrorr   Ú
ValueErrorÚslicerW   )r   r[   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 )Nrd   r   r&   rQ   ri   rf   r7   iüÿÿrL   )r&   rQ   r7   re   ©r   r&   rQ   )r   rQ   re   )re   r7   rQ   r&   r   )re   rQ   r   iœÿÿÿre   éd   é€   é‘   )rR   rT   ÚpowÚsysÚmaxsize)r   Úlr[   ro   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 )Nrq   r&   )rR   ÚassertInÚminÚmaxÚassertNotInrV   rW   Ú__contains__)r   r[   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%   )r}   r   rR   rz   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                   @   ó   e Zd ZdS )z3CommonTest.test_contains_order.<locals>.DoNotTestEqN©r   r   r   r   r   r   r	   ÚDoNotTestEqï   ó    rƒ   c                       ó   e Zd Z‡ fdd„ZdS )z4CommonTest.test_contains_order.<locals>.StopComparesc                    s   ˆ ‚r   r   ©r   Úother©rƒ   r   r	   Ú__eq__ò   r#   z;CommonTest.test_contains_order.<locals>.StopCompares.__eq__N©r   r   r   r‰   r   rˆ   r   r	   ÚStopComparesñ   ó    r‹   r&   )Ú	ExceptionrR   rz   rV   r~   )r   r‹   Z
checkfirstZ	checklastr   rˆ   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&   rq   r7   )rT   r(   rR   r!   r   r   r	   Útest_lenú   s   zCommonTest.test_lenc                 C   s2   |   g d¢¡}|  t|ƒd¡ |  t|ƒd¡ d S )Nrq   r   rQ   )rR   rT   r{   r|   ©r   r[   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&   rf   rQ   r7   c                   @   r   )z(CommonTest.test_addmul.<locals>.subclassNr‚   r   r   r   r	   Úsubclass  r„   r’   )rR   rT   ZassertIsNot)r   r\   r]   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&   rQ   r7   ©r   r&   rQ   r7   re   rM   )r   r&   rQ   r7   re   rM   ZspamZeggsZspameggs©rR   rT   r   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&   r7   )r   r&   r   r&   r   r&   r–   r   r   r   r	   Ú	test_imul.  s
   zCommonTest.test_imulc                 C   s.   G dd„ d| j ƒ}|  tt|dƒƒƒd¡ d S )Nc                   @   r?   )z/CommonTest.test_getitemoverwriteiter.<locals>.Tc                 S   s   t |ƒd S )Nz!!!)Ústr)r   Úkeyr   r   r	   r   8  r8   z;CommonTest.test_getitemoverwriteiter.<locals>.T.__getitem__N)r   r   r   r   r   r   r   r	   ÚT7  rD   r›   )r&   rQ   r&   )rR   rT   ÚnextÚiter)r   r›   r   r   r	   Útest_getitemoverwriteiter5  s   z$CommonTest.test_getitemoverwriteiterc                 C   s‚   t dƒD ]:}tt |ƒƒ}t ddƒD ]}|  |  || ¡|  |¡| ¡ q|  |  |¡d |  g ¡¡ |  t|ƒt|d ƒ¡ qd S )Nre   rj   rM   éüÿÿÿr&   )rU   rS   rT   rR   Úid)r   Úmr_   Únr   r   r	   Útest_repeat<  s   "ûzCommonTest.test_repeatc                 C   sT   t jdkr&|  dg¡}|d9 }|  t|jd¡ t|dƒr(|  t|jd¡ d S d S d S )Niÿÿÿr   i   Ú__imul__)rv   rw   rR   rV   Ú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 )Nrg   rh   r   r&   ri   rf   rj   r7   rQ   rM   r;   )rR   rT   r   rV   rl   rn   rm   rW   )r   ro   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 )Nrq   r7   r   r&   é	   rQ   c                   @   r   )z%CommonTest.test_count.<locals>.BadExcNr‚   r   r   r   r	   ÚBadExci  r„   r«   c                       r…   )z%CommonTest.test_count.<locals>.BadCmpc                    ó   |dkrˆ ƒ ‚dS ©NrQ   Fr   r†   ©r«   r   r	   r‰   m  ó   z,CommonTest.test_count.<locals>.BadCmp.__eq__NrŠ   r   r®   r   r	   ÚBadCmpl  rŒ   r°   )rR   rT   Úcountr   r   rV   rW   r   )r   ro   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&   rQ   )ri   rf   r   r   r&   rQ   ri   iöÿÿÿr7   re   c                   @   r   )z%CommonTest.test_index.<locals>.BadExcNr‚   r   r   r   r	   r«   Š  r„   r«   c                       r…   )z%CommonTest.test_index.<locals>.BadCmpc                    r¬   r­   r   r†   r®   r   r	   r‰   Ž  r¯   z,CommonTest.test_index.<locals>.BadCmp.__eq__NrŠ   r   r®   r   r	   r°     rŒ   r°   r•   rŸ   rj   )rR   rT   ÚindexrV   rm   r±   r   r   rW   r   rv   rw   )r   r[   r°   ro   r   r®   r	   Ú
test_indext  sB   " zCommonTest.test_indexc                 C   sX   |   g d¢¡}ttjd ƒD ]}t t ||¡¡}|  ||¡ |  t|ƒt|ƒ¡ qd S )N)re   rM   é   é   r&   )	rR   rU   ÚpickleÚHIGHEST_PROTOCOLÚloadsÚdumpsrT   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   rR   Úreversedr!   r   r   r	   Útest_free_after_iteratingª  s   z$CommonTest.test_free_after_iterating)r   r   r   rR   ra   rc   rp   ry   r   r€   rŽ   r   r‘   r”   r—   r˜   rž   r£   r¨   r©   r²   r´   r¼   r¾   r   r   r   r	   rF   b   s,    .%	/rF   )r   Zunittestrv   r·   Útestr   Ztest.supportr   r   r
   r   r   r0   r4   r5   r6   r9   Ú	itertoolsr:   r>   rS   r@   ÚlistrE   ZTestCaserF   r   r   r   r	   Ú<module>   s&    	
	