a
    ze6                     @   sp  d dl Z d dlZd dlmZ d dlmZ ejddgdZejddgdZG dd	 d	e	Z
G d
d dZG dd deejZG dd deejZG dd dZG dd deejZG dd deej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ejZG d d! d!eejZG d"d# d#ZG d$d% d%eejZG d&d' d'eejZed(krle  dS ))    N)support)UserListbisect_bisect)Zblocked)Zfreshc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Rangec                 C   s   || _ || _d | _d S N)startstoplast_insert)selfr   r	    r   &/usr/lib/python3.9/test/test_bisect.py__init__   s    zRange.__init__c                 C   s   | j | j S r   )r	   r   r   r   r   r   __len__   s    zRange.__len__c                 C   s6   | j | j }|dk r||7 }||kr,t|| j| S )Nr   )r	   r   
IndexError)r   idxnr   r   r   __getitem__   s    zRange.__getitem__c                 C   s   ||f| _ d S r   )r
   )r   r   itemr   r   r   insert   s    zRange.insertN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   	   s   r   c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdddZdd Z	dd Z
dd ZdS )
TestBisectc              Q   C   sr  | j jg ddf| j jdgddf| j jdgddf| j jdgddf| j jddgddf| j jddgddf| j jddgddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jddgddf| j jddgddf| j jddgddf| j jddgddf| j jddgddf| j jg d	ddf| j jg d	ddf| j jg d	ddf| j jg d	ddf| j jg d	ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg ddf| j jdgddf| j jdgddf| j jdgddf| j jddgddf| j jddgddf| j jddgddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jddgddf| j jddgddf| j jddgddf| j jddgddf| j jddgddf| j jg d	ddf| j jg d	ddf| j jg d	ddf| j jg d	ddf| j jg d	ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg d
ddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddf| j jg dddfgN| _d S )N   r      )r   r   r      )r   r   r   r      g      ?)r   r   r   r   r   r   r   g      @)
r   r   r   r   r   r   r   r   r   r      g      @
      )modulebisect_rightbisect_leftprecomputedCasesr   r   r   r   setUp    s    zTestBisect.setUpc                 C   s@   | j D ]4\}}}}| |||| | |t||| qd S r   )r&   assertEqualr   )r   funcdataelemexpectedr   r   r   test_precomputeds   s    zTestBisect.test_precomputedc                 C   sr   | j }| t|jg dddd | t|jg dddd | t|jg dddd | t|jg dddd d S )Nr   r"   r   )r#   assertRaises
ValueErrorr%   r$   insort_leftinsort_right)r   modr   r   r   test_negative_lox   s
    zTestBisect.test_negative_loc                 C   s   | j }tj}t|d }| |||d |d  | |||d |d  | |||d |d ||d  | |||d |d ||d  d S )Nr   r   r   r!   )r#   sysmaxsizeranger(   r%   r$   )r   r3   r   r*   r   r   r   test_large_range   s    $zTestBisect.test_large_rangec                 C   s  | j }tj}td|d }| |||d |d  | |||d |d  | |||d |d ||d  | |||d |d ||d  |d }||||d |d  | |j||f |d }|	|||d |d  | |j|d |f d S )	Nr   r   r   r   r!   d   2      )
r#   r5   r6   r   r(   r%   r$   r1   r
   r2   )r   r3   r   r*   xr   r   r   test_large_pyrange   s    $$zTestBisect.test_large_pyrange   c                    s   ddl m t D ]} fddt|D }|  d d }| j||}|t|k rr| ||| k |dkr| ||d  |k  | j||}|t|k r| ||| k  |dkr| ||d  |k qd S )Nr   )	randrangec                    s   g | ]}d  dqS )r   r   r   ).0jr   r?   r   r   
<listcomp>       z*TestBisect.test_random.<locals>.<listcomp>r.   r   )	randomr?   r7   sortr#   r%   len
assertTruer$   )r   r   ir*   r+   ipr   rB   r   test_random   s    zTestBisect.test_randomc                 C   s>  | j D ]0\}}}}tdD ]}tt||}tddD ]}tt||}|||||}| ||  kop|kn   || jju r||k r| ||| k || jju r||kr| ||d  |k  || jju r||k r| ||| k  || jju r||kr| ||d  |k | |t	|t|| q:qqd S )Nr   r      r   )
r&   r7   minrG   rH   r#   r%   r$   r(   max)r   r)   r*   r+   r,   lohirJ   r   r   r   test_optionalSlicing   s     zTestBisect.test_optionalSlicingc                 C   s   |  | jj| jj d S r   )r(   r#   r   r$   r   r   r   r   test_backcompatibility   s    z!TestBisect.test_backcompatibilityc                 C   s   g d}|  | jj|ddddd |  | jj|ddddd |  | jj|ddddd | jj|dddd | jj|dddd | jj|dddd |  |g d d S )N)r!         (   r:   r>   r   r   )ar<   rO   rP   r   )r!   rS   r>   r>   r>   rT   rU   r:   )r(   r#   r%   r$   r   r1   r2   insort)r   r*   r   r   r   test_keyword_args   s    zTestBisect.test_keyword_argsN)r>   )r   r   r   r'   r-   r4   r8   r=   rK   rQ   rR   rX   r   r   r   r   r      s   S

r   c                   @   s   e Zd ZeZdS )TestBisectPythonNr   r   r   	py_bisectr#   r   r   r   r   rY      s   rY   c                   @   s   e Zd ZeZdS )TestBisectCNr   r   r   c_bisectr#   r   r   r   r   r\      s   r\   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )

TestInsort  c                 C   sl   ddl m} t t fD ]N}t|D ]0}|d}|dv rB| jj}n| jj}||| q$| t	|| qd S )Nr   )choice
0123456789Z02468)
rE   ra   listr   r7   r#   r1   r2   r(   sorted)r   r   ra   ZinsortedrI   digitfr   r   r   test_vsBuiltinSort   s    
zTestInsort.test_vsBuiltinSortc                 C   s   |  | jj| jj d S r   )r(   r#   rW   r2   r   r   r   r   rR      s    z!TestInsort.test_backcompatibilityc                 C   sH   G dd dt }| }| j|d | j|d | ddg|j d S )Nc                   @   s   e Zd Zg Zdd ZdS )z)TestInsort.test_listDerived.<locals>.Listc                 S   s   | j || d S r   )r*   r   )r   indexr   r   r   r   r      s    z0TestInsort.test_listDerived.<locals>.List.insertN)r   r   r   r*   r   r   r   r   r   List   s   ri   r!   r"   )rc   r#   r1   r2   r(   r*   )r   ri   Zlstr   r   r   test_listDerived   s
    zTestInsort.test_listDerivedN)r`   )r   r   r   rg   rR   rj   r   r   r   r   r_      s   
r_   c                   @   s   e Zd ZeZdS )TestInsortPythonNrZ   r   r   r   r   rk      s   rk   c                   @   s   e Zd ZeZdS )TestInsortCNr]   r   r   r   r   rl      s   rl   c                   @   s   e Zd Zdd ZdS )LenOnlyc                 C   s   dS Nr!   r   r   r   r   r   r      s    zLenOnly.__len__N)r   r   r   r   r   r   r   r   rm      s   rm   c                   @   s   e Zd Zdd ZdS )GetOnlyc                 C   s   dS rn   r   )r   Zndxr   r   r   r      s    zGetOnly.__getitem__N)r   r   r   r   r   r   r   r   ro      s   ro   c                   @   s(   e Zd Zdd ZeZeZeZeZeZdS )CmpErrc                 C   s   t d S r   )ZeroDivisionError)r   otherr   r   r   __lt__  s    zCmpErr.__lt__N)	r   r   r   rs   __gt____le____ge____eq____ne__r   r   r   r   rp      s   rp   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestErrorHandlingc                 C   s6   | j j| j j| j j| j jfD ]}| t|dd qd S rn   r#   r%   r$   r1   r2   r/   	TypeErrorr   rf   r   r   r   test_non_sequence
  s    z#TestErrorHandling.test_non_sequencec                 C   s8   | j j| j j| j j| j jfD ]}| t|t d qd S rn   )r#   r%   r$   r1   r2   r/   r{   rm   r|   r   r   r   test_len_only  s    zTestErrorHandling.test_len_onlyc                 C   s8   | j j| j j| j j| j jfD ]}| t|t d qd S rn   )r#   r%   r$   r1   r2   r/   r{   ro   r|   r   r   r   test_get_only  s    zTestErrorHandling.test_get_onlyc                 C   sF   t  t  t  g}| jj| jj| jj| jjfD ]}| t||d q,d S rn   )rp   r#   r%   r$   r1   r2   r/   rq   )r   seqrf   r   r   r   test_cmp_err  s
    zTestErrorHandling.test_cmp_errc                 C   s4   | j j| j j| j j| j jfD ]}| t|d qd S rn   rz   r|   r   r   r   test_arg_parsing  s    z"TestErrorHandling.test_arg_parsingN)r   r   r   r}   r~   r   r   r   r   r   r   r   ry   	  s
   ry   c                   @   s   e Zd ZeZdS )TestErrorHandlingPythonNrZ   r   r   r   r   r   $  s   r   c                   @   s   e Zd ZeZdS )TestErrorHandlingCNr]   r   r   r   r   r   '  s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestDocExamplec                    s<   g ddffdd	  fdddD } |g d d S )	N)<   F   P   Z   ZFDCBAc                    s    j || }|| S r   )r#   r   )scoreZbreakpointsZgradesrI   r   r   r   grade.  s    z)TestDocExample.test_grades.<locals>.gradec                    s   g | ]} |qS r   r   )r@   r   )r   r   r   rC   2  rD   z.TestDocExample.test_grades.<locals>.<listcomp>)!   c   M   r   Y   r   r9   )FACr   Br   r   )r(   )r   resultr   )r   r   r   test_grades-  s    zTestDocExample.test_gradesc                 C   s   g d}|j dd d dd |D }| jj}| |||d d | |||d	 d
 | |||d d | |||d d d S )N)Zredr"   Zbluer   ZyellowrL   Zblackr   c                 S   s   | d S )Nr   r   )rr   r   r   <lambda>7  rD   z,TestDocExample.test_colors.<locals>.<lambda>)keyc                 S   s   g | ]}|d  qS )r   r   )r@   r   r   r   r   rC   8  rD   z.TestDocExample.test_colors.<locals>.<listcomp>r   r   r   r   r"   r   rL   r   )rF   r#   r%   r(   )r   r*   keysr%   r   r   r   test_colors5  s    zTestDocExample.test_colorsN)r   r   r   r   r   r   r   r   r   r   ,  s   r   c                   @   s   e Zd ZeZdS )TestDocExamplePythonNrZ   r   r   r   r   r   ?  s   r   c                   @   s   e Zd ZeZdS )TestDocExampleCNr]   r   r   r   r   r   B  s   r   __main__)r5   Zunittesttestr   collectionsr   Zimport_fresh_moduler[   r^   objectr   r   ZTestCaserY   r\   r_   rk   rl   rm   ro   rp   ry   r   r   r   r   r   r   mainr   r   r   r   <module>   s0    ,

