o
    g܃                     @   s
  d dl Z d dlZd dlmZmZ d dlmZmZ d dlmZm	Z	m
Z
 d dlZd dlZg 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G dd dZG dd dZG dd dejZdd Zedkre  dS dS )    N)run_unittestcpython_only)TESTFNunlink)check_free_after_iterating	ALWAYS_EQNEVER_EQ))r   r   r   )r   r      )r   r      )r   r	   r   )r   r	   r	   r   r	   r
   )r   r
   r   )r   r
   r	   )r   r
   r
   )r	   r   r   )r	   r   r	   )r	   r   r
   )r	   r	   r   )r	   r	   r	   )r	   r	   r
   )r	   r
   r   )r	   r
   r	   )r	   r
   r
   )r
   r   r   )r
   r   r	   )r
   r   r
   )r
   r	   r   )r
   r	   r	   )r
   r	   r
   )r
   r
   r   )r
   r
   r	   )r
   r
   r
   c                   @   $   e Zd Zdd Zdd Zdd ZdS )BasicIterClassc                 C      || _ d| _d S Nr   )niselfr    r   D/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_iter.py__init__      
zBasicIterClass.__init__c                 C   s"   | j }|| jkr
t|d | _ |S Nr	   )r   r   StopIterationr   resr   r   r   __next__   s
   

zBasicIterClass.__next__c                 C      | S Nr   r   r   r   r   __iter__$      zBasicIterClass.__iter__N__name__
__module____qualname__r   r   r    r   r   r   r   r      s    r   c                   @      e Zd Zdd Zdd ZdS )IteratingSequenceClassc                 C   
   || _ d S r   r   r   r   r   r   r   (      
zIteratingSequenceClass.__init__c                 C   
   t | jS r   )r   r   r   r   r   r   r    *   r*   zIteratingSequenceClass.__iter__Nr#   r$   r%   r   r    r   r   r   r   r'   '       r'   c                   @   r   )IteratorProxyClassc                 C   r(   r   r   r   r   r   r   r   r   .   r*   zIteratorProxyClass.__init__c                 C   r+   r   )nextr   r   r   r   r   r   0   r*   zIteratorProxyClass.__next__c                 C   r   r   r   r   r   r   r   r    2   r!   zIteratorProxyClass.__iter__Nr"   r   r   r   r   r.   -   s    r.   c                   @   r&   )SequenceClassc                 C   r(   r   r)   r   r   r   r   r   6   r*   zSequenceClass.__init__c                 C   s"   d|  kr| j k r|S  ttr   )r   
IndexErrorr0   r   r   r   __getitem__8   s   zSequenceClass.__getitem__Nr#   r$   r%   r   r4   r   r   r   r   r2   5   r-   r2   c                   @   r&   )SequenceProxyClassc                 C   r(   r   s)r   r8   r   r   r   r   ?   r*   zSequenceProxyClass.__init__c                 C   s
   | j | S r   r7   r0   r   r   r   r4   A   r*   zSequenceProxyClass.__getitem__Nr5   r   r   r   r   r6   >   r-   r6   c                   @      e Zd Zdd ZdS )UnlimitedSequenceClassc                 C      |S r   r   r0   r   r   r   r4   E   r!   z"UnlimitedSequenceClass.__getitem__Nr#   r$   r%   r4   r   r   r   r   r:   D       r:   c                   @   s   e Zd ZdS )DefaultIterClassN)r#   r$   r%   r   r   r   r   r>   H   s    r>   c                   @   s   e Zd Zdd ZdZdS )NoIterClassc                 C   r;   r   r   r0   r   r   r   r4   L   r!   zNoIterClass.__getitem__N)r#   r$   r%   r4   r    r   r   r   r   r?   K   s    r?   c                   @   r9   )BadIterableClassc                 C   s   t r   )ZeroDivisionErrorr   r   r   r   r    Q   r!   zBadIterableClass.__iter__Nr#   r$   r%   r    r   r   r   r   r@   P   r=   r@   c                   @   s  e Zd ZduddZdud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.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'dLdM Z(dNdO Z)dPdQ Z*dRdS Z+e,dTdU Z-dVdW Z.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8e,dldm Z9dndo Z:dpdq Z;drds Z<dtS )vTestCaseTc                 C   sR   |r|  || g }	 zt|}W n	 ty   Y q!w || q| || d S r   )check_pickler1   r   appendassertEqual)r   itseqpickler   valr   r   r   check_iteratorY   s   
zTestCase.check_iteratorc                 C   s<   |r
|  t|| g }|D ]}|| q| || d S r   )rD   iterrE   rF   )r   exprrH   rI   r   rJ   r   r   r   check_for_loopf   s   zTestCase.check_for_loopc              	   C   s   t tjd D ]K}t||}t|}| t|tjj	 | 
t|| t|}zt| W n	 ty:   Y qw t||}t|}| 
t||dd   qd S r   )rangerI   HIGHEST_PROTOCOLdumpsloads
assertTrue
isinstancecollectionsabcIteratorrF   listr1   r   )r   ZitorgrH   protodrG   r   r   r   rD   o   s   


zTestCase.check_picklec                 C       |  ttdttd d S N
   )rK   rL   rO   rX   r   r   r   r   test_iter_basic       zTestCase.test_iter_basicc                 C   s.   t td}t|}t|}| ||u  d S r\   )rX   rO   rL   rS   )r   rH   rG   Zit2r   r   r   test_iter_idempotency   s   zTestCase.test_iter_idempotencyc                 C   r[   r\   rN   rL   rO   rX   r   r   r   r   test_iter_for_loop   r_   zTestCase.test_iter_for_loopc                 C   sV   t d}g }t|D ]}t|D ]}t|D ]
}||||f qqq
| |t d S N   )rO   rL   rE   rF   TRIPLETS)r   rH   r   r   jkr   r   r   test_iter_independence   s   zTestCase.test_iter_independencec                    s.   t d  fddt D }| |t d S )Nrd   c                    s2   g | ]}t  D ]}t  D ]}|||fqqqS r   )rL   .0r   rf   rg   rH   r   r   
<listcomp>   s    z<TestCase.test_nested_comprehensions_iter.<locals>.<listcomp>)rO   rL   rF   re   r   r   rk   r   test_nested_comprehensions_iter   s
   
z(TestCase.test_nested_comprehensions_iterc                    s*   t d  fdd D }| |t d S )Nrd   c                    s*   g | ]} D ]} D ]}|||fq
qqS r   r   ri   rk   r   r   rl      s   * z;TestCase.test_nested_comprehensions_for.<locals>.<listcomp>)rO   rF   re   r   r   rk   r   test_nested_comprehensions_for   s   z'TestCase.test_nested_comprehensions_forc                 C      |  tdttd d S r\   )rN   r'   rX   rO   r   r   r   r   test_iter_class_for      zTestCase.test_iter_class_forc                 C       |  ttdttd d S r\   )rK   rL   r'   rX   rO   r   r   r   r   test_iter_class_iter   r_   zTestCase.test_iter_class_iterc                 C   ro   r\   )rN   r2   rX   rO   r   r   r   r   test_seq_class_for   rq   zTestCase.test_seq_class_forc                 C   rr   r\   )rK   rL   r2   rX   rO   r   r   r   r   test_seq_class_iter   r_   zTestCase.test_seq_class_iterc                 C   s  t d}ttjd D ]}t|}t||f|}t|\}}d|_| t	|t	| | 
t|ttd t| t||f|}t|\}}d|_| t	|t	| | 
t|ttdd tddD ]}t| qkt||f|}t|\}}d|_| t	|t	| | 
t|ttdd | tt| t||f|}t|\}}d|_| t|tjj | 
t|g  qd S )N   r	      )r2   rO   rI   rP   rL   rQ   rR   r   ZassertIstyperF   rX   r1   assertRaisesr   rS   rT   rU   rV   rW   )r   ZorigrY   ZitorigrZ   rG   rH   r   r   r   r   #test_mutating_seq_class_iter_pickle   s8   
z,TestCase.test_mutating_seq_class_iter_picklec                 C   sl   t d}t|}t|}|D ]}t| qd|_| t|g  | t|ddg | t|g d d S )Nrv   rw      )r   r	   r
   rd      rv   r{   )r2   rL   r1   r   rF   rX   )r   aZexhitZempitxr   r   r   &test_mutating_seq_class_exhausted_iter   s   
z/TestCase.test_mutating_seq_class_exhausted_iterc                 C   s$   G dd dt }| tt|  d S )Nc                   @   r9   )z5TestCase.test_new_style_iter_class.<locals>.IterClassc                 S   r   r   r   r   r   r   r   r       r!   z>TestCase.test_new_style_iter_class.<locals>.IterClass.__iter__NrB   r   r   r   r   	IterClass   r=   r   )objectry   	TypeErrorrL   )r   r   r   r   r   test_new_style_iter_class   s   z"TestCase.test_new_style_iter_classc                 C   s2   G dd d}| j t| dttddd d S )Nc                   @   r&   )z&TestCase.test_iter_callable.<locals>.Cc                 S   s
   d| _ d S r   r/   r   r   r   r   r      r*   z/TestCase.test_iter_callable.<locals>.C.__init__c                 S   s    | j }|d | _ |dkrt|S )Nr	   d   )r   r3   r0   r   r   r   __call__   s
   
z/TestCase.test_iter_callable.<locals>.C.__call__N)r#   r$   r%   r   r   r   r   r   r   C   r-   r   r]   FrI   rK   rL   rX   rO   )r   r   r   r   r   test_iter_callable   s   $	zTestCase.test_iter_callablec                 C   s0   dgfdd}| j t|dttddd d S )Nr   c                 S   s   | d }|d | d< |S Nr   r	   r   stater   r   r   r   spam   s   z)TestCase.test_iter_function.<locals>.spamr]   Fr   r   r   r   r   r   r   test_iter_function   s   "zTestCase.test_iter_functionc                 C   s0   dgfdd}| j t|dttddd d S )Nr   c                 S   s$   | d }|dkr
t |d | d< |S )Nr   r]   r	   )r   r   r   r   r   r     s
   z.TestCase.test_iter_function_stop.<locals>.spam   r]   Fr   r   r   r   r   r   test_iter_function_stop  s   "z TestCase.test_iter_function_stopc              	   C   sh   dgfdd}g }zt |dD ]}|| qW n ty,   | |ttd Y d S w | d d S )Nr   c                 S   s$   | d }|d | d< |dkrt |S )Nr   r	   r]   )RuntimeErrorr   r   r   r   r     s
   z.TestCase.test_exception_function.<locals>.spamr   r]   should have raised RuntimeError)rL   rE   r   rF   rX   rO   fail)r   r   r   r~   r   r   r   test_exception_function  s   z TestCase.test_exception_functionc              	   C   sh   G dd dt }g }z|dD ]}|| qW n ty,   | |ttd Y d S w | d d S )Nc                   @   r9   )z9TestCase.test_exception_sequence.<locals>.MySequenceClassc                 S      |dkrt t| |S r\   )r   r2   r4   r0   r   r   r   r4   !     zETestCase.test_exception_sequence.<locals>.MySequenceClass.__getitem__Nr<   r   r   r   r   MySequenceClass   r=   r   r   r]   r   )r2   rE   r   rF   rX   rO   r   )r   r   r   r~   r   r   r   test_exception_sequence  s   z TestCase.test_exception_sequencec                 C   s0   G dd dt }| j|dttddd d S )Nc                   @   r9   )z4TestCase.test_stop_sequence.<locals>.MySequenceClassc                 S   r   r\   )r   r2   r4   r0   r   r   r   r4   1  r   z@TestCase.test_stop_sequence.<locals>.MySequenceClass.__getitem__Nr<   r   r   r   r   r   0  r=   r   r   r]   Fr   )r2   rN   rX   rO   )r   r   r   r   r   test_stop_sequence/  s    zTestCase.test_stop_sequencec                 C   r[   )Ni'  ra   r   r   r   r   test_iter_big_range8  r_   zTestCase.test_iter_big_rangec                 C   s   |  tg g  d S r   rN   rL   r   r   r   r   test_iter_empty<  s   zTestCase.test_iter_emptyc                 C   s   |  tdttd d S )N)
r   r	   r
   rd   r|   rv   r{   rw      	   r]   )rN   rL   rX   rO   r   r   r   r   test_iter_tuple@  rq   zTestCase.test_iter_tuplec                 C   r[   r\   ra   r   r   r   r   test_iter_rangeD  r_   zTestCase.test_iter_rangec                 C   s   |  tdg d d S NZabcde)r}   bcrZ   er   r   r   r   r   test_iter_stringH  s   zTestCase.test_iter_stringc                 C   s2   i }t dD ]}d ||< q| |t|  d S r\   )rO   rN   rX   keys)r   dictr   r   r   r   test_iter_dictL  s   
zTestCase.test_iter_dictc                 C   s   t tddd}ztdD ]	}|d|  qW |  n|  w t tddd}z)| j|g ddd	 | j|g dd	 W |  ztt W d S  tyQ   Y d S w |  ztt W w  tye   Y w w )
Nwutf-8encodingrv   %d
rz0
1
2
3
4
Fr   )openr   rO   writecloserN   r   OSError)r   fr   r   r   r   test_iter_fileS  s,   zTestCase.test_iter_filec                 C   s\  |  ttdttd |  ttdg  |  tdg  dddd}|  t|t|  | ttt | ttd ttd	d
d}ztdD ]	}|	d|  qLW |
  n|
  w ttdd
d}z1|  t|g d |dd |  t|g d W |
  ztt W d S  ty   Y d S w |
  ztt W w  ty   Y w w )Nrv   r   r   r	   r
   rd   onetwothree*   r   r   r   r   r   r   )rF   rX   r2   rO   r   ry   r   r   r   r   r   seekr   r   r   rZ   r   r   r   r   r   test_builtin_listf  s@   
zTestCase.test_builtin_listc                 C   sl  |  ttdd |  ttdd |  tg d |  tdd |  tdd ddd	d
}|  t|t|  | ttt | ttd ttddd}zt	dD ]	}|
d|  qXW |  n|  w ttddd}z-|  t|d |dd |  t|d W |  ztt W d S  ty   Y d S w |  ztt W w  ty   Y w w )Nrv   r   r	   r
   rd   r|   r   r   rV   r}   r   r   r	   r
   rd   r   r   r   r   r   r   r   r   )rF   tupler2   r   ry   r   rX   r   r   rO   r   r   r   r   r   r   r   r   r   test_builtin_tuple  sD   
zTestCase.test_builtin_tuplec                 C   s<  |  ttd tdttdd |  ttd tdg  |  ttd dg  |  ttd dg d dddd	}|  ttd |t|  | ttd t | ttd d
 G dd d}|d}|d}G dd d}|||gd  }|  ttdd ||gd  |  ttdd t||gd  d S )Nrv   r	   r   r   rV   r   r
   rd   r   r   c                   @   r&   )z-TestCase.test_builtin_filter.<locals>.Booleanc                 S   r(   r   truth)r   r   r   r   r   r     r*   z6TestCase.test_builtin_filter.<locals>.Boolean.__init__c                 S   s   | j S r   r   r   r   r   r   __bool__  s   z6TestCase.test_builtin_filter.<locals>.Boolean.__bool__N)r#   r$   r%   r   r   r   r   r   r   Boolean  r-   r   TFc                   @   r&   )z)TestCase.test_builtin_filter.<locals>.Seqc                 W   r(   r   vals)r   argsr   r   r   r     r*   z2TestCase.test_builtin_filter.<locals>.Seq.__init__c                 S   s   G dd d}|| j S )Nc                   @   r   )zCTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIterc                 S   r   r   )r   r   )r   r   r   r   r   r     r   zLTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIter.__init__c                 S   r   r   r   r   r   r   r   r      r!   zLTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIter.__iter__c                 S   s,   | j }|d | _ |t| jk r| j| S tr   )r   lenr   r   r0   r   r   r   r     s
   

zLTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIter.__next__Nr#   r$   r%   r   r    r   r   r   r   r   SeqIter  s    r   r   )r   r   r   r   r   r      s   
z2TestCase.test_builtin_filter.<locals>.Seq.__iter__Nr,   r   r   r   r   Seq  r-   r      c                 S      |  S r   r   r~   r   r   r   <lambda>      z.TestCase.test_builtin_filter.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r     r   )	rF   rX   filterr2   rO   r   ry   r   rL   )r   rZ   r   ZbTrueZbFalser   rH   r   r   r   test_builtin_filter  s"    (zTestCase.test_builtin_filterc                 C   sz  |  ttdd |  ttdd |  tddd |  tddd dddd	}|  t|d
 |  t|d |  t| d |  tt| d ttddd}z|d |d |d W |	  n|	  w ttddd}z-|  t|d |
dd |  t|d W |	  ztt W d S  ty   Y d S w |	  ztt W w  ty   Y w w )Nrv   r|   r   r   r	   r
   rd   r   r   r   r   r   r   zmedium line
zxtra large line
zitty-bitty line
r   )rF   maxr2   minvaluesrL   r   r   r   r   r   r   r   )r   rZ   r   r   r   r   test_builtin_max_min  s@   

zTestCase.test_builtin_max_minc                    sL  |  ttdd tdttdd dddd |  tt fd	d t   t   fd
dtdD }ttddd}ztdD ]}|	d| d  qKW |
  n|
  w ttddd}z(|  ttt|ttddd W |
  ztt W d S  ty   Y d S w |
  ztt W w  ty   Y w w )Nc                 S   s   | d S r   r   r   r   r   r   r         z+TestCase.test_builtin_map.<locals>.<lambda>rv   r	   r{   r
   rd   r   c                 S   s   | ||  fS r   r   )rg   rZ   r   r   r   r     s    c                    s>   g | ]}|t  k r| pd ||t  k r| pd fqS r   )r   rj   r   rZ   Zdkeysr   r   rl     s    z-TestCase.test_builtin_map.<locals>.<listcomp>r   r   r   r]   Zxy
r      )rF   rX   mapr2   rO   itemsr   r   r   r   r   r   r   r   )r   expectedr   r   r   r   r   test_builtin_map  s@   
$zTestCase.test_builtin_mapc                 C   s  |  tt g  |  ttg  g  |  ttddg ddg | ttd  | tttdd | tttdt |  tttdg d |  tttdg d d	d
dd}|  t| tt||	  G dd d}t
tddd}z|d W |  n|  w t
tddd}z'|  tt|d||dg d W |  ztt W n ty   Y nw |  ztt W w  ty   Y w w |  tttddd tdD  G dd d}G dd d|}G dd d|}dd  }|  t| d |  t| d! |  || |td |  || |td |  || |td d"d tdD }| | | fD ]}	| | | fD ]}
|  ||	|
| qSqId S )#Nr	   r
   ab)r	   r}   )r
   r   r]   r   rd   )r   )r	   )r
   r	   r
   r   c                   @   r   )z+TestCase.test_builtin_zip.<locals>.IntsFromc                 S   r(   r   r/   )r   startr   r   r   r   $  r*   z4TestCase.test_builtin_zip.<locals>.IntsFrom.__init__c                 S   r   r   r   r   r   r   r   r    '  r!   z4TestCase.test_builtin_zip.<locals>.IntsFrom.__iter__c                 S   s   | j }|d | _ |S r   r/   r0   r   r   r   r   *  s   
z4TestCase.test_builtin_zip.<locals>.IntsFrom.__next__Nr   r   r   r   r   IntsFrom#  s    r   r   r   r   z	a
bbb
cc
r   r   ))r   a
r   )r	   zbbb
i)r
   zcc
irv   c                 S   s   g | ]}|fqS r   r   r   r   r   r   rl   A  s    z-TestCase.test_builtin_zip.<locals>.<listcomp>c                   @   r9   )z.TestCase.test_builtin_zip.<locals>.NoGuessLen5c                 S   s   |dkrt |S Nrv   )r3   r0   r   r   r   r4   E  s   z:TestCase.test_builtin_zip.<locals>.NoGuessLen5.__getitem__Nr<   r   r   r   r   NoGuessLen5D  r=   r   c                   @   r9   )z-TestCase.test_builtin_zip.<locals>.Guess3Len5c                 S      dS rc   r   r   r   r   r   __len__K  r!   z5TestCase.test_builtin_zip.<locals>.Guess3Len5.__len__Nr#   r$   r%   r   r   r   r   r   
Guess3Len5J  r=   r   c                   @   r9   )z.TestCase.test_builtin_zip.<locals>.Guess30Len5c                 S   r   )N   r   r   r   r   r   r   O  r!   z6TestCase.test_builtin_zip.<locals>.Guess30Len5.__len__Nr   r   r   r   r   Guess30Len5N  r=   r   c                  W   s   t t|  S r   )rX   zip)r   r   r   r   lzipR     z'TestCase.test_builtin_zip.<locals>.lzipr   c                 S   s   g | ]}||fqS r   r   r   r   r   r   rl   [  s    )rF   rX   r   ry   r   rO   r'   r2   r   r   r   r   r   r   r   r   r   )r   rZ   r   r   r   r   r   r   r   r~   yr   r   r   test_builtin_zip  sh   "&zTestCase.test_builtin_zipc                 C   s   G dd d}t tddd}z|d W |  n|  w t tddd}z$d||}| |d	 W |  ztt W d S  tyJ   Y d S w |  ztt W w  ty^   Y w w )
Nc                   @   r   )z4TestCase.test_unicode_join_endcase.<locals>.OhPhooeyc                 S   s   t || _d| _d S r   )rL   rG   r   )r   rH   r   r   r   r   e  s   

z=TestCase.test_unicode_join_endcase.<locals>.OhPhooey.__init__c                 S   r   r   r   r   r   r   r   r    i  r!   z=TestCase.test_unicode_join_endcase.<locals>.OhPhooey.__iter__c                 S   s&   | j }|d | _ |dkrdS t| jS )Nr	   r
   zfooled you!)r   r1   rG   r0   r   r   r   r   l  s
   

z=TestCase.test_unicode_join_endcase.<locals>.OhPhooey.__next__Nr   r   r   r   r   OhPhooeyd  s    r   r   r   r   a
b
c
r   z - za
 - b
 - fooled you! - c
)r   r   r   r   joinrF   r   r   )r   r   r   Zgotr   r   r   test_unicode_join_endcase`  s*   z"TestCase.test_unicode_join_endcasec                 C   st  t dtdfD ]%}tdD ]}| || qdddddg ddid|f	D ]}| || q$q| tttdg | ttdg | tttt	g | ttt	g | t	tttg | t	ttg | 
tdd	  | 
td
d	  | 
tdd	  ddddd}|D ]}| || | ||  q| D ]}| ||  | || q| D ]\}}| ||f|  | ||f|  qttddd}z|d W |  n|  w ttddd}z7dD ]}|dd | || |dd | |d | qW |  ztt W d S  ty$   Y d S w |  ztt W w  ty9   Y w w )Nrv   rV   r   g(\5E@)rd   r|   r	   y      @      (c                   S   s   ddv S )Nrd      r   r   r   r   r   r     r   z-TestCase.test_in_and_not_in.<locals>.<lambda>c                   S   s   dt vS rc   )r   r   r   r   r   r     r   c                   S   s
   dt  v S rc   )r@   r   r   r   r   r     s   
 r
   rd                  @r   r   r                 ?r   r   r   r   r   r   r   )r'   r2   rO   ZassertInZassertNotInr   r.   rL   r6   r   ry   r   rA   r   r   r   r   r   r   r   r   r   )r   Zsc5r   rZ   rg   vr   chunkr   r   r   test_in_and_not_in  sb   zTestCase.test_in_and_not_inc                 C   s  ddl m} | |g ddd | |ddd | |ddd | |ddd | t|d	d
 | t||| ddddd}|D ]}| |||d
 qE| || dd | || dd
 | || dd ttddd}z|d W |	  n|	  w ttddd}z/dD ]\}}|
dd | |||d | qW |	  ztt W d S  ty   Y d S w |	  ztt W w  ty   Y w w )Nr   )countOfr	   r
   r
   rd   r
   rv   r
   rd   12232526r   r	   r   r  r  r   r   r   za
b
c
b
r   ))r}   r	   )r   r
   )r   r	   )rZ   r   r   )operatorr  rF   ry   r   r   r   r   r   r   r   r   r   )r   r  rZ   rg   r   Zlettercountr   r   r   test_countOf  sF   zTestCase.test_countOfc                 C   s  ddl m} | |g ddd | |ddd | |ddd | |ddd | t|dd | t|dd | |d	d
d | |d	dd | t|d	d | t|dd | t||| | t|t d tt	ddd}z|
d W |  n|  w tt	ddd}z<t|}| ||dd | ||dd | ||dd | t||d W |  ztt	 W n ty   Y nw |  ztt	 W w  ty   Y w w td}tdD ]}| |||| q| t||d d S )Nr   )indexOfr  r	   r
   rd   rv   r{   r  r	  5r
  r   r   r   r   z
a
b
c
d
e
r   zb
zd
ze
r   r   )r  r  rF   ry   
ValueErrorr   rA   r@   r   r   r   r   rL   r   r   r'   rO   )r   r  r   ZfiterZiclassr   r   r   r   test_indexOf  sP   zTestCase.test_indexOfc                    s  t tddd}zs| t|jd  | t|jd |ddg |d |dd i |i  G d	d
 d
 G  fddd}||dd |  t tdd}dd tddD }| t|| W |  zt	t W d S  t
yz   Y d S w |  zt	t W w  t
y   Y w w )Nr   r   r   r   r   r   )r   r   z5
c                   @   r   )z*TestCase.test_writelines.<locals>.Iteratorc                 S   s   || _ || _| j | _d S r   )r   finishr   r   r   r  r   r   r   r     s   z3TestCase.test_writelines.<locals>.Iterator.__init__c                 S   s0   | j | jkrtt| j d }|  j d7  _ |S )Nr   r	   )r   r  r   str)r   resultr   r   r   r     s
   z3TestCase.test_writelines.<locals>.Iterator.__next__c                 S   r   r   r   r   r   r   r   r    "  r!   z3TestCase.test_writelines.<locals>.Iterator.__iter__Nr"   r   r   r   r   rW     s    rW   c                           e Zd Zdd Z fddZdS )z*TestCase.test_writelines.<locals>.Whateverc                 S   s   || _ || _d S r   r   r  r  r   r   r   r   &  r   z3TestCase.test_writelines.<locals>.Whatever.__init__c                    s    | j | jS r   r  r   rW   r   r   r    *  s   z3TestCase.test_writelines.<locals>.Whatever.__iter__Nr,   r   r  r   r   Whatever%  s    r  r{   i  c                 S   s   g | ]}t |d  qS )r   )r  r   r   r   r   rl   1  s    z,TestCase.test_writelines.<locals>.<listcomp>r	   )r   r   ry   r   
writelinesr   rO   rF   rX   r   r   )r   r   r  r   r   r  r   test_writelines  s6   

zTestCase.test_writelinesc                 C   s  d\}}|  ||fd td\}}}|  |||fd ztd\}}W n	 ty-   Y nw | d z	td\}}}W n	 tyE   Y nw | d zt\}}}W n	 ty[   Y nw | d dddd \}}}|  |||fd	 ttd
dd}d}z|D ]}|	| qW |
  n|
  w ttddd}z#|\}}}|  |||f| W |
  ztt W n ty   Y nw |
  ztt W w  ty   Y w w tdddi\}}\}|  |||fd d S )Nr   rd   r   zshould have raised ValueErrorr
   zshould have raised TypeErrorr   )r	   r
   rd   )r   r   r   r   r   r   )r   zbb
zccc
r      )r   r	   r   )rF   r'   r  r   r   r   r   r   r   r   r   r   r   )r   r}   r   r   r   linesliner   r   r   test_unpack_iter=  sb   



zTestCase.test_unpack_iterc                 C   s   G dd dt }| }| |jd ~| |jd | | | g}| |jd zt|\}}W n	 ty:   Y nw ~| |jd d S )Nc                   @   s    e Zd ZdZdd Zdd ZdS )z.TestCase.test_ref_counting_behavior.<locals>.Cr   c                 S   s   |  j d7  _ t| S r   )r  r   __new__)clsr   r   r   r   v  s   
z6TestCase.test_ref_counting_behavior.<locals>.C.__new__c                 S   s&   | j }|jdks
J | jd8  _d S r   )	__class__r  )r   r!  r   r   r   __del__y  s   z6TestCase.test_ref_counting_behavior.<locals>.C.__del__N)r#   r$   r%   r  r   r#  r   r   r   r   r   t  s    r   r	   r   rd   )r   rF   r  rL   r  )r   r   r~   lr}   r   r   r   r   test_ref_counting_behaviorr  s   	z#TestCase.test_ref_counting_behaviorc                 C   sP   t td}t|}| t |t td |tdd | t |g  d S Nrv   r]   )rX   rO   rL   rF   extendr   r}   r   r   r   r   test_sinkstate_list  s
   zTestCase.test_sinkstate_listc                 C   s8   d}t |}| t|ttd | t|g  d S )Nr   rv   rL   rF   rX   rO   r(  r   r   r   test_sinkstate_tuple  s   zTestCase.test_sinkstate_tuplec                 C   s4   d}t |}| t|g d | t|g  d S r   )rL   rF   rX   r(  r   r   r   test_sinkstate_string  s   zTestCase.test_sinkstate_stringc                 C   sB   t d}t|}| t|ttd d|_| t|g  d S r&  )r2   rL   rF   rX   rO   r   r(  r   r   r   test_sinkstate_sequence  s
   z TestCase.test_sinkstate_sequencec                 C   sD   dgfdd}t |d}| t|ttd | t|g  d S )Nr   c                 S   s(   | d }|d | d< |dkrt d|S )Nr   r	   r]   zshouldn't have gotten this far)AssertionErrorr   r   r   r   r     s
   z.TestCase.test_sinkstate_callable.<locals>.spamrv   r*  )r   r   r   r   r   r   test_sinkstate_callable  s   
z TestCase.test_sinkstate_callablec                 C   sb   dddddd}t || | | fD ]}t |}| tt|d | t|g  qd S )Nr	   r
   r   r|   rd   )r	   r
   r   r|   rd   rv   )rL   r   r   r   rF   r   rX   r(  r   r   r   test_sinkstate_dict  s    zTestCase.test_sinkstate_dictc                 C   s:   dd }| }|  t|ttd |  t|g  d S )Nc                  s       t dD ]} | V  qd S r   rO   r/   r   r   r   gen     z*TestCase.test_sinkstate_yield.<locals>.genrv   )rF   rX   rO   )r   r3  r   r   r   r   test_sinkstate_yield  s   zTestCase.test_sinkstate_yieldc                 C   s<   t d}t|}| t|tt d | t|g  d S r   )rO   rL   rF   rX   r(  r   r   r   test_sinkstate_range  s   zTestCase.test_sinkstate_rangec                 C   sN   t d}t|}t|}| t|ttt dt d | t|g  d S r   )rO   	enumeraterL   rF   rX   r   )r   r}   r   r   r   r   r   test_sinkstate_enumerate  s
   "z!TestCase.test_sinkstate_enumeratec                    s<   G  fdddt  z	  D ]}qW d S  ty   Y d S w )Nc                       r  )z'TestCase.test_3720.<locals>.BadIteratorc                 S   r   r   r   r   r   r   r   r      r!   z0TestCase.test_3720.<locals>.BadIterator.__iter__c                    s    ` dS r   )r   r   BadIteratorr   r   r     s   z0TestCase.test_3720.<locals>.BadIterator.__next__N)r#   r$   r%   r    r   r   r9  r   r   r:    s    r:  )r   r   r0   r   r9  r   	test_3720  s   
zTestCase.test_3720c                 C   sJ   dd }dgd }t dD ]}|d q||  | t|d d S )Nc                  s   r1  )N  r2  r/   r   r   r   r3    r4  zITestCase.test_extending_list_with_iterator_does_not_segfault.<locals>.genr   r<     i  )rO   popr'  rF   r   )r   r3  Zlstr   r   r   r   3test_extending_list_with_iterator_does_not_segfault  s   
z<TestCase.test_extending_list_with_iterator_does_not_segfaultc                 C   s   t t }|tjd  | t|tjd  | t|tjd  | t t| W d    n1 s7w   Y  | t t| W d    d S 1 sQw   Y  d S )Nr
   r	   )	rL   r:   __setstate__sysmaxsizerF   r1   ry   OverflowErrorr   rG   r   r   r   test_iter_overflow  s   


"zTestCase.test_iter_overflowc                 C   s8   t t }|d | t|d | t|d d S )Nir   r	   )rL   r:   r@  rF   r1   rD  r   r   r   test_iter_neg_setstate  s   

zTestCase.test_iter_neg_setstatec                 C   s   t | ttd d S )Nr   )r   rL   r2   r   r   r   r   test_free_after_iterating  s   z"TestCase.test_free_after_iteratingc                 C   s2   t tfD ]
}| tt|  q| ttt  d S r   )r>   r?   ry   r   rL   rA   r@   )r   typr   r   r   test_error_iter
  s   zTestCase.test_error_iterN)T)=r#   r$   r%   rK   rN   rD   r^   r`   rb   rh   rm   rn   rp   rs   rt   ru   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r%  r)  r+  r,  r-  r/  r0  r5  r6  r8  r;  r?  rE  rF  rG  rI  r   r   r   r   rC   V   sx    

	
$
	!- O*1#*55
	
rC   c                   C   s   t t d S r   )r   rC   r   r   r   r   	test_main  r   rJ  __main__)rA  ZunittestZtest.supportr   r   Ztest.support.os_helperr   r   r   r   r   rI   collections.abcrU   re   r   r'   r.   r2   r6   r:   r>   r?   r@   rC   rJ  r#   r   r   r   r   <module>   s:   	       A
