
    ;e>                        d dl Z d dlZd dlmZ d dlmZ  ej        ddg          Z ej        ddg          Z G d d	e	          Z
 G d
 d          Z G d deej                  Z G d deej                  Z G d d          Z G d deej                  Z G d deej                  Z G d d          Z G d d          Z G d d          Z G d d          Z G d deej                  Z G d  d!eej                  Z G d" d#          Z G d$ d%eej                  Z G d& d'eej                  Zed(k    r ej                     dS dS ))    N)import_helper)UserListbisect_bisect)blocked)freshc                   (    e Zd Z	 d Zd Zd Zd ZdS )Rangec                 0    || _         || _        d | _        d S N)startstoplast_insert)selfr   r   s      '/usr/lib/python3.11/test/test_bisect.py__init__zRange.__init__   s    
	    c                      | j         | j        z
  S r   )r   r   r   s    r   __len__zRange.__len__   s    y4:%%r   c                 t    | j         | j        z
  }|dk     r||z  }||k    rt          |          | j        |z   S )Nr   )r   r   
IndexError)r   idxns      r   __getitem__zRange.__getitem__   sD    I
"771HC!88S//!zCr   c                     ||f| _         d S r   )r   )r   r   items      r   insertzRange.insert   s    9r   N)__name__
__module____qualname__r   r   r   r    r   r   r
   r
   
   sS        D     
& & &     % % % % %r   r
   c                   X    e Zd Zd Zd Zd Zd Zd ZddZd Z	d	 Z
d
 Zd Zd Zd ZdS )
TestBisectc                 
   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   s    r   setUpzTestBisect.setUp!   se	   P!
[%r1a0P!
[%sAq1P!
 [%sAq1P!
 [%sAq1	P!

 [%1vq!4P!
 [%1vq!4P!
 [%1vq!4P!
 [%yyy!Q7P!
 [%yyy!Q7P!
 [%yyy!Q7P!
 [%|||Q:P!
 [%|||Q:P!
 [%|||Q:P!
 [%1vq!4P!
 [%1vq!4P!
  [%1vsA6!P!
" [%1vq!4#P!
$ [%1vq!4%P!
& [%|||Q:'P!
( [%|||Q:)P!
* [%|||S!<+P!
, [%|||Q:-P!
. [%|||Q:/P!
0 [%yyy!Q71P!
2 [%yyy!Q73P!
4 [%yyy#q95P!
6 [%yyy!Q77P!
8 [%yyy#q99P!
: [%yyy!Q7;P!
< [%yyy!Q7=P!
> [%'E'E'Eq!L?P!
@ [%'E'E'Eq!LAP!
B [%'E'E'EsANCP!
D [%'E'E'Eq!LEP!
F [%'E'E'EsANGP!
H [%'E'E'Eq!LIP!
J [%'E'E'EsANKP!
L [%'E'E'Eq"MMP!
N [%'E'E'Eq"MOP!
R [$b!Q/SP!
T [$qc1a0UP!
V [$qc1a0WP!
X [$qc1a0YP!
Z [$q!fa3[P!
\ [$q!fa3]P!
^ [$q!fa3_P!
` [$iiiA6aP!
b [$iiiA6cP!
d [$iiiA6eP!
f [$lllAq9gP!
h [$lllAq9iP!
j [$lllAq9kP!
l [$q!fa3mP!
n [$q!fa3oP!
p [$q!fc15qP!
r [$q!fa3sP!
t [$q!fa3uP!
v [$lllAq9wP!
x [$lllAq9yP!
z [$lllC;{P!
| [$lllAq9}P!
~ [$lllAq9P!
@ [$iiiA6AP!
B [$iiiA6CP!
D [$iiia8EP!
F [$iiiA6GP!
H [$iiia8IP!
J [$iiiA6KP!
L [$iiiA6MP!
N [$&D&D&DaKOP!
P [$&D&D&DaKQP!
R [$&D&D&Dc1MSP!
T [$&D&D&DaKUP!
V [$&D&D&Dc1MWP!
X [$&D&D&DaKYP!
Z [$&D&D&Dc1M[P!
\ [$&D&D&DaK]P!
^ [$&D&D&DaL_P!
r   c                     | j         D ]T\  }}}}|                      |||          |           |                      |t          |          |          |           Ud S r   )r1   assertEqualr   )r   funcdataelemexpecteds        r   test_precomputedzTestBisect.test_precomputedt   sx    *.*? 	C 	C&D$hTT$--x888TT(4..$77BBBB	C 	Cr   c                 D   | 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
ValueErrorr0   r/   insort_leftinsort_right)r   mods     r   test_negative_lozTestBisect.test_negative_loy   s    k*coyyy!RKKK*c&6			1b!LLL*coyyy!RKKK*c&6			1b!LLLLLr   c                    | j         }t          j        }t          |dz
            }|                     |                    ||dz
            |dz
             |                     |                    ||dz
            |dz
             |                     |                    ||dz
  |dz
  |          |dz
             |                     |                    ||dz
  |dz
  |          |dz
             d S )Nr&   r(   r'   r,   )r.   sysmaxsizeranger4   r0   r/   )r   r@   r   r6   s       r   test_large_rangezTestBisect.test_large_range   s    kKQqSzzqs33QqS999))$!44ac:::qsAbD!<<acBBB))$!QrT1==qsCCCCCr   c                    | j         }t          j        }t          d|dz
            }|                     |                    ||dz
            |dz
             |                     |                    ||dz
            |dz
             |                     |                    ||dz
  |dz
  |          |dz
             |                     |                    ||dz
  |dz
  |          |dz
             |dz
  }|                    |||dz
  |dz              |                     |j        ||f           |dz
  }|	                    |||dz
  |dz              |                     |j        |dz   |f           d S )	Nr   r&   r(   r'   r,   d   2      )
r.   rC   rD   r
   r4   r0   r/   r>   r   r?   )r   r@   r   r6   xs        r   test_large_pyrangezTestBisect.test_large_pyrange   s}   kKQ!}}qs33QqS999))$!44ac:::qsAbD!<<acBBB))$!QrT1==qsCCCGaRR000)Aq6222Gq!b&!b&111)AE1:66666r      c                    ddl m t                    D ],}fdt          |          D             }|                                  ddz             }| j                            ||          }|t          |          k     r|                     |||         k               |dk    r"|                     ||dz
           |k                | j                            ||          }|t          |          k     r|                     |||         k                |dk    r"|                     ||dz
           |k               .d S )Nr   )	randrangec                 *    g | ]} d d          S )r   r'   r"   ).0jr   rO   s     r   
<listcomp>z*TestBisect.test_random.<locals>.<listcomp>   s'    9991IIaA&&999r   r;   r&   )	randomrO   rE   sortr.   r0   len
assertTruer/   )r   r   ir6   r7   iprO   s    `    @r   test_randomzTestBisect.test_random   sK   $$$$$$q 	4 	4A99999a999DIIKKK9R1%%D((t44BCII~~R 0111AvvRT
T 1222))$55BCII~~tBx000AvvRT
d 2333	4 	4r   c                 X   | j         D ]\  }}}}t          d          D ]}t          t          |          |          }t          dd          D ]U}t          t          |          |          } |||||          }|                     ||cxk    o|k    nc            || j        j        u r%||k     r|                     |||         k               || j        j        u r(||k    r"|                     ||dz
           |k                || j        j        u r%||k     r|                     |||         k                || j        j        u r(||k    r"|                     ||dz
           |k               |                     |t          |t          ||                               Wd S )Nr)   r(      r&   )
r1   rE   minrV   rW   r.   r0   r/   r4   max)r   r5   r6   r7   r8   lohirY   s           r   test_optionalSlicingzTestBisect.test_optionalSlicing   s   *.*? 	E 	E&D$hAhh E ETB''!** E EBSYY++BdD"b11BOOB"NNNNNNNN333t{666277R(8999t{666277RT
T(9:::t{777BGGtBx888t{777BGGRT
d(:;;;$$RRR1B1B)C)CDDDDEE	E 	Er   c                 Z    |                      | j        j        | j        j                   d S r   )r4   r.   r   r/   r   s    r   test_backcompatibilityz!TestBisect.test_backcompatibility   (    +T[-EFFFFFr   c                    g d}|                      | j                            |ddd          d           |                      | j                            |ddd          d           |                      | j                            |ddd          d           | j                            |ddd           | j                            |ddd           | j                            |ddd           |                      |g d           d S )N)r,         (   rI   rM   r&   r(   )arK   r_   r`   r'   )r,   rf   rM   rM   rM   rg   rh   rI   )r4   r.   r0   r/   r   r>   r?   insort)r   r6   s     r   test_keyword_argszTestBisect.test_keyword_args   s   ###0042!0JJANNN11DB11KKQOOO++dbQ1+EEqIII$"q999  42! :::TRA!444???@@@@@r   c                 
   | j         }t          }t          g d|          }t          t	          ||                    }|D ]}|                     |                    |||          |                    ||                     |                     |                    |||          |                    ||                     t          j	        }t          d|          }t          t	          ||                    }|D ]}|                     |                    |||          |                    ||                     |                     |                    |||          |                    ||                     d S )N)r'   r+   r\   keyaBcDeEfgHhiIiij)
r.   abssortedlistmapr4   r0   r/   strcasefold)r   r@   keyfuncarrprecomputed_arrrK   s         r   test_lookups_with_key_functionz)TestBisect.test_lookups_with_key_function   s   k '''W555s7C0011  	 	AQG4433     aW 55  !44   
 ,&G444s7C0011  	 	AQG4433     aW 55  !44   	 	r   c                    ddl m} | j        }t          }t	          t          dd                    t	          t          ddd                    z   } ||           g }|D ]?}|                    |||           |                     t          ||          |           @g }|D ]?}|	                    |||           |                     t          ||          |           @d S )	Nr   )shufflern      irf   r'   ro   )
rT   r}   r.   rr   rt   rE   r>   r4   rs   r?   )r   r}   r@   rx   r6   targetrK   s          r   test_insortzTestBisect.test_insort   s$   """"""k E#rNN##d5b!+<+<&=&== 	 	AOOFA7O333v7+++     	 	AVQG444v7+++   	 	r   c                     g }ddd}| j         j        | j         j        fD ]!}|                     t          |||d           "d S )Nr'   r&   )ri   br   ro   )r.   r>   r?   r<   	TypeError)r   rK   yfs       r   test_insort_keynotNonez!TestBisect.test_insort_keynotNone  s^    !+)4;+CD 	= 	=AiAq<<<<	= 	=r   N)rM   )r   r    r!   r2   r9   rA   rF   rL   rZ   ra   rc   rk   r{   r   r   r"   r   r   r$   r$       s        Q
 Q
 Q
fC C C
M M MD D D7 7 7 4 4 4 4"E E E$G G GA A A  B  0= = = = =r   r$   c                       e Zd ZeZdS )TestBisectPythonNr   r    r!   	py_bisectr.   r"   r   r   r   r   
          FFFr   r   c                       e Zd ZeZdS )TestBisectCNr   r    r!   c_bisectr.   r"   r   r   r   r             FFFr   r   c                   "    e Zd ZddZd Zd ZdS )
TestInsort  c                 "   ddl m} t                      t                      fD ]k}t	          |          D ]6} |d          }|dv r| j        j        }n| j        j        } |||           7|                     t          |          |           ld S )Nr   )choice
012345678902468)
rT   r   rt   r   rE   r.   r>   r?   r4   rs   )r   r   r   insortedrX   digitr   s          r   test_vsBuiltinSortzTestInsort.test_vsBuiltinSort  s    !!!!!!, 	9 	9H1XX # #|,,G##/AA0A(E""""VH--x8888	9 	9r   c                 Z    |                      | j        j        | j        j                   d S r   )r4   r.   rj   r?   r   s    r   rc   z!TestInsort.test_backcompatibility  rd   r   c                      G d dt                     } |            }| j                            |d           | j                            |d           |                     ddg|j                   d S )Nc                       e Zd Zg Zd ZdS ))TestInsort.test_listDerived.<locals>.Listc                 <    | j                             ||           d S r   )r6   r   )r   indexr   s      r   r   z0TestInsort.test_listDerived.<locals>.List.insert%  s     	  -----r   N)r   r    r!   r6   r   r"   r   r   Listr   #  s(        D. . . . .r   r   r,   r-   )rt   r.   r>   r?   r4   r6   )r   r   lsts      r   test_listDerivedzTestInsort.test_listDerived"  s    	. 	. 	. 	. 	.4 	. 	. 	.
 dffR(((  a(((!R#(+++++r   N)r   )r   r    r!   r   rc   r   r"   r   r   r   r     sI        
9 
9 
9 
9G G G	, 	, 	, 	, 	,r   r   c                       e Zd ZeZdS )TestInsortPythonNr   r"   r   r   r   r   -  r   r   r   c                       e Zd ZeZdS )TestInsortCNr   r"   r   r   r   r   0  r   r   r   c                       e Zd Z	 d ZdS )LenOnlyc                     dS Nr,   r"   r   s    r   r   zLenOnly.__len__7      rr   N)r   r    r!   r   r"   r   r   r   r   5  &        @    r   r   c                       e Zd Z	 d ZdS )GetOnlyc                     dS r   r"   )r   ndxs     r   r   zGetOnly.__getitem__<  r   r   N)r   r    r!   r   r"   r   r   r   r   :  r   r   r   c                   *    e Zd Z	 d ZeZeZeZeZeZdS )CmpErrc                     t           r   )ZeroDivisionError)r   others     r   __lt__zCmpErr.__lt__A  s    r   N)	r   r    r!   r   __gt____le____ge____eq____ne__r"   r   r   r   r   ?  s9        A     FFFFFFFr   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestErrorHandlingc                     | j         j        | j         j        | j         j        | j         j        fD ]}|                     t          |dd            d S r   r.   r0   r/   r>   r?   r<   r   r   r   s     r   test_non_sequencez#TestErrorHandling.test_non_sequenceJ  sY    +)4;+C+)4;+CE 	4 	4AiB3333	4 	4r   c                     | j         j        | j         j        | j         j        | j         j        fD ]+}|                     t          |t                      d           ,d S r   )r.   r0   r/   r>   r?   r<   r   r   r   s     r   test_len_onlyzTestErrorHandling.test_len_onlyO  ]    +)4;+C+)4;+CE 	; 	;AiGIIr::::	; 	;r   c                     | j         j        | j         j        | j         j        | j         j        fD ]+}|                     t          |t                      d           ,d S r   )r.   r0   r/   r>   r?   r<   r   r   r   s     r   test_get_onlyzTestErrorHandling.test_get_onlyT  r   r   c                     t                      t                      t                      g}| j        j        | j        j        | j        j        | j        j        fD ]}|                     t          ||d            d S r   )r   r.   r0   r/   r>   r?   r<   r   )r   seqr   s      r   test_cmp_errzTestErrorHandling.test_cmp_errY  sr    xx688,+)4;+C+)4;+CE 	= 	=A/C<<<<	= 	=r   c                     | j         j        | j         j        | j         j        | j         j        fD ]}|                     t          |d           d S r   r   r   s     r   test_arg_parsingz"TestErrorHandling.test_arg_parsing_  sW    +)4;+C+)4;+CE 	0 	0AiB////	0 	0r   N)r   r    r!   r   r   r   r   r   r"   r   r   r   r   I  s_        4 4 4
; ; ;
; ; ;
= = =0 0 0 0 0r   r   c                       e Zd ZeZdS )TestErrorHandlingPythonNr   r"   r   r   r   r   d  r   r   r   c                       e Zd ZeZdS )TestErrorHandlingCNr   r"   r   r   r   r   g  r   r   r   c                       e Zd Zd Zd ZdS )TestDocExamplec                 j     g ddf fd	fddD             }                      |g d           d S )N)<   F   P   Z   FDCBAc                 J    j                             ||           }||         S r   )r.   r   )scorebreakpointsgradesrX   r   s       r   gradez)TestDocExample.test_grades.<locals>.graden  s$    "";66A!9r   c                 &    g | ]} |          S r"   r"   )rQ   r   r   s     r   rS   z.TestDocExample.test_grades.<locals>.<listcomp>r  s!    JJJ5%%,,JJJr   )!   c   M   r   Y   r   rH   )FACr   Br   r   )r4   )r   resultr   s   ` @r   test_gradeszTestDocExample.test_gradesm  sm    %5%5%5g 	 	 	 	 	 	 KJJJ,IJJJ!D!D!DEEEEEr   c                    g d}|                     d            d |D             }| j        j        }|                     | ||d                   d           |                     | ||d                   d           |                     | ||d	                   d
           |                     | ||d                   d           d S )N)redr-   bluer&   yellowr\   blackr   c                     | d         S )Nr&   r"   )rs    r   <lambda>z,TestDocExample.test_colors.<locals>.<lambda>w  s
    ! r   ro   c                     g | ]
}|d          S )r&   r"   )rQ   r   s     r   rS   z.TestDocExample.test_colors.<locals>.<listcomp>x  s    ###!###r   r   r   r&   r   r-   r   r\   r   )rU   r.   r0   r4   )r   r6   keysr0   s       r   test_colorszTestDocExample.test_colorsu  s    EEE		nn	%%%##d###k-kk$223\BBBkk$223[AAAkk$223Z@@@kk$223]CCCCCr   N)r   r    r!   r   r   r"   r   r   r   r   l  s:        F F FD D D D Dr   r   c                       e Zd ZeZdS )TestDocExamplePythonNr   r"   r   r   r   r     r   r   r   c                       e Zd ZeZdS )TestDocExampleCNr   r"   r   r   r   r     r   r   r   __main__)rC   unittesttest.supportr   collectionsr   import_fresh_moduler   r   objectr
   r$   TestCaser   r   r   r   r   r   r   r   r   r   r   r   r   r   r   mainr"   r   r   <module>r     sb   



  & & & & & &             .M-hLLL	,=,Xi[III% % % % %F % % %,h= h= h= h= h= h= h= h=T    z8#4       *h/   
, , , , , , , ,6    z8#4       *h/   
       
       
       0 0 0 0 0 0 0 06    /1B       *H,=   
D D D D D D D D&    >8+<       nh&7   
 zHMOOOOO r   