B
    u9a6                 @   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bisectZ_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.7/test_bisect.py__init__   s    zRange.__init__c             C   s   | j | j S )N)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 )N)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          X   C   s  | 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dddgddf| j jdddgddf| j jdddgddf| j jddddgddf| j jddddgddf| j jdd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ddgddf| j jddddgddf| j jddddgddf| j jddddgddf| j jddddgddf| j jddddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
d	df| j jddddddddddg
dd
f| j jddddddddddg
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dddgddf| j jdddgddf| j jdddgddf| j jddddgddf| j jddddgddf| j jdd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ddgddf| j jddddgddf| j jddddgddf| j jddddgddf| j jddddgddf| j jddddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jdddgddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
ddf| j jddddddddddg
d	df| j jddddddddddg
ddf| j jddddddddddg
dd
fgN| _d S )N   r            g      ?g      @   g      @
      )modulebisect_rightbisect_leftprecomputedCases)r	   r
   r
   r   setUp    s    """""""""""""""""zTestBisect.setUpc             C   sD   x>| j D ]4\}}}}| |||| | |t||| qW d S )N)r"   assertEqualr   )r	   funcdataelemexpectedr
   r
   r   test_precomputeds   s    zTestBisect.test_precomputedc             C   sz   | j }| t|jdddgddd | t|jdddgddd | t|jdddgddd | t|jdddgddd d S )Nr   r   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	   r/   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   r1   r2   r   r$   r!   r    r-   r   r.   )r	   r/   r   r&   xr
   r
   r   test_large_pyrange   s    $$zTestBisect.test_large_pyrange   c                s   ddl m xt D ]} fddt|D }|  d d }| j||}|t|k rt| ||| k |dkr| ||d  |k  | j||}|t|k r| ||| k  |dkr| ||d  |k qW d S )Nr   )	randrangec                s   g | ]}d  dqS )r   r   r
   ).0j)r   r;   r
   r   
<listcomp>   s    z*TestBisect.test_random.<locals>.<listcomp>r*   r   )	randomr;   r3   sortr   r!   len
assertTruer    )r	   r   ir&   r'   ipr
   )r   r;   r   test_random   s    zTestBisect.test_randomc             C   sP  xH| j D ]<\}}}}x,tdD ]}tt||}xtddD ]}tt||}|||||}| ||  ko||kn   || jjkr||k r| ||| k || jjkr||kr| ||d  |k  || jjkr||k r| ||| k  || jjkr(||kr(| ||d  |k | |t	|t|| qFW q$W q
W d S )Nr   r      r   )
r"   r3   minrA   rB   r   r!   r    r$   max)r	   r%   r&   r'   r(   lohirD   r
   r
   r   test_optionalSlicing   s     zTestBisect.test_optionalSlicingc             C   s   |  | jj| jj d S )N)r$   r   r   r    )r	   r
   r
   r   test_backcompatibility   s    z!TestBisect.test_backcompatibilityc             C   s   dddddg}|  | 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	 |  |ddddddddg d S )Nr         (   r6   r:   r   r   )ar8   rI   rJ   r   )r$   r   r!   r    r   r-   r.   insort)r	   r&   r
   r
   r   test_keyword_args   s    zTestBisect.test_keyword_argsN)r:   )r   r   r   r#   r)   r0   r4   r9   rE   rK   rL   rR   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   rS      s   rS   c               @   s   e Zd ZeZdS )TestBisectCN)r   r   r   c_bisectr   r
   r
   r
   r   rU      s   rU   c               @   s&   e Zd Zd	ddZdd Zdd ZdS )

TestInsort  c             C   st   ddl m} xbt t fD ]R}x<t|D ]0}|d}|dkrF| jj}n| jj}||| q(W | t	|| qW d S )Nr   )choice
0123456789Z02468)
r?   rY   listr   r3   r   r-   r.   r$   sorted)r	   r   rY   ZinsortedrC   digitfr
   r
   r   test_vsBuiltinSort   s    
zTestInsort.test_vsBuiltinSortc             C   s   |  | jj| jj d S )N)r$   r   rQ   r.   )r	   r
   r
   r   rL      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 )N)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   ra   r   r   )r[   r   r-   r.   r$   r&   )r	   ra   Zlstr
   r
   r   test_listDerived   s
    zTestInsort.test_listDerivedN)rX   )r   r   r   r_   rL   rb   r
   r
   r
   r   rW      s   
rW   c               @   s   e Zd ZeZdS )TestInsortPythonN)r   r   r   rT   r   r
   r
   r
   r   rc      s   rc   c               @   s   e Zd ZeZdS )TestInsortCN)r   r   r   rV   r   r
   r
   r
   r   rd      s   rd   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   re      s   re   c               @   s   e Zd Zdd ZdS )GetOnlyc             C   s   dS )Nr   r
   )r	   Zndxr
   r
   r   r      s    zGetOnly.__getitem__N)r   r   r   r   r
   r
   r
   r   rf      s   rf   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 )N)ZeroDivisionError)r	   otherr
   r
   r   __lt__  s    zCmpErr.__lt__N)	r   r   r   rj   __gt____le____ge____eq____ne__r
   r
   r
   r   rg      s   rg   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   s:   x4| j j| j j| j j| j jfD ]}| t|dd qW d S )Nr   )r   r!   r    r-   r.   r+   	TypeError)r	   r^   r
   r
   r   test_non_sequence
  s    z#TestErrorHandling.test_non_sequencec             C   s<   x6| j j| j j| j j| j jfD ]}| t|t d qW d S )Nr   )r   r!   r    r-   r.   r+   rq   re   )r	   r^   r
   r
   r   test_len_only  s    zTestErrorHandling.test_len_onlyc             C   s<   x6| j j| j j| j j| j jfD ]}| t|t d qW d S )Nr   )r   r!   r    r-   r.   r+   rq   rf   )r	   r^   r
   r
   r   test_get_only  s    zTestErrorHandling.test_get_onlyc             C   sJ   t  t  t  g}x4| jj| jj| jj| jjfD ]}| t||d q.W d S )Nr   )rg   r   r!   r    r-   r.   r+   rh   )r	   seqr^   r
   r
   r   test_cmp_err  s    zTestErrorHandling.test_cmp_errc             C   s8   x2| j j| j j| j j| j jfD ]}| t|d qW d S )Nr   )r   r!   r    r-   r.   r+   rq   )r	   r^   r
   r
   r   test_arg_parsing  s    z"TestErrorHandling.test_arg_parsingN)r   r   r   rr   rs   rt   rv   rw   r
   r
   r
   r   rp   	  s
   rp   c               @   s   e Zd ZeZdS )TestErrorHandlingPythonN)r   r   r   rT   r   r
   r
   r
   r   rx   $  s   rx   c               @   s   e Zd ZeZdS )TestErrorHandlingCN)r   r   r   rV   r   r
   r
   r
   r   ry   '  s   ry   c               @   s   e Zd Zdd Zdd ZdS )TestDocExamplec          
      sJ   ddddgdffdd	  fdd	d
D } |dddddddg d S )N<   F   P   Z   ZFDCBAc                s    j || }|| S )N)r   r   )scoreZbreakpointsZgradesrC   )r	   r
   r   grade.  s    z)TestDocExample.test_grades.<locals>.gradec                s   g | ]} |qS r
   r
   )r<   r   )r   r
   r   r>   2  s    z.TestDocExample.test_grades.<locals>.<listcomp>)!   c   M   r|   Y   r~   r5   FACB)r$   )r	   resultr
   )r   r	   r   test_grades-  s    zTestDocExample.test_gradesc             C   s   ddddg}|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yellowrF   )Zblackr   c             S   s   | d S )Nr   r
   )rr
   r
   r   <lambda>7      z,TestDocExample.test_colors.<locals>.<lambda>)keyc             S   s   g | ]}|d  qS )r   r
   )r<   r   r
   r
   r   r>   8  s    z.TestDocExample.test_colors.<locals>.<listcomp>r   r   r   rF   )r@   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   rz   ,  s   rz   c               @   s   e Zd ZeZdS )TestDocExamplePythonN)r   r   r   rT   r   r
   r
   r
   r   r   ?  s   r   c               @   s   e Zd ZeZdS )TestDocExampleCN)r   r   r   rV   r   r
   r
   r
   r   r   B  s   r   __main__)r1   ZunittestZtestr   collectionsr   Zimport_fresh_modulerT   rV   objectr   r   ZTestCaserS   rU   rW   rc   rd   re   rf   rg   rp   rx   ry   rz   r   r   r   mainr
   r
   r
   r   <module>   s0    ,

