a
    "hWa                     @   sb   d dl Z d dlZd dlZd dlZd dlmZ dd Zdd ZG dd de jZ	e
d	kr^e   dS )
    N)	ALWAYS_EQc                 c   s<   | | | dk r8|| | | 7 }| |kr8| V  | |7 } q d S )Nr    startstopstepr   r   7/opt/python-3.9.21/usr/lib/python3.9/test/test_range.pypyrange
   s
    r	   c                 C   s&   || | | 7 }t || | | | S N)r	   r   r   r   r   pyrange_reversed   s    r   c                   @   s   e Zd Zd: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d,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 ZdS );	RangeTestNc           
   	   C   s   |d ur t ||}t ||}t }t j|||d}t|D ]j\}\}}	||	krVq>q>||krt| d|||	 q>|	|kr| d||| q>| d|||	| q>d S )N)	fillvaluez;{}: iterator ended unexpectedly at position {}; expected {}z/{}: unexpected excess element {} at position {}z5{}: wrong element at position {}; expected {}, got {})	itertoolsisliceobjectzip_longest	enumerateZfailformat)
selfZxsZystest_idlimitsentinelpairsixyr   r   r   assert_iterators_equal   s&    z RangeTest.assert_iterators_equalc                 C   s  |  ttdg d |  ttddg d |  ttdg  |  ttdg  |  ttdddg d	 |  ttdd
dg d d}d}d}|  tt||d ||d g |  tt|d |d|d |d g |  tt|d |d|d |d g tt|||}| || | || |  t|d tt||| }| || | || |  t|d tt| | | }| | | | | | |  t|d | tt | ttdddd | ttddd | ttddd | ttddd | ttddd | ttddd | ttdd | ttddd |  ttdt	j
t	j
d d tt	j
 t	j
d}|  t|t	j
 d S )N   )r         r      )r   r   r      r   
   )r   r!      )r    r   d   2   r   r&   r!           g       @      ?}Ô%IT\nTspam*   )assertEquallistrangeassertInassertNotInlenassertRaises	TypeError
ValueErrorsysmaxsize)r   abcseqrr   r   r   
test_range.   sH    "(( zRangeTest.test_rangec                 C   st   |  td t  W d    n1 s(0    Y  |  td" tdddddd W d    n1 sf0    Y  d S )	Nz)range expected at least 1 argument, got 0z)range expected at most 3 arguments, got 6r   r   r   r!   r       )ZassertRaisesRegexr8   r3   r   r   r   r   %test_range_constructor_error_messages^   s    $z/RangeTest.test_range_constructor_error_messagesc                 C   s  t ddd}| t|d | tt|d t ddd}| t|d | tt|d | | t ddd}| t|d | tt|d | | t ddd}| t|d | tt|d | | t dd  t ddd  t ddd d	fD ] }| t|g  | | q
td
tj }tdtj }tdtj }| tt ||d ||d g | tt |d |d	|d |d g | tt |d |d|d |d g tt |||}| 	|| | 
|| | t|d | |d | | |d	 ||  tt ||| }| 	|| | 
|| | t|d | |d | | |d	 ||  tt | | | }| 	| | | 
| | | t|d | |d |  | |d	 | |  d S )N      Fx:^V l   
  Fx:^V r   r!   r   r"   r   r(   r&   r#   r)   r   r*   )r3   r1   r6   r2   ZassertFalse
assertTrueintr:   r;   r4   r5   )r   r   r<   r=   r>   r?   r   r   r   test_large_operandsk   sZ    


"((zRangeTest.test_large_operandsc                 C   s  dd }t j }t j}|| }t||}| || | || | tt| | | | 	||| | 	|d | t jd }| 	|| ||  | 	|||d  d ||  | t
 || d   W d    n1 s0    Y  | t
 ||  W d    n1 s0    Y  d}dt j }|| }t||}| || | || | tt| | | | 	||| | 	|d | t jd }| 	|| ||  | 	|||d  d ||  | t
 || d   W d    n1 s 0    Y  | t
 ||  W d    n1 s40    Y  d}t jd }dt j }d|| |  }t|||}| || | || | tt| | | | 	||| | 	|d | t jd }| 	|| |||   | 	|||d  d |||   | t
 || d   W d    n1 s80    Y  | t
 ||  W d    n1 sl0    Y  t jd }d}dt j }d|| |  }t|||}| || | || | tt| | | | 	||| | 	|d | t jd }| 	|| |||   | 	|||d  d |||   | t
 || d   W d    n1 sp0    Y  | t
 ||  W d    n1 s0    Y  d S )Nc                 S   sL   zt | }W n: tyF   | d | d  }d| d | d  |  }Y n0 |S )Nr   r   r&   )r6   OverflowError)r   lengthr   r   r   r   
_range_len   s    z.RangeTest.test_large_range.<locals>._range_lenr   r   r   r#   r*   )r:   r;   r3   r4   r5   r7   rI   r6   rF   r1   
IndexError)r   rK   r<   r=   expected_lenr   idxr>   r   r   r   test_large_range   s    


 ,(



 .(



$.(



$.zRangeTest.test_large_rangec                 C   s`  |  tt |  ttdddd |  ttddd tdtj }|  tt||d td |  ttddd |  ttdd	d	 |  ttdd
 |  ttddd
 |  ttd |  ttdd |  ttdd |  ttdd |  ttddd |  ttddd |  ttddd |  ttddd |  ttddd |  ttddd |  ttddd d S )Nr   r   r   r!   r   r#   r,   r-   r.   r/   r0   r+   )r7   r8   r3   r9   rG   r:   r;   )r   r<   r   r   r   test_invalid_invocation   s(    z!RangeTest.test_invalid_invocationc                    s  t d}| |dd | |dd | t|jd t dd}| |dd | |dd | t|j G dd dt G  fdd	d	}t d
}|  |j|  t dd}| |dd | t dddd
d | t ddddd | t ddd | t ddd | tt ddd djdd  | t ddd ddd d dd  | t dtd d S )Nr   r   r   r*   r   c                   @   s   e Zd ZdS )z$RangeTest.test_index.<locals>.BadExcN)__name__
__module____qualname__r   r   r   r   BadExc  s   rT   c                       s   e Zd Z fddZdS )z$RangeTest.test_index.<locals>.BadCmpc                    s   |dkr  dS )Nr   Fr   r   otherrT   r   r   __eq__  s    z+RangeTest.test_index.<locals>.BadCmp.__eq__NrQ   rR   rS   rX   r   rW   r   r   BadCmp  s   rZ   r!   r#   r"   r%   rE   l   Fx:^V r(   W   V   )	r3   r1   indexr7   r9   countr8   	Exceptionr   )r   urZ   r<   r   rW   r   
test_index  s*    

 *zRangeTest.test_indexc                 C   sB  dt j }d}G dd d}| tt||||d |g | tt||||d |g G dd d}| tt|  G dd	 d	}| tt|  | td
d |d td | t$ tdd
d |   W d    n1 s0    Y  | t$ tdd
d |   W d    n1 s40    Y  d S )Nr   r0   c                   @   s   e Zd Zdd Zdd ZdS )z+RangeTest.test_user_index_method.<locals>.Ic                 S   s   t || _d S r
   )rG   n)r   rc   r   r   r   __init__:  s    z4RangeTest.test_user_index_method.<locals>.I.__init__c                 S   s   | j S r
   )rc   rC   r   r   r   	__index__<  s    z5RangeTest.test_user_index_method.<locals>.I.__index__N)rQ   rR   rS   rd   re   r   r   r   r   I9  s   rf   r   c                   @   s   e Zd Zdd ZdS )z,RangeTest.test_user_index_method.<locals>.IXc                 S   s   t d S r
   )RuntimeErrorrC   r   r   r   re   C  s    z6RangeTest.test_user_index_method.<locals>.IX.__index__NrQ   rR   rS   re   r   r   r   r   IXB  s   ri   c                   @   s   e Zd Zdd ZdS )z,RangeTest.test_user_index_method.<locals>.INc                 S   s   dS )Nznot a numberr   rC   r   r   r   re   I  s    z6RangeTest.test_user_index_method.<locals>.IN.__index__Nrh   r   r   r   r   INH  s   rj   r#   r    r   )r:   r;   r1   r2   r3   r7   rg   r8   )r   ZbignumZsmallnumrf   ri   rj   r   r   r   test_user_index_method4  s    
$$ 2z RangeTest.test_user_index_methodc                 C   sd  |  tddd |  tddd |  tddd |  tddd |  tddd | ttddt | ttddt |  tddd |  tddd |  tddd |  tddd ddd d |  tddd ddd d d |  td	td	 |  ttt	j
t	j
d	 d	 d S )
Nr   r&   r   r   r   rE   r(   r\   r#   )r1   r3   r_   assertIstyperG   r^   r   r6   r:   r;   rC   r   r   r   
test_countW  s    "&zRangeTest.test_countc                 C   sF   |  ttdd |  ttddd |  ttdddd d S )Nr   zrange(0, 1)r   zrange(1, 2)r   zrange(1, 2, 3))r1   reprr3   rC   r   r   r   	test_repri  s    zRangeTest.test_reprc                 C   s   dddddddd dd d fg}t tjd	 D ]f}|D ]\}| j||d
: t | }| ttt||t| W d    q81 s0    Y  q8q0d S )N   r      ir#      r   r&   rr      r   r*   r   r   r   A   r   )prototest)r3   pickleHIGHEST_PROTOCOLsubTestr1   r2   loadsdumps)r   	testcasesr|   tr@   r   r   r   test_picklingn  s    zRangeTest.test_picklingc           	      C   s  g d}dD ]~}||d |d fd| d| d f|d |d df| d | dfdd|d fdd| fd|d |d fd| | fg7 }qt tjd D ]}|D ]}| j||d	 tt |  }}tt | }t||}t|}| t	|t	| | t|| t|}zt
| W n$ tyF   Y W d    qY n0 t||}t|}| t||dd   W d    q1 s0    Y  qqd S )
N)rq   rs   ru   rv   rx   rz   )l        l            r   r   r!   r   r*   r&   )r|   r   )r3   r~   r   r   iterr2   r   r   r1   rm   nextStopIteration)	r   r   Mr|   r   itZitorgdatadr   r   r   test_iterator_picklingx  s2      


z RangeTest.test_iterator_picklingc              	   C   s   t tjd D ]}| j|d tt d}| \}}}| |d |d | \}}}| |d t||}t	|}| t
|d W d    q1 s0    Y  qd S )Nr   )r|   l       r   l       )r3   r~   r   r   r   
__reduce__r1   __setstate__r   r   r   )r   r|   r   _rN   r   r   r   r   (test_iterator_pickling_overflowing_index  s    

z2RangeTest.test_iterator_pickling_overflowing_indexc                 C   s   t tjd D ]t}t dd dd d }t|}t|}|dd d kr0qLq0t||}t|}| t|g  | t|g  qd S )Nr   r   r{   	r3   r~   r   r   r   r   r   r1   r2   r   r|   r@   r   r   Zi2r   r   r    test_exhausted_iterator_pickling  s    
z*RangeTest.test_exhausted_iterator_picklingc                 C   sr   t tjd D ]^}t d}t|}t|}|dkr"q6q"t||}t|}| t|g  | t|g  qd S )Nr   rw      r   r   r   r   r   &test_large_exhausted_iterator_pickling  s    
z0RangeTest.test_large_exhausted_iterator_picklingc                 C   s:   |  t tg dd W d    n1 s,0    Y  d S )Nr   r&   )r7   r8   r3   rC   r   r   r   test_odd_bug  s    zRangeTest.test_odd_bugc                 C   s   |  dtd |  dtd |  dtd |  ttd G dd d}| | td |  t| td G dd dt}|  |d	td
 |  |d	ttd
 d S )Nr,   r   Ty      ?        c                   @   s   e Zd Zdd Zdd ZdS )z RangeTest.test_types.<locals>.C2c                 S   s   dS Nr   r   rC   r   r   r   __int__      z(RangeTest.test_types.<locals>.C2.__int__c                 S   s   dS r   r   rC   r   r   r   re     r   z*RangeTest.test_types.<locals>.C2.__index__N)rQ   rR   rS   r   re   r   r   r   r   C2  s   r   c                   @   s   e Zd Zdd ZdS )z RangeTest.test_types.<locals>.C3c                 S   s   dS )NTr   rU   r   r   r   rX     r   z'RangeTest.test_types.<locals>.C3.__eq__NrY   r   r   r   r   C3  s   r   rt   r#   )r4   r3   r   r5   rG   r2   )r   r   r   r   r   r   
test_types  s    zRangeTest.test_typesc                 C   s   t ddd}| d| | d| | d| | d| | d| | d| t ddd}| d| | d| | d	| | d| t ddd
}| d| | d	| | d| d S )Nr   e   r   r   c   r(   r&   r*   ir3   r4   r5   r   r@   r   r   r   test_strided_limits  s     zRangeTest.test_strided_limitsc                 C   sR   t d}| d| | d| t dd}| d| | d| | d| d S )Nr   r   r[   r&   )r3   r5   r   r   r   r   
test_empty  s    
zRangeTest.test_emptyc                    s   dd dD   fdd D }|D ]~\}}}t |||}t|||}d|||}| j|||dd tt |||}t|||}d|||}| j|||dd q$d S )	Nc                 S   s>   g | ]6}| | d  d|d  |fD ]}dD ]}|| q*q"qS )r   r   )r*   r&   r   r   r   r   ).0r   baseZjiggler   r   r   
<listcomp>  s   z2RangeTest.test_range_iterators.<locals>.<listcomp>)l        l            c                    s*   g | ]"} D ]}d D ]}|||fqqqS ))l         i   r*   r&   r   r   r   )r   r   endr   Zlimitsr   r   r     s   zrange({}, {}, {})r(   )r   zreversed(range({}, {}, {})))r3   r	   r   r   reversedr   )r   test_rangesr   r   r   Ziter1Ziter2r   r   r   r   test_range_iterators  s    
zRangeTest.test_range_iteratorsc                 C   sL   t ttd}| t|ddd t ttdd> }| t|ddd d S )Nr   r   r   i  )rm   r   r3   r7   r8   )r   Zrangeiter_typeZlong_rangeiter_typer   r   r   test_range_iterators_invocation  s    z)RangeTest.test_range_iterators_invocationc                    s   d fdd	}t dt dt dddt ddd	t tjd tjd fD ]X |dd
 |dd |dd
 |dd |dd |ddd
 |dd |dd	d qHd S )Nc                    sL   t | ||}t | t |  t | tt |  d S r
   )slicer1   r2   r6   )r   r   r   r   r@   r   r   r   check  s    z#RangeTest.test_slice.<locals>.checkr#   r   r   	   r      r"   r   rw      r   r&   r(   )N)r3   r:   r;   )r   r   r   r   r   
test_slice  s    







zRangeTest.test_slicec                 C   s  t d}| d| | d| | d| | d| | d| | d| | d| t ddd}| d| | d| | d| | d| | d| | d| | d| t ddd	}| d| | d| | d| | d| | d| | d| | d| t ddd
}| d| | d| | d| | d| | d| | d| | d| d S )Nr#   r   r   g      @gffffff@r&    r   r   r*   r   r   r   r   r   test_contains.  s@    zRangeTest.test_containsc                 C   sd   t dt dt dddt dddt tjd tjd fD ]&}| tt|t|d d d  q8d S )	Nr#   r   r   r   r   r   r"   r&   )r3   r:   r;   r1   r2   r   r   r   r   r   test_reverse_iterationP  s    

z RangeTest.test_reverse_iterationc                 C   sT   t tdddd }h d}|D ],}|D ]"}|dh D ]}||||  q8q*q"d S )Nr      r   rw   >   r   r   Nr   r   r    r   ir   r   r   rw   ry   r&   r   r%   ir*   r   )r3   r   indices)r   r@   valuesr   jkr   r   r   test_issue11845Y  s    zRangeTest.test_issue11845c                    sd  t dt ddt dddt dt ddt dddt dddt dt dd	dt dddt dddg ttt  fd
d D }fddD }| ||  fdd D }| |dd |D   D ]*} D ] }||kr| t|t| qq| t ddkd | dt dkd | t dddgkd | t ddd d dt ddd d | tt ddd d dtt ddd d | t ddd dt ddd d d | t dd dd dd  dd t dd dd dd  | tt dd dd dd  dd tt dd dd dd  | t dd dd dd t dd dd d dd  | t	  t dt dk  W d    n1 s0    Y  | t	  t dt dk W d    n1 s0    Y  | t	  t dt dk W d    n1 s0    Y  | t	  t dt dk W d    n1 sV0    Y  d S )Nr   r&   r   r   r    rB   r   r$   r!   c                    s   g | ]} D ]}||kqqS r   r   r   r<   r=   r   r   r   r   k  r   z-RangeTest.test_comparison.<locals>.<listcomp>c                    s   g | ]} D ]}||kqqS r   r   r   )test_tuplesr   r   r   l  r   c                    s   g | ]} D ]}||kqqS r   r   r   r   r   r   r   p  r   c                 S   s   g | ]
}| qS r   r   )r   r   r   r   r   r   q  r   r   Fr(         r   )
r3   r2   maptupler1   hashrl   ZassertNotEqualr7   r8   )r   Z	ranges_eqZ	tuples_eqZ	ranges_ner<   r=   r   )r   r   r   test_comparisonb  sX    "&000zRangeTest.test_comparisonc                 C   s   |  tdddd |  tdddd |  tdddd |  tdddddd |  tdddddd |  tdddddd |  tdddddd d S )Nr   r   r#   r[   r   r&   r"   )assert_attrsr3   rC   r   r   r   test_attributes  s    zRangeTest.test_attributesc                 C   sL  |  |j| |  |j| |  |j| | t d|_W d    n1 sP0    Y  | t d|_W d    n1 s0    Y  | t d|_W d    n1 s0    Y  | t |`W d    n1 s0    Y  | t |`W d    n1 s0    Y  | t |`W d    n1 s>0    Y  d S )Nr   r#   r   )r1   r   r   r   r7   AttributeError)r   Zrangeobjr   r   r   r   r   r   r     s    $$$"$zRangeTest.assert_attrs)N)rQ   rR   rS   r   rA   rD   rH   rO   rP   rb   rk   rn   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s8   
08U$#

"		5
r   __main__)Zunittestr:   r~   r   Ztest.supportr   r	   r   ZTestCaser   rQ   mainr   r   r   r   <module>   s   	     !