B
    18\6                 @   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)blocked)freshc               @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )Rangez:A trivial range()-like object that has an insert() method.c             C   s   || _ || _d | _d S )N)startstoplast_insert)selfr	   r
    r   T/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/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____doc__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   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 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?   r7   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&   r7   minrE   rF   r#   r%   r$   r(   max)r   r)   r*   r+   r,   lohirH   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!         (   r:   r>   r   r   )ar<   rM   rN   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=   rI   rO   rP   rV   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   rW      s   rW   c               @   s   e Zd ZeZdS )TestBisectCN)r   r   r   c_bisectr#   r   r   r   r   rY      s   rY   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)
rC   r]   listr   r7   r#   r1   r2   r(   sorted)r   r   r]   ZinsortedrG   Zdigitfr   r   r   test_vsBuiltinSort   s    
zTestInsort.test_vsBuiltinSortc             C   s   |  | jj| jj d S )N)r(   r#   rU   r2   )r   r   r   r   rP      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   rd   r!   r"   )r_   r#   r1   r2   r(   r*   )r   rd   lstr   r   r   test_listDerived   s
    zTestInsort.test_listDerivedN)r\   )r   r   r   rb   rP   rf   r   r   r   r   r[      s   
r[   c               @   s   e Zd ZeZdS )TestInsortPythonN)r   r   r   rX   r#   r   r   r   r   rg      s   rg   c               @   s   e Zd ZeZdS )TestInsortCN)r   r   r   rZ   r#   r   r   r   r   rh      s   rh   c               @   s   e Zd ZdZdd ZdS )LenOnlyz:Dummy sequence class defining __len__ but not __getitem__.c             C   s   dS )Nr!   r   )r   r   r   r   r      s    zLenOnly.__len__N)r   r   r   r   r   r   r   r   r   ri      s   ri   c               @   s   e Zd ZdZdd ZdS )GetOnlyz:Dummy sequence class defining __getitem__ but not __len__.c             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   r   rj      s   rj   c               @   s,   e Zd ZdZdd ZeZeZeZeZeZ	dS )CmpErrz;Dummy element that always raises an error during comparisonc             C   s   t d S )N)ZeroDivisionError)r   otherr   r   r   __lt__  s    zCmpErr.__lt__N)
r   r   r   r   rn   __gt____le____ge____eq____ne__r   r   r   r   rk      s   rk   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$   r1   r2   r/   	TypeError)r   ra   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$   r1   r2   r/   ru   ri   )r   ra   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$   r1   r2   r/   ru   rj   )r   ra   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!   )rk   r#   r%   r$   r1   r2   r/   rl   )r   seqra   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$   r1   r2   r/   ru   )r   ra   r   r   r   test_arg_parsing  s    z"TestErrorHandling.test_arg_parsingN)r   r   r   rv   rw   rx   rz   r{   r   r   r   r   rt   	  s
   rt   c               @   s   e Zd ZeZdS )TestErrorHandlingPythonN)r   r   r   rX   r#   r   r   r   r   r|   $  s   r|   c               @   s   e Zd ZeZdS )TestErrorHandlingCN)r   r   r   rZ   r#   r   r   r   r   r}   '  s   r}   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gradesrG   )r   r   r   grade.  s    z)TestDocExample.test_grades.<locals>.gradec                s   g | ]} |qS r   r   )r@   r   )r   r   r   rB   2  s    z.TestDocExample.test_grades.<locals>.<listcomp>)!   c   M   r   Y   r   r9   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yellowrJ   )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   rB   8  s    z.TestDocExample.test_colors.<locals>.<listcomp>r   r   r"   rJ   )rD   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 )TestDocExamplePythonN)r   r   r   rX   r#   r   r   r   r   r   ?  s   r   c               @   s   e Zd ZeZdS )TestDocExampleCN)r   r   r   rZ   r#   r   r   r   r   r   B  s   r   __main__)r5   unittesttestr   collectionsr   import_fresh_modulerX   rZ   objectr   r   TestCaserW   rY   r[   rg   rh   ri   rj   rk   rt   r|   r}   r~   r   r   r   mainr   r   r   r   <module>   s0    ,

