
    z%iB                        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y)Rangec                 .    || _         || _        d | _        y N)startstoplast_insert)selfr   r   s      D/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/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__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   )r1   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
ValueErrorr0   r/   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ranger4   r0   r/   )r   r@   r   r6   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.   rC   rD   r
   r4   r0   r/   r>   r   r?   )r   r@   r   r6   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&   )	randomrN   rE   sortr.   r0   len
assertTruer/   )r   r   rN   ijr6   r7   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&   )
r1   rE   minrQ   rR   r.   r0   r/   r4   max)r   r5   r6   r7   r8   lohirU   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   )r4   r.   r   r/   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,         (   rI      r&   r(   )arK   r[   r\   r'   )r,   rb   re   re   re   rc   rd   rI   )r4   r.   r0   r/   r   r>   r?   insort)r   r6   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+   rX   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=   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   )shufflerk      irb   r'   rl   )
rO   rz   r.   ro   rq   rE   r>   r4   rp   r?   )r   rz   r@   ru   r6   targetrK   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&   )rf   br   rl   )r.   r>   r?   r<   	TypeError)r   rK   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   rH   !   "   rE   r.   r0   r/   r4   r   r   rS   r6   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   rH   rd   )   r   r   s         r   test_lt_returns_notimplementedz)TestBisect.test_lt_returns_notimplemented  s    	, 	, $Cj)!))[[$$T1R51[[%%dAbE2R R 	 *r   N)re   )r   r    r!   r2   r9   rA   rF   rL   rV   r]   r_   rh   rx   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)
rO   r   rq   r   rE   r.   r>   r?   r4   rp   )r   r   r   insortedrS   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   )r4   r.   rg   r?   r   s    r   r_   z!TestInsort.test_backcompatibility;  r`   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   )r6   r   )r   indexr   s      r   r   z0TestInsort.test_listDerived.<locals>.List.insertA  s    		  -r   N)r   r    r!   r6   r   r"   r   r   Listr   ?  s    D.r   r   r,   r-   )rq   r.   r>   r?   r4   r6   )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y)LenOnlyc                      yNr,   r"   r   s    r   r   zLenOnly.__len__S      r   N)r   r    r!   r   r"   r   r   r   r   Q  
    @r   r   c                       e Zd Z	 d Zy)GetOnlyc                      yr   r"   )r   ndxs     r   r   zGetOnly.__getitem__X  r   r   N)r   r    r!   r   r"   r   r   r   r   V  r   r   r   c                   (    e Zd Z	 d ZeZeZeZeZeZy)CmpErrc                     t         r   )ZeroDivisionErrorr   s     r   r   zCmpErr.__lt__]  s    r   N)	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.   r0   r/   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.   r0   r/   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.   r0   r/   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.   r0   r/   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gradesrS   r   s       r   gradez)TestDocExample.test_grades.<locals>.grade  s#    "";6A!9r   )r   c   M   r   Y   r   rH   )Fr   Cr   Br   r   )r4   )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&   yellowrX   blackr   c                     | d   S )Nr&   r"   )rs    r   <lambda>z,TestDocExample.test_colors.<locals>.<lambda>  s
    ! r   rl   r&   r   r  r  r-   r  rX   r  )rP   r.   r0   r4   )r   r6   r
  keysr0   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__)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     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   