B
    2*\:                 @   s   d dl Z d dlZd dlZd dl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)supportc             c   s   x| D ]
}|V  qW d S )N )seqnir   r   9C:\ALexclude\prg\programme\Python37\Lib\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 )N)r   )selfr   r   r   r   __init__   s    zSequence.__init__c             C   s
   | j | S )N)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   r   r
      s    zIterFunc.__init__c             C   s   | S )Nr   )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 )Nr   )r   r   )r	   r   r   r   r   r
   '   s    zIterGen.__init__c             c   s   x| j D ]
}|V  qW d S )N)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 )Nr   )r   r   )r	   r   r   r   r   r
   0   s    zIterNextOnly.__init__c             C   s2   | j t| jkrt| j| j  }|  j d7  _ |S )Nr   )r   r   r   r   )r	   r   r   r   r   r   3   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 )Nr   )r   r   )r	   r   r   r   r   r
   ;   s    zIterNoNext.__init__c             C   s   | S )Nr   )r	   r   r   r   r   >   s    zIterNoNext.__iter__N)r   r   r   r
   r   r   r   r   r   r   9   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 )Nr   )r   r   )r	   r   r   r   r   r
   C   s    zIterGenExc.__init__c             C   s   | S )Nr   )r	   r   r   r   r   F   s    zIterGenExc.__iter__c             C   s   dd  d S )N   r   r   )r	   r   r   r   r   H   s    zIterGenExc.__next__N)r   r   r   r
   r   r   r   r   r   r   r   A   s   r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )IterFuncStopc             C   s   d S )Nr   )r	   r   r   r   r   r
   M   s    zIterFuncStop.__init__c             C   s   | S )Nr   )r	   r   r   r   r   O   s    zIterFuncStop.__iter__c             C   s   t d S )N)r   )r	   r   r   r   r   Q   s    zIterFuncStop.__next__N)r   r   r   r
   r   r   r   r   r   r   r   K   s   r   )chainc             C   s   t tdd ttt| S )Nc             S   s   | S )Nr   )xr   r   r   <lambda>W       zitermulti.<locals>.<lambda>)r   mapr   r   r   )r   r   r   r   	itermultiU   s    r"   c               @   s   e Zd Zdd ZdS )
LyingTuplec             c   s
   dV  d S )Nr   r   )r	   r   r   r   r   Z   s    zLyingTuple.__iter__N)r   r   r   r   r   r   r   r   r#   Y   s   r#   c               @   s   e Zd Zdd ZdS )	LyingListc             c   s
   dV  d S )Nr   r   )r	   r   r   r   r   ^   s    zLyingList.__iter__N)r   r   r   r   r   r   r   r   r$   ]   s   r$   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| xddtdd	td
ddfD ]}x2ttttt	fD ] }| |  |||  | qW | |  t
||    | |  dd dD |  d | t| j t| | t| j t| | t| j t| qW | |  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 )N)_OtherSeq__data)r	   Zinitseqr   r   r   r
   v   s    z7CommonTest.test_constructors.<locals>.OtherSeq.__init__c             S   s
   t | jS )N)r   r&   )r	   r   r   r   __len__x   s    z6CommonTest.test_constructors.<locals>.OtherSeq.__len__c             S   s
   | j | S )N)r&   )r	   r   r   r   r   r   z   s    z:CommonTest.test_constructors.<locals>.OtherSeq.__getitem__N)r   r   r   r
   r'   r   r   r   r   r   OtherSequ   s   r(   zthis is also a sequenceZ123 i  )Zdog333333?i  i     c             s   s   | ]
}|V  qd S )Nr   ).0cr   r   r   	<genexpr>   s    z/CommonTest.test_constructors.<locals>.<genexpr>)   )r   r.   )	type2testtupleassertEqualr   ranger   r   r   r"   r   r   assertRaises	TypeErrorr   r   ZeroDivisionErrorr   r#   r$   )r	   Zl0l1l2uZu0u1u2uuZuu0Zuu1Zuu2r   r(   sZv0Zvvgr   r   r   test_constructorse   s<    








  "zCommonTest.test_constructorsc             C   s$   |  |   | | dg d S )N*   )ZassertFalser/   Z
assertTrue)r	   r   r   r   
test_truth   s    zCommonTest.test_truthc             C   s  |  dddddg}x8tt|D ](}| || | | |t| | q"W xLtt| dD ]8}| || t||  | |t| t||  q`W | 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 )Nr   r   r.   r      
      )r/   r2   r   r1   intr3   
IndexErrorr   
ValueErrorslicer4   )r	   r8   r   ar   r   r   test_getitem   s*     zCommonTest.test_getitemc          
   C   s0  dddddg}|  |}| |dd |    | |dd |  dg | |dd |  dg | |dd	 | | |d	d |  g  | |d d  | | |dd  |  ddddg | |d d |  dddg | |d d  | | |d d d |  dddg | |dd d |  ddg | |d d d |  dddddg | |d d d |  dddg | |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 |  dddg |  dddddg}| |tdd d |  dddg | |dtdd |  ddg d S )Nr   r   r.   r   rA   rE   rB   ii  id         )r/   r1   pow)r	   lr8   rK   r   r   r   test_getslice   s:    
" " &"   "(zCommonTest.test_getslicec             C   sj   |  dddg}x|D ]}| || qW x,t|d t|d fD ]}| || qDW | t|j d S )Nr   r   r.   )r/   assertInminmaxassertNotInr3   r4   __contains__)r	   r8   r   r   r   r   test_contains   s    
zCommonTest.test_containsc             C   s<   G dd d}|  | | g  | | | dg d S )Nc               @   s   e Zd Zdd ZdZdS )z,CommonTest.test_contains_fake.<locals>.AllEqc             S   s   dS )NTr   )r	   otherr   r   r   __eq__   s    z3CommonTest.test_contains_fake.<locals>.AllEq.__eq__N)r   r   r   rZ   __hash__r   r   r   r   AllEq   s   r\   r   )rV   r/   rS   )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   r^   c                   s   e Zd Z fddZdS )z4CommonTest.test_contains_order.<locals>.StopComparesc                s    d S )Nr   )r	   rY   )r^   r   r   rZ      s    z;CommonTest.test_contains_order.<locals>.StopCompares.__eq__N)r   r   r   rZ   r   )r^   r   r   StopCompares   s   r_   r   )	Exceptionr/   rS   r3   rW   )r	   r_   Z
checkfirstZ	checklastr   )r^   r   test_contains_order   s    zCommonTest.test_contains_orderc             C   sb   |  t|  d |  t| g d |  t| dgd |  t| dddgd d S )Nr   r   r.   r   )r1   r   r/   )r	   r   r   r   test_len   s    zCommonTest.test_lenc             C   s4   |  dddg}| t|d | t|d d S )Nr   r   r.   )r/   r1   rT   rU   )r	   r8   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   rB   r.   r   c               @   s   e Zd ZdS )z(CommonTest.test_addmul.<locals>.subclassN)r   r   r   r   r   r   r   subclass  s   rd   )r/   r1   ZassertIsNot)r	   r9   r:   rd   Zu3r   r   r   test_addmul  s0    "zCommonTest.test_addmulc             C   s   |  ddg}||   7 }| ||  ddg ||  ddg7 }| ||  ddddg ||  ddg7 }| ||  ddddddg |  d}||  d7 }| ||  d	 d S )
Nr   r   r.   r   rA   r*   ZspamZeggsZspameggs)r/   r1   )r	   r8   r   r   r   	test_iadd  s    
zCommonTest.test_iaddc             C   sR   |  ddg}|d9 }| ||  ddddddg |d9 }| ||  g  d S )Nr   r   r   )r/   r1   )r	   r8   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   6  s    z;CommonTest.test_getitemoverwriteiter.<locals>.T.__getitem__N)r   r   r   r   r   r   r   r   T5  s   rj   )r   r.   r   )r/   r1   nextiter)r	   rj   r   r   r   test_getitemoverwriteiter3  s    z$CommonTest.test_getitemoverwriteiterc             C   s   xt dD ]x}tt |}x2t ddD ]$}| | || | ||  q&W | | |d | g  | t|t|d  q
W d S )NrA   rF   r*   r   )r2   r0   r1   r/   id)r	   mr<   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__)sysmaxsizer/   r3   MemoryError__mul__hasattrrs   )r	   r   r   r   r   test_bigrepeatB  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 )NrC   rD   r   r   rE   rB   rF   r   r.   r*   r   )r/   r1   r   r3   rH   rJ   rI   r4   )r	   rK   r   r   r   test_subscriptJ  s      ""zCommonTest.test_subscriptc                s   |  dddgd }| |dd | |dd | |dd | t|j G dd dt G  fddd}|  |j|  d S )	Nr   r   r.   r   c               @   s   e Zd ZdS )z%CommonTest.test_count.<locals>.BadExcN)r   r   r   r   r   r   r   BadExcb  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   )r	   rY   )r{   r   r   rZ   f  s    z,CommonTest.test_count.<locals>.BadCmp.__eq__N)r   r   r   rZ   r   )r{   r   r   BadCmpe  s   r|   )r/   r1   countr3   r4   r`   )r	   rK   r|   r   )r{   r   
test_countZ  s    zCommonTest.test_countc                sH  |  ddg}| |dd | |dd | t|jd |  ddddddg}| |dd | |dd | |ddd | |ddd | |ddd | |dddd | t|jddd | t|j G d	d
 d
t G  fddd}|  ddddg}|  |j|  |  dddddd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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.   rE   rB   ir   rA   c               @   s   e Zd ZdS )z%CommonTest.test_index.<locals>.BadExcN)r   r   r   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 )Nr.   Fr   )r	   rY   )r{   r   r   rZ     s    z,CommonTest.test_index.<locals>.BadCmp.__eq__N)r   r   r   rZ   r   )r{   r   r   r|     s   r|   rn   rF   )
r/   r1   indexr3   rI   r}   r4   r`   rt   ru   )r	   r8   r|   rK   r   )r{   r   
test_indexm  s:    " zCommonTest.test_indexc             C   s`   |  ddddg}xHttjd D ]6}tt||}| || | t|t| q"W d S )NrA   r*         r   )	r/   r2   pickleZHIGHEST_PROTOCOLloadsdumpsr1   ZassertNotEqualro   )r	   ZlstprotoZlst2r   r   r   test_pickle  s
    zCommonTest.test_picklec             C   s$   t | t| j t | t| j d S )N)r   Zcheck_free_after_iteratingrl   r/   reversed)r	   r   r   r   test_free_after_iterating  s    z$CommonTest.test_free_after_iterating)r   r   r   r/   r>   r@   rL   rR   rX   r]   ra   rb   rc   re   rf   rg   rm   rr   ry   rz   r~   r   r   r   r   r   r   r   r%   a   s*   .$	*r%   )Zunittestrt   r   Ztestr   r   r   r   r   r   r   r   r   	itertoolsr   r"   r0   r#   listr$   ZTestCaser%   r   r   r   r   <module>   s    	
	