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                   @   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   :/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__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   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 ]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?   r7   sortr#   r%   len
assertTruer$   )r   r   ir*   r+   ipr   rB   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&   r7   minrF   rG   r#   r%   r$   r(   max)r   r)   r*   r+   r,   lohirI   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<   rN   rO   r   )r!   rT   r>   r>   r>   rU   rV   r:   )r(   r#   r%   r$   r   r1   r2   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    rK   keyZaBcDeEfgHhiIiij)
r#   abssortedlistmapr(   r%   r$   strcasefold)r   r3   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[      irT   r   r\   )
rD   rf   r#   r^   r`   r7   r1   r(   r_   r2   )r   rf   r3   rd   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   )rW   brj   r\   )r#   r1   r2   r/   	TypeError)r   r<   yfr   r   r   test_insort_keynotNone  s
   
z!TestBisect.test_insort_keynotNoneN)r>   )r   r   r   r'   r-   r4   r8   r=   rJ   rP   rR   rY   re   ri   rn   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   rp   
      rp   c                   @   ro   )TestBisectCNr   r   r   c_bisectr#   r   r   r   r   rt     rs   rt   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)
rD   ry   r`   r   r7   r#   r1   r2   r(   r_   )r   r   ry   ZinsortedrH   Zdigitrm   r   r   r   test_vsBuiltinSort  s   
zTestInsort.test_vsBuiltinSortc                 C   rQ   r   )r(   r#   rX   r2   r   r   r   r   rR     rS   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    r}   r!   r"   )r`   r#   r1   r2   r(   r*   )r   r}   Zlstr   r   r   test_listDerived"  s
   zTestInsort.test_listDerivedN)rx   )r   r   r   r{   rR   r~   r   r   r   r   rw     s    
rw   c                   @   ro   )TestInsortPythonNrq   r   r   r   r   r   -  rs   r   c                   @   ro   )TestInsortCNru   r   r   r   r   r   0  rs   r   c                   @      e Zd Z	 dd ZdS )LenOnlyc                 C      dS Nr!   r   r   r   r   r   r   7     zLenOnly.__len__N)r   r   r   r   r   r   r   r   r   5      r   c                   @   r   )GetOnlyc                 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   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 r   )ZeroDivisionError)r   otherr   r   r   __lt__A  r   zCmpErr.__lt__N)	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$   r1   r2   r/   rk   r   rm   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$   r1   r2   r/   rk   r   r   r   r   r   test_len_onlyO  
   zTestErrorHandling.test_len_onlyc                 C   r   r   )r#   r%   r$   r1   r2   r/   rk   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$   r1   r2   r/   r   )r   seqrm   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                   @   ro   )TestErrorHandlingPythonNrq   r   r   r   r   r   d  rs   r   c                   @   ro   )TestErrorHandlingCNru   r   r   r   r   r   g  rs   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gradesrH   r   r   r   graden  s   z)TestDocExample.test_grades.<locals>.gradec                    s   g | ]} |qS r   r   )r@   r   )r   r   r   rC   r      z.TestDocExample.test_grades.<locals>.<listcomp>)!   c   M   r   Y   r   r9   )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yellowrK   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   )r@   r   r   r   r   rC   x  r   z.TestDocExample.test_colors.<locals>.<listcomp>r   r   r   r   r"   r   rK   r   )rE   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                   @   ro   )TestDocExamplePythonNrq   r   r   r   r   r     rs   r   c                   @   ro   )TestDocExampleCNru   r   r   r   r   r     rs   r   __main__)r5   ZunittestZtest.supportr   collectionsr   Zimport_fresh_modulerr   rv   objectr   r   ZTestCaserp   rt   rw   r   r   r   r   r   r   r   r   r   r   r   r   mainr   r   r   r   <module>   s4     k
