o
    GXh>                     @   sr  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re  dS dS ))    N)import_helper)UserListbisect_bisect)Zblocked)Z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   :/opt/python-3.10.19/usr/lib/python3.10/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____doc__r   r   r   r   r   r   r   r   r   
   s    r   c                   @   sn   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d Zdd Zdd ZdS )
TestBisectc                 C   s  g | 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| _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:  	
 !"#$%&')*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
zTestBisect.setUpc                 C   s@   | j D ]\}}}}| |||| | |t||| qd S r   )r'   assertEqualr   )r   funcdataelemexpectedr   r   r   test_precomputedt   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_loy   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   r4   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$   r6   r7   r   r)   r&   r%   r2   r
   r3   )r   r4   r   r+   xr   r   r   test_large_pyrange   s   $$zTestBisect.test_large_pyrange   c                    s   ddl m t D ]c} fddt|D }|  d d }| j||}|t|k r9| ||| k |dkrH| ||d  |k  | j||}|t|k r^| ||| k  |dkrm| ||d  |k q
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@   r8   sortr$   r&   len
assertTruer%   )r   r   ir+   r,   ipr   rC   r   test_random   s"   zTestBisect.test_randomc                 C   s6  | j D ]\}}}}tdD ]}tt||}tddD ]{}tt||}|||||}| ||  ko6|kn   || jju rM||k rM| ||| k || jju rb||krb| ||d  |k  || jju ru||k ru| ||| k  || jju r||kr| ||d  |k | |t	|t|| qqqd S )Nr   r      r   )
r'   r8   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      |  | jj| jj d S r   )r)   r$   r   r%   r   r   r   r   test_backcompatibility      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"   rU   r?   r?   r?   rV   rW   r;   )r)   r$   r&   r%   r   r2   r3   insort)r   r+   r   r   r   test_keyword_args   s   zTestBisect.test_keyword_argsc                 C   s   | j }t}tg d|d}tt||}|D ]"}| |j|||d||| | |j|||d||| qtj	}td|d}tt||}|D ]"}| |j|||d||| | |j|||d||| qKd S )N)r   r!   rL   keyZaBcDeEfgHhiIiij)
r$   abssortedlistmapr)   r&   r%   strcasefold)r   r4   keyfuncZarrZprecomputed_arrr=   r   r   r   test_lookups_with_key_function   s4   



z)TestBisect.test_lookups_with_key_functionc                 C   s   ddl m} | j}t}ttddttddd }|| g }|D ]}|j|||d | t||d| q"g }|D ]}|j	|||d | t||d| q;d S )	Nr   )shuffler\      irU   r   r]   )
rE   rg   r$   r_   ra   r8   r2   r)   r`   r3   )r   rg   r4   re   r+   targetr=   r   r   r   test_insort   s(   

zTestBisect.test_insortc                 C   s<   g }ddd}| j j| j jfD ]}| jt|||dd qd S )Nr   r   )rX   brk   r]   )r$   r2   r3   r0   	TypeError)r   r=   yfr   r   r   test_insort_keynotNone  s
   
z!TestBisect.test_insort_keynotNoneN)r?   )r   r   r   r(   r.   r5   r9   r>   rK   rQ   rS   rZ   rf   rj   ro   r   r   r   r   r       s    S


!r   c                   @      e Zd ZeZdS )TestBisectPythonNr   r   r   	py_bisectr$   r   r   r   r   rq   
      rq   c                   @   rp   )TestBisectCNr   r   r   c_bisectr$   r   r   r   r   ru     rt   ru   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 ]'}t|D ]}|d}|dv r!| jj}n| jj}||| q| t	|| qd S )Nr   )choice
0123456789Z02468)
rE   rz   ra   r   r8   r$   r2   r3   r)   r`   )r   r   rz   ZinsortedrI   Zdigitrn   r   r   r   test_vsBuiltinSort  s   
zTestInsort.test_vsBuiltinSortc                 C   rR   r   )r)   r$   rY   r3   r   r   r   r   rS     rT   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#      r~   r"   r#   )ra   r$   r2   r3   r)   r+   )r   r~   Zlstr   r   r   test_listDerived"  s
   zTestInsort.test_listDerivedN)ry   )r   r   r   r|   rS   r   r   r   r   r   rx     s    
rx   c                   @   rp   )TestInsortPythonNrr   r   r   r   r   r   -  rt   r   c                   @   rp   )TestInsortCNrv   r   r   r   r   r   0  rt   r   c                   @      e Zd ZdZdd ZdS )LenOnlyz:Dummy sequence class defining __len__ but not __getitem__.c                 C      dS Nr"   r   r   r   r   r   r   7     zLenOnly.__len__N)r   r   r   r   r   r   r   r   r   r   5  r   r   c                   @   r   )GetOnlyz:Dummy sequence class defining __getitem__ but not __len__.c                 C   r   r   r   )r   Zndxr   r   r   r   <  r   zGetOnly.__getitem__N)r   r   r   r   r   r   r   r   r   r   :  r   r   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 r   )ZeroDivisionError)r   otherr   r   r   __lt__A  r   zCmpErr.__lt__N)
r   r   r   r   r   __gt____le____ge____eq____ne__r   r   r   r   r   ?  s    r   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 r   r$   r&   r%   r2   r3   r0   rl   r   rn   r   r   r   test_non_sequenceJ  s
   z#TestErrorHandling.test_non_sequencec                 C   8   | j j| j j| j j| j jfD ]}| t|t d qd S r   )r$   r&   r%   r2   r3   r0   rl   r   r   r   r   r   test_len_onlyO  
   zTestErrorHandling.test_len_onlyc                 C   r   r   )r$   r&   r%   r2   r3   r0   rl   r   r   r   r   r   test_get_onlyT  r   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 r   )r   r$   r&   r%   r2   r3   r0   r   )r   seqrn   r   r   r   test_cmp_errY  s   zTestErrorHandling.test_cmp_errc                 C   s4   | j j| j j| j j| j jfD ]	}| t|d qd S r   r   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   r   I  s    r   c                   @   rp   )TestErrorHandlingPythonNrr   r   r   r   r   r   d  rt   r   c                   @   rp   )TestErrorHandlingCNrv   r   r   r   r   r   g  rt   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   graden  s   z)TestDocExample.test_grades.<locals>.gradec                    s   g | ]} |qS r   r   )rA   r   )r   r   r   rD   r      z.TestDocExample.test_grades.<locals>.<listcomp>)!   c   M   r   Y   r   r:   )FACr   Br   r   )r)   )r   resultr   )r   r   r   test_gradesm  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>w  s    z,TestDocExample.test_colors.<locals>.<lambda>r]   c                 S   s   g | ]}|d  qS )r   r   )rA   r   r   r   r   rD   x  r   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_colorsu  s   zTestDocExample.test_colorsN)r   r   r   r   r   r   r   r   r   r   l  s    r   c                   @   rp   )TestDocExamplePythonNrr   r   r   r   r   r     rt   r   c                   @   rp   )TestDocExampleCNrv   r   r   r   r   r     rt   r   __main__)r6   ZunittestZtest.supportr   collectionsr   Zimport_fresh_modulers   rw   objectr   r   ZTestCaserq   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   mainr   r   r   r   <module>   s4     k
