
    dafB                        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j8                          yy))    N)import_helper)UserListbisect_bisect)blocked)freshc                   (    e Zd ZdZd Zd Zd Zd Zy)Rangez:A trivial range()-like object that has an insert() method.c                 .    || _         || _        d | _        y N)startstoplast_insert)selfr   r   s      +/root/Python-3.12.4/Lib/test/test_bisect.py__init__zRange.__init__   s    
	    c                 4    | j                   | j                  z
  S r   )r   r   r   s    r   __len__zRange.__len__   s    yy4::%%r   c                     | 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    II

"71HC!8S/!zzCr   c                     ||f| _         y 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
   
   s    D 
& %r   r
   c                   b    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 Zd Zy)
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| _        y )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!   s	   P!
[[%%r1a0P!
[[%%sAq1P!
 [[%%sAq1P!
 [[%%sAq1	P!

 [[%%1vq!4P!
 [[%%1vq!4P!
 [[%%1vq!4P!
 [[%%y!Q7P!
 [[%%y!Q7P!
 [[%%y!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 [[%%y!Q71P!
2 [[%%y!Q73P!
4 [[%%y#q95P!
6 [[%%y!Q77P!
8 [[%%y#q99P!
: [[%%y!Q7;P!
< [[%%y!Q7=P!
> [[%%'Eq!L?P!
@ [[%%'Eq!LAP!
B [[%%'EsANCP!
D [[%%'Eq!LEP!
F [[%%'EsANGP!
H [[%%'Eq!LIP!
J [[%%'EsANKP!
L [[%%'Eq"MMP!
N [[%%'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!
` [[$$iA6aP!
b [[$$iA6cP!
d [[$$iA6eP!
f [[$$lAq9gP!
h [[$$lAq9iP!
j [[$$lAq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 [[$$lAq9wP!
x [[$$lAq9yP!
z [[$$lC;{P!
| [[$$lAq9}P!
~ [[$$lAq9P!
@ [[$$iA6AP!
B [[$$iA6CP!
D [[$$ia8EP!
F [[$$iA6GP!
H [[$$ia8IP!
J [[$$iA6KP!
L [[$$iA6MP!
N [[$$&DaKOP!
P [[$$&DaKQP!
R [[$$&Dc1MSP!
T [[$$&DaKUP!
V [[$$&Dc1MWP!
X [[$$&DaKYP!
Z [[$$&Dc1M[P!
\ [[$$&DaK]P!
^ [[$$&DaL_P!
r   c                     | j                   D ]B  \  }}}}| j                   |||      |       | j                   |t        |      |      |       D y r   )r2   assertEqualr   )r   funcdataelemexpecteds        r   test_precomputedzTestBisect.test_precomputedt   sT    *.*?*? 	C&D$hT$-x8T(4.$7B	Cr   c                 L   | j                   }| j                  t        |j                  g dddd       | j                  t        |j                  g dddd       | j                  t        |j
                  g dddd       | j                  t        |j                  g dddd       y )Nr+   r.   r)   )r/   assertRaises
ValueErrorr1   r0   insort_leftinsort_right)r   mods     r   test_negative_lozTestBisect.test_negative_loy   s    kk*cooy!RK*c&6&6	1b!L*cooy!RK*c&6&6	1b!Lr   c                    | j                   }t        j                  }t        |dz
        }| j	                  |j                  ||dz
        |dz
         | j	                  |j                  ||dz
        |dz
         | j	                  |j                  ||dz
  |dz
  |      |dz
         | j	                  |j                  ||dz
  |dz
  |      |dz
         y )Nr'   r)   r(   r-   )r/   sysmaxsizeranger5   r1   r0   )r   rA   r   r7   s       r   test_large_rangezTestBisect.test_large_range   s    kkKKQqSzqs3QqS9))$!4ac:qsAbD!<acB))$!QrT1=qsCr   c                    | j                   }t        j                  }t        d|dz
        }| j	                  |j                  ||dz
        |dz
         | j	                  |j                  ||dz
        |dz
         | j	                  |j                  ||dz
  |dz
  |      |dz
         | j	                  |j                  ||dz
  |dz
  |      |dz
         |dz
  }|j                  |||dz
  |dz          | j	                  |j                  ||f       |dz
  }|j                  |||dz
  |dz          | j	                  |j                  |dz   |f       y )	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   sC   kkKKQ!}qs3QqS9))$!4ac:qsAbD!<acB))$!QrT1=qsCGaRR0))Aq62Gq!b&!b&1))AE1:6r   c           	      8   ddl m} t        |      D ]   }t        |      D cg c]  } |d|d       }}|j                           |d|dz         }| j                  j                  ||      }|t        |      k  r| j                  |||   k         |dkD  r| j                  ||dz
     |k         | j                  j                  ||      }|t        |      k  r| j                  |||   k         |dkD  s| j                  ||dz
     |k          y c c}w )Nr   )	randranger(   r<   r'   )	randomrO   rF   sortr/   r1   len
assertTruer0   )r   r   rO   ijr7   r8   ips           r   test_randomzTestBisect.test_random   s    $q 	4A05a91IaA&9D9IIKR1%D((t4BCI~R 01AvRT
T 12))$5BCI~tBx0AvRT
d 23	49s   Dc                    | j                   D ]}  \  }}}}t        d      D ]f  }t        t        |      |      }t        dd      D ]>  }t        t        |      |      } |||||      }| j	                  ||cxk  xr |k  nc        || j
                  j                  u r||k  r| j	                  |||   k         || j
                  j                  u r||kD  r| j	                  ||dz
     |k         || j
                  j                  u r||k  r| j	                  |||   k         || j
                  j                  u r||kD  r| j	                  ||dz
     |k         | j                  |t        |t        ||                   A i  y )Nr*   r)      r'   )
r2   rF   minrR   rS   r/   r1   r0   r5   max)r   r6   r7   r8   r9   lohirV   s           r   test_optionalSlicingzTestBisect.test_optionalSlicing   sk   *.*?*? 	E&D$hAh ETB'!* EBSY+BdD"b1BOOB"NN3t{{66627R(89t{{66627RT
T(9:t{{777BGtBx8t{{777BGRT
d(:;$$RRR1B)CDEE	Er   c                 x    | j                  | j                  j                  | j                  j                         y r   )r5   r/   r   r0   r   s    r   test_backcompatibilityz!TestBisect.test_backcompatibility   &    ++T[[-E-EFr   c                    g d}| j                  | j                  j                  |ddd      d       | j                  | j                  j                  |ddd      d       | j                  | j                  j	                  |ddd      d       | j                  j                  |ddd       | j                  j                  |ddd       | j                  j                  |ddd       | j                  |g d       y )N)r-         (   rJ      r'   r)   )arL   r\   r]   r(   )r-   rc   rf   rf   rf   rd   re   rJ   )r5   r/   r1   r0   r   r?   r@   insort)r   r7   s     r   test_keyword_argszTestBisect.test_keyword_args   s    #0042!0JAN11DB11KQO++dbQ1+EqI$"q9  42! :TRA!4?@r   c                    | j                   }t        }t        g d|      }t        t	        ||            }|D ]j  }| j                  |j                  |||      |j                  ||             | j                  |j                  |||      |j                  ||             l t        j                  }t        d|      }t        t	        ||            }|D ]j  }| j                  |j                  |||      |j                  ||             | j                  |j                  |||      |j                  ||             l y )N)r(   r,   rY   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=   kk 'W5s7C01  	AQG43   aW 5  !4	 ,,&G4s7C01  	AQG43   aW 5  !4	r   c                    ddl m} | j                  }t        }t	        t        dd            t	        t        ddd            z   } ||       g }|D ]3  }|j                  |||       | j                  t        ||      |       5 g }|D ]3  }|j                  |||       | j                  t        ||      |       5 y )	Nr   )shufflerl      irc   r(   rm   )
rP   r{   r/   rp   rr   rF   r?   r5   rq   r@   )r   r{   rA   rv   r7   targetrL   s          r   test_insortzTestBisect.test_insort   s    "kk E#rN#d5b!+<&== 	AOOFA7O3v7+	  	AVQG4v7+	r   c                     g }ddd}| j                   j                  | j                   j                  fD ]  }| j                  t        |||d        y )Nr(   r'   )rg   br   rm   )r/   r?   r@   r=   	TypeError)r   rL   yfs       r   test_insort_keynotNonez!TestBisect.test_insort_keynotNone  sR    !++))4;;+C+CD 	=AiAq<	=r   c                 .    G d d      }t        d      D cg c]
  } ||       }}| j                  j                  | |d            }| j                  j                  | |d            }| j	                  |d       | j	                  |d       y c c}w )Nc                       e Zd Zd Zd Zy).TestBisect.test_lt_returns_non_bool.<locals>.Ac                     || _         y r   valr   r   s     r   r   z7TestBisect.test_lt_returns_non_bool.<locals>.A.__init__  	    r   c                 <    | j                   |j                   k  rdS dS )Nnonempty r   r   others     r   __lt__z5TestBisect.test_lt_returns_non_bool.<locals>.A.__lt__  s    %)XX		%9zArAr   N)r   r    r!   r   r   r#   r   r   Ar     s    Br   r   rI   !   "   rF   r/   r1   r0   r5   r   r   rT   r7   i1i2s         r   test_lt_returns_non_boolz#TestBisect.test_lt_returns_non_bool
  s    	B 	B $Cj)!))[[$$T1R51[[%%dAbE2R R 	 *   Bc                 .    G d d      }t        d      D cg c]
  } ||       }}| j                  j                  | |d            }| j                  j                  | |d            }| j	                  |d       | j	                  |d       y c c}w )Nc                       e Zd Zd Zd Zd Zy)4TestBisect.test_lt_returns_notimplemented.<locals>.Ac                     || _         y r   r   r   s     r   r   z=TestBisect.test_lt_returns_notimplemented.<locals>.A.__init__  r   r   c                     t         S r   )NotImplementedr   s     r   r   z;TestBisect.test_lt_returns_notimplemented.<locals>.A.__lt__  s    %%r   c                 4    | j                   |j                   kD  S r   r   r   s     r   __gt__z;TestBisect.test_lt_returns_notimplemented.<locals>.A.__gt__  s    xx%))++r   N)r   r    r!   r   r   r   r#   r   r   r   r     s    &,r   r   rI   re   )   r   r   s         r   test_lt_returns_notimplementedz)TestBisect.test_lt_returns_notimplemented  s    	, 	, $Cj)!))[[$$T1R51[[%%dAbE2R R 	 *r   N)rf   )r   r    r!   r3   r:   rB   rG   rM   rW   r^   r`   ri   ry   r~   r   r   r   r#   r   r   r%   r%       sQ    Q
fC
MD7 4"E$GAB0=!!r   r%   c                       e Zd ZeZy)TestBisectPythonNr   r    r!   	py_bisectr/   r#   r   r   r   r   &      Fr   r   c                       e Zd ZeZy)TestBisectCNr   r    r!   c_bisectr/   r#   r   r   r   r   )      Fr   r   c                        e Zd ZddZd Zd Zy)
TestInsortc                    ddl m} t               t               fD ]o  }t	        |      D ]D  } |d      }|dv r| j
                  j                  }n| j
                  j                  } |||       F | j                  t        |      |       q y )Nr   )choice
012345678902468)
rP   r   rr   r   rF   r/   r?   r@   r5   rq   )r   r   r   insortedrT   digitr   s          r   test_vsBuiltinSortzTestInsort.test_vsBuiltinSort/  s    !, 	9H1X #|,G#//A00A(E"# VH-x8	9r   c                 x    | j                  | j                  j                  | j                  j                         y r   )r5   r/   rh   r@   r   s    r   r`   z!TestInsort.test_backcompatibility;  ra   r   c                      G d dt               } |       }| j                  j                  |d       | j                  j                  |d       | j	                  ddg|j
                         y )Nc                       e Zd Zg Zd Zy))TestInsort.test_listDerived.<locals>.Listc                 <    | j                   j                  ||       y r   )r7   r   )r   indexr   s      r   r   z0TestInsort.test_listDerived.<locals>.List.insertA  s    		  -r   N)r   r    r!   r7   r   r#   r   r   Listr   ?  s    D.r   r   r-   r.   )rr   r/   r?   r@   r5   r7   )r   r   lsts      r   test_listDerivedzTestInsort.test_listDerived>  sW    	.4 	.
 fR(  a(!R#((+r   N)i  )r   r    r!   r   r`   r   r#   r   r   r   r   .  s    
9G	,r   r   c                       e Zd ZeZy)TestInsortPythonNr   r#   r   r   r   r   I  r   r   r   c                       e Zd ZeZy)TestInsortCNr   r#   r   r   r   r   L  r   r   r   c                       e Zd ZdZd Zy)LenOnlyz:Dummy sequence class defining __len__ but not __getitem__.c                      yNr-   r#   r   s    r   r   zLenOnly.__len__S      r   N)r   r    r!   r"   r   r#   r   r   r   r   Q  
    @r   r   c                       e Zd ZdZd Zy)GetOnlyz:Dummy sequence class defining __getitem__ but not __len__.c                      yr   r#   )r   ndxs     r   r   zGetOnly.__getitem__X  r   r   N)r   r    r!   r"   r   r#   r   r   r   r   V  r   r   r   c                   *    e Zd ZdZd ZeZeZeZeZeZ	y)CmpErrz;Dummy element that always raises an error during comparisonc                     t         r   )ZeroDivisionErrorr   s     r   r   zCmpErr.__lt__]  s    r   N)
r   r    r!   r"   r   r   __le____ge____eq____ne__r#   r   r   r   r   [  s#    A FFFFFr   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestErrorHandlingc                     | j                   j                  | j                   j                  | j                   j                  | j                   j                  fD ]  }| j                  t        |dd        y r   r/   r1   r0   r?   r@   r=   r   r   r   s     r   test_non_sequencez#TestErrorHandling.test_non_sequencef  sZ    ++))4;;+C+C++))4;;+C+CE 	4AiB3	4r   c                     | j                   j                  | j                   j                  | j                   j                  | j                   j                  fD ]"  }| j                  t        |t               d       $ y r   )r/   r1   r0   r?   r@   r=   r   r   r   s     r   test_len_onlyzTestErrorHandling.test_len_onlyk  \    ++))4;;+C+C++))4;;+C+CE 	;AiGIr:	;r   c                     | j                   j                  | j                   j                  | j                   j                  | j                   j                  fD ]"  }| j                  t        |t               d       $ y r   )r/   r1   r0   r?   r@   r=   r   r   r   s     r   test_get_onlyzTestErrorHandling.test_get_onlyp  r   r   c                 $   t               t               t               g}| j                  j                  | j                  j                  | j                  j                  | j                  j
                  fD ]  }| j                  t        ||d        y r   )r   r/   r1   r0   r?   r@   r=   r   )r   seqr   s      r   test_cmp_errzTestErrorHandling.test_cmp_erru  sm    x68,++))4;;+C+C++))4;;+C+CE 	=A/C<	=r   c                     | j                   j                  | j                   j                  | j                   j                  | j                   j                  fD ]  }| j                  t        |d        y r   r   r   s     r   test_arg_parsingz"TestErrorHandling.test_arg_parsing{  sX    ++))4;;+C+C++))4;;+C+CE 	0AiB/	0r   N)r   r    r!   r   r   r   r   r   r#   r   r   r   r   e  s    4
;
;
=0r   r   c                       e Zd ZeZy)TestErrorHandlingPythonNr   r#   r   r   r   r     r   r   r   c                       e Zd ZeZy)TestErrorHandlingCNr   r#   r   r   r   r     r   r   r   c                       e Zd Zd Zd Zy)TestDocExamplec                 v     g ddf fd	}dD cg c]
  } ||       }} j                  |g d       y c c}w )N)<   F   P   Z   FDCBAc                 F    j                   j                  ||       }||   S r   )r/   r   )scorebreakpointsgradesrT   r   s       r   gradez)TestDocExample.test_grades.<locals>.grade  s#    "";6A!9r   )r   c   M   r   Y   r   rI   )Fr   Cr   Br   r   )r5   )r   r   r   results   `   r   test_gradeszTestDocExample.test_grades  s>    %5g 	 -JJ5%,JJ!DE Ks   6c                 l   g d}|j                  d        |D cg c]  }|d   	 }}| j                  j                  }| j                  | ||d         d       | j                  | ||d         d       | j                  | ||d         d	       | j                  | ||d
         d       y c c}w )N)redr.   bluer'   yellowrY   blackr   c                     | d   S )Nr'   r#   )rs    r   <lambda>z,TestDocExample.test_colors.<locals>.<lambda>  s
    ! r   rm   r'   r   r  r  r.   r  rY   r  )rQ   r/   r1   r5   )r   r7   r  keysr1   s        r   test_colorszTestDocExample.test_colors  s    E		n	%"#!##kk--k$23\Bk$23[Ak$23Z@k$23]C $s   B1N)r   r    r!   r   r  r#   r   r   r   r     s    FDr   r   c                       e Zd ZeZy)TestDocExamplePythonNr   r#   r   r   r  r    r   r   r  c                       e Zd ZeZy)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     sR   
  &   .M--hL	,=,,Xi[I%F %,D! D!Lz8#4#4 *h// 
, ,6z8#4#4 *h// 
 
 
 0 06/1B1B *H,=,= 
D D&>8+<+< nh&7&7 
 zHMMO r   