
    ;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 ZdS )Rangez:A trivial range()-like object that has an insert() method.c                 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____doc__r   r   r   r    r   r   r
   r
   
   sV        D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   )r2   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
ValueErrorr1   r0   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ranger5   r1   r0   )r   rA   r   r7   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/   rD   rE   r
   r5   r1   r0   r?   r   r@   )r   rA   r   r7   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   rP   s     r   
<listcomp>z*TestBisect.test_random.<locals>.<listcomp>   s'    9991IIaA&&999r   r<   r'   )	randomrP   rF   sortr/   r1   len
assertTruer0   )r   r   ir7   r8   iprP   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'   )
r2   rF   minrW   rX   r/   r1   r0   r5   max)r   r6   r7   r8   r9   lohirZ   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   )r5   r/   r   r0   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-         (   rJ   rN   r'   r)   )arL   r`   ra   r(   )r-   rg   rN   rN   rN   rh   ri   rJ   )r5   r/   r1   r0   r   r?   r@   insort)r   r7   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mapr5   r1   r0   strcasefold)r   rA   keyfuncarrprecomputed_arrrL   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   )shufflero      irg   r(   rp   )
rU   r~   r/   rs   ru   rF   r?   r5   rt   r@   )r   r~   rA   ry   r7   targetrL   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'   )rj   br   rp   )r/   r?   r@   r=   	TypeError)r   rL   yfs       r   test_insort_keynotNonez!TestBisect.test_insort_keynotNone  s^    !+)4;+CD 	= 	=AiAq<<<<	= 	=r   N)rN   )r   r    r!   r3   r:   rB   rG   rM   r[   rb   rd   rl   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)
rU   r   ru   r   rF   r/   r?   r@   r5   rt   )r   r   r   insortedrY   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   )r5   r/   rk   r@   r   s    r   rd   z!TestInsort.test_backcompatibility  re   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   )r7   r   )r   indexr   s      r   r   z0TestInsort.test_listDerived.<locals>.List.insert%  s     	  -----r   N)r   r    r!   r7   r   r#   r   r   Listr   #  s(        D. . . . .r   r   r-   r.   )ru   r/   r?   r@   r5   r7   )r   r   lsts      r   test_listDerivedzTestInsort.test_listDerived"  s    	. 	. 	. 	. 	.4 	. 	. 	.
 dffR(((  a(((!R#(+++++r   N)r   )r   r    r!   r   rd   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 ZdS )LenOnlyz:Dummy sequence class defining __len__ but not __getitem__.c                     dS Nr-   r#   r   s    r   r   zLenOnly.__len__7      rr   N)r   r    r!   r"   r   r#   r   r   r   r   5  )        @@    r   r   c                       e Zd ZdZd ZdS )GetOnlyz:Dummy sequence class defining __getitem__ but not __len__.c                     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   r   c                   ,    e Zd ZdZd ZeZeZeZeZeZ	dS )CmpErrz;Dummy element that always raises an error during comparisonc                     t           r   )ZeroDivisionError)r   others     r   __lt__zCmpErr.__lt__A  s    r   N)
r   r    r!   r"   r   __gt____le____ge____eq____ne__r#   r   r   r   r   ?  s<        A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/   r1   r0   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/   r1   r0   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/   r1   r0   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/   r1   r0   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gradesrY   r   s       r   gradez)TestDocExample.test_grades.<locals>.graden  s$    "";66A!9r   c                 &    g | ]} |          S r#   r#   )rR   r   r   s     r   rT   z.TestDocExample.test_grades.<locals>.<listcomp>r  s!    JJJ5%%,,JJJr   )!   c   M   r   Y   r   rI   )FACr   Br   r   )r5   )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   rp   c                     g | ]
}|d          S )r'   r#   )rR   r   s     r   rT   z.TestDocExample.test_colors.<locals>.<listcomp>x  s    ###!###r   r   r   r'   r   r.   r   r]   r   )rV   r/   r1   r5   )r   r7   keysr1   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__)rD   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   