o
    g-                    @   s  	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Zd dl
mZ d dl
mZ d dlZd dlZd dl
mZmZ d dlmZ ejjrXdd Zndd ZG d	d
 d
ZG dd dZG dd dee	jZG dd dee	jZG dd de	jZG dd de	jZG dd dejjZ G dd de e	jZ!G dd de e	jZ"G dd dZ#G dd de$Z%G dd  d e&Z'G d!d" d"e&Z(G d#d$ d$e#e	jZ)G d%d& d&e#e	jZ*e+d'kre	,  dS dS )(    N)import_helper)warnings_helper)bigaddrspacetestMAX_Py_ssize_t)assert_python_failurec                    s   t   fdd}|S )Nc                     s@   t dtf  | i |W  d    S 1 sw   Y  d S N r   Zcheck_warningsBytesWarning)argskwfunc E/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_bytes.pywrapper   s   $z%check_bytes_warnings.<locals>.wrapper)	functoolswraps)r   r   r   r   r   check_bytes_warnings   s   r   c                 C   s   | S Nr   r   r   r   r   r   $      c                   @   s   e Zd ZdddZdd ZdS )	Indexabler   c                 C   s
   || _ d S r   value)selfr   r   r   r   __init__)      
zIndexable.__init__c                 C   s   | j S r   r   r   r   r   r   	__index__+   s   zIndexable.__index__N)r   )__name__
__module____qualname__r   r   r   r   r   r   r   (   s    
r   c                   @   sD  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zedd Zdd Zdd Zedd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2d]d^ Z3d_d` Z4dadb Z5dcdd Z6dedf Z7dgdh Z8didj Z9dkdl Z:dmdn Z;dodp Z<dqdr Z=dsdt Z>dudv Z?dwdx Z@dydz ZAd{d| ZBd}d~ ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdS )BaseBytesTestc                 C   s.   |   }| t|| j  | |j| j  d S r   )	type2testassertEqualtype	__class__r   br   r   r   test_basics1   s   zBaseBytesTest.test_basicsc                 C   sH   |  d}tjtjfD ]}||}| || | t|t| qd S N   abcd)r#   copydeepcopyr$   r%   r   aZcopy_methodr(   r   r   r   	test_copy6   s   
zBaseBytesTest.test_copyc                    s   |    | t d | t fdd | t fdd | t fdd | t fdd | t fdd | t fdd | t fd	d | t fd
d | t fdd | t fdd | t fdd d S )Nr   c                          d S )Nr   r   r   r(   r   r   <lambda>@       z3BaseBytesTest.test_empty_sequence.<locals>.<lambda>c                      r1   N   r   r   r2   r   r   r3   A   r4   c                      s
    t j S r   sysmaxsizer   r2   r   r   r3   B      
 c                      s    t jd  S r5   r7   r   r2   r   r   r3   C       c                      s    dd  S N
   d   r   r   r2   r   r   r3   D       c                      r1   Nr   r   r2   r   r   r3   E   r4   c                      r1   )Nr   r   r2   r   r   r3   F   r4   c                      s    t j  S r   r7   r   r2   r   r   r3   G   r?   c                          t j d  S r5   r7   r   r2   r   r   r3   H       c                      rC   )N   r7   r   r2   r   r   r3   I   rD   c                      s    dd   S r<   r   r   r2   r   r   r3   J   r;   )r#   r$   lenassertRaises
IndexErrorr   r   r2   r   test_empty_sequence=   s   z!BaseBytesTest.test_empty_sequencec                 C   s  |  td}| t|d | t|ttd |  dh}| |d |  ddh}| t|ddh |  ttd}| t|d | t|ttd |  dd	 tdD }| t|d
 | t|ttddd d  G dd d}|  | }| |d d S )N   *      *+   -   )rM   rN   )rN   rM   c                 s   s    | ]	}|d  r|V  qdS )rE   Nr   .0ir   r   r   	<genexpr>]   s    z3BaseBytesTest.test_from_iterable.<locals>.<genexpr>   r6   rE   c                   @      e Zd Zdd ZdS )z+BaseBytesTest.test_from_iterable.<locals>.Sc                 S   s   d| S )Nr6   rE      r   )r   rQ   r   r   r   __getitem__c      z7BaseBytesTest.test_from_iterable.<locals>.S.__getitem__N)r   r    r!   rW   r   r   r   r   Sb       rY      )r#   ranger$   rF   listassertIntupleiter)r   r(   rY   r   r   r   test_from_iterableL   s    "z BaseBytesTest.test_from_iterablec                 C   sT   |  ttd}| t|d | t|ttd |  d}| |d d S NrJ   rU   r[   )r#   r_   r\   r$   rF   r]   r'   r   r   r   test_from_tupleh   s
   
zBaseBytesTest.test_from_tuplec                 C   sX   |  ttd}| t|d | t|ttd |  g d}| |d d S rb   )r#   r]   r\   r$   rF   r'   r   r   r   test_from_listp   s
   zBaseBytesTest.test_from_listc                    s\   G  fddd}| | g |  t d G  fddd}| g |  t d d S )Nc                          e Zd Z fddZdS )z0BaseBytesTest.test_from_mutating_list.<locals>.Xc                    s       dS NrK   )clearr   r/   r   r   r   {   s   z:BaseBytesTest.test_from_mutating_list.<locals>.X.__index__Nr   r    r!   r   r   rh   r   r   Xz       rj   rL   c                       re   )z0BaseBytesTest.test_from_mutating_list.<locals>.Yc                    s   t  dk r |  dS )N  rK   )rF   appendr   rh   r   r   r      s   
z:BaseBytesTest.test_from_mutating_list.<locals>.Y.__index__Nri   r   rh   r   r   Y   rk   rn   s  ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************r$   bytes)r   rj   rn   r   rh   r   test_from_mutating_listx   s   z%BaseBytesTest.test_from_mutating_listc                 C   sd   |  t tdtdtdg}| t|g d | t| j tdg | t| j tdg d S )Nr6         r   r6   rr   rs   rA   rJ   )r#   r   r$   r]   rG   
ValueErrorr'   r   r   r   test_from_index   s   zBaseBytesTest.test_from_indexc                 C   sb   |  tdg d}| |d |  d}| |d G dd dt}| |  |dd d S )NBrU   r[   c                   @   rT   )z)BaseBytesTest.test_from_buffer.<locals>.Bc                 S   s   t r   )	TypeErrorr   r   r   r   r      r   z3BaseBytesTest.test_from_buffer.<locals>.B.__index__Nri   r   r   r   r   rw      rZ   s   foobar)r#   arrayr$   rp   )r   r/   rw   r   r   r   test_from_buffer   s   
zBaseBytesTest.test_from_bufferc                 C   s   |  | dd |  | dd |  | dd | t| jd |  | dd	d
 |  | d
d
 | t| jtjd  d S )Nr       r6          s        rA   0ascii   0)r$   r#   rG   ru   OverflowErrorr8   r9   r   r   r   r   test_from_ssize   s   zBaseBytesTest.test_from_ssizec                 C   s&  |  t| jd G dd d}|  t| jdg |  t| jdg |  t| jd g |  t| j| g | j t| jdd | j t| jdd |  t| jd	d |  t| jd
d | j t| jd	dd | j t| jd
dd |  t| jd | j t| jddd |  t| jdd |  t| jddd d S )Ng        c                   @      e Zd ZdS )z5BaseBytesTest.test_constructor_type_errors.<locals>.CNr   r    r!   r   r   r   r   C       r   r~   r   )encodingignore)errorsr   r{   r   s   asciis   ignore)rG   rx   r#   )r   r   r   r   r   test_constructor_type_errors   s    z*BaseBytesTest.test_constructor_type_errorsc                 C   s   |  t| jdg |  t| jtj g |  t| jtj d g |  t| jtj d g |  t| jdd  g |  t| jdg |  t| jdg |  t| jtjg |  t| jtjd g |  t| jdd g d S )NrA   r6   rE   r=   r>   rJ   i  )rG   ru   r#   r8   r9   r   r   r   r   test_constructor_value_errors   s   z+BaseBytesTest.test_constructor_value_errorsc              	   C   sD   t }| ttf| j| z	t|d  W d S  ttfy!   Y d S w )N   )r   rG   r   MemoryErrorr#   	bytearray)r   sizer   r   r   test_constructor_overflow   s   z'BaseBytesTest.test_constructor_overflowc                 C   sX   G dd d}|  t| j|  |  t| j| g G dd d}|  t| j|  d S )Nc                   @   rT   )z9BaseBytesTest.test_constructor_exceptions.<locals>.BadIntc                 S      dd  d S Nr6   r   r   r   r   r   r   r         zCBaseBytesTest.test_constructor_exceptions.<locals>.BadInt.__index__Nri   r   r   r   r   BadInt   rZ   r   c                   @   rT   )z>BaseBytesTest.test_constructor_exceptions.<locals>.BadIterablec                 S   r   r   r   r   r   r   r   __iter__   r   zGBaseBytesTest.test_constructor_exceptions.<locals>.BadIterable.__iter__N)r   r    r!   r   r   r   r   r   BadIterable   rZ   r   )rG   ZeroDivisionErrorr#   )r   r   r   r   r   r   test_constructor_exceptions   s
   z)BaseBytesTest.test_constructor_exceptionsc                 C   s  |  g d}|  g d}|  ddg}| || | ||k | ||k | ||k | ||k  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k  | ||k  | ||k d S )NrU   r6   rV   )r#   r$   
assertTrueassertFalse)r   b1b2b3r   r   r   test_compare   s&   zBaseBytesTest.test_comparec                 C   s   |  | ddkd |  | ddkd |  | ddkd |  | ddkd |  |  t kd |  |  t kd d S )Ns    a b cabcFs      a   b   cs   a b c s   a   b   c   T)r$   r#   strr   r   r   r   test_compare_to_str   s   z!BaseBytesTest.test_compare_to_strc                 C   s<   t ttd}| |}t t|}|  | || d S )NHello)r]   mapordr#   reversedreverser$   )r   inputr(   outputr   r   r   test_reversed  s
   
zBaseBytesTest.test_reversedc                    sP   fdd}|d}  |d d |d   |dd |d   |dd |d	   |dd  |d
   |dd |d
   |dd |d
   |d d |d   |dd |d   |dd |d	   |dd  |d
   |dd |d
   |dd |d
   |dd |d d S )Nc                    s     tt| S r   )r#   r   r   sr   r   r   by  s   z'BaseBytesTest.test_getslice.<locals>.byHello, worldr}   r   r6   Zello   z, world   r>   i)r$   r   r   r(   r   r   r   test_getslice  s   zBaseBytesTest.test_getslicec                 C   s   t td}| |}dd ddddtjddd	d
f}|D ]#}|D ]}|dd  D ]}| |||| | ||||  q'qqd S )Nrs   r   r6   rV      r>   rA   rB   r   )r]   r\   r#   r8   r9   r$   )r   Lr(   indicesstartstopstepr   r   r   test_extended_getslice   s   
(z$BaseBytesTest.test_extended_getslicec              	   C   sr   d}dD ]}|  ||}| ||  || q| t| j |d |  |dd}| ||  |d d d d S )N   Hello world
ሴ噸骼utf-8zutf-16latin-1r   r   )r#   r$   encoderG   UnicodeEncodeErrorr   sampleencr(   r   r   r   test_encoding+  s    zBaseBytesTest.test_encodingc                 C   s   d}dD ]}|  ||}| ||| qd}|  |d}| t|jd | |ddd | |jdddd | |  d	 d
 d S )Nr   r   u   Hello world
þÿr   r   r   zHello world
)r   r   s   ☃u   ☃)r#   r$   decoderG   UnicodeDecodeErrorr   r   r   r   test_decode4  s   zBaseBytesTest.test_decodec                 C   sd   d}d}t d| jj d|d|d|d|d|d	|d
}tddd|}| |jd| d S )NzBoom, Shaka Laka, Boom!)r   utf8latin1z0
            import sys
            type2test = z
            encodings = zr

            for data in ('', 'short string'):
                try:
                    type2test(data, encoding=z)
                except LookupError:
                    pass
                else:
                    sys.exit(21)

                for encoding in encodings:
                    try:
                        type2test(data, encoding=encoding, errors=a>  )
                    except LookupError:
                        pass
                    else:
                        sys.exit(22)

            for data in (b'', b'short string'):
                data = type2test(data)
                print(repr(data))
                try:
                    data.decode(encoding=z)
                except LookupError:
                    sys.exit(10)
                else:
                    sys.exit(23)

                try:
                    data.decode(errors=z)
                except LookupError:
                    pass
                else:
                    sys.exit(24)

                for encoding in encodings:
                    try:
                        data.decode(encoding=encoding, errors=z)
                    except LookupError:
                        pass
                    else:
                        sys.exit(25)

            sys.exit(10)
        z-Xdevz-cr=   )textwrapdedentr#   r   r   r$   rc)r   invalidZ	encodingscodeprocr   r   r   test_check_encoding_errorsB  s&    (
0z(BaseBytesTest.test_check_encoding_errorsc                 C   sb   |  d}| ||    |  d}| ||  dgd  |  d}| ||  dgd  d S )Nr   r=   i'  )r#   r$   r'   r   r   r   test_from_intz  s   


zBaseBytesTest.test_from_intc                    sx   |  d |  d|   d |  td d | td  d | t fdd | tfdd d S )N   abc   def   abcdefs   defabcc                      s    d S )Ndefr   r   )r   r   r   r3     r4   z+BaseBytesTest.test_concat.<locals>.<lambda>c                      s   d  S )Nr   r   r   )r   r   r   r3     r4   )r#   r$   rp   rG   rx   r   r   )r   r   r   test_concat  s   

zBaseBytesTest.test_concatc              	      s   d|  dfD ]f |  d d |  d d |  d d | t fdd | t fd	d | ttf  tj }W d    n1 sLw   Y  | ttf  tj9  W d    q1 shw   Y  qd S )
Nr   rV   	   abcabcabcr   r{   rA   c                      s    d S NgQ	@r   r   r2   r   r   r3     r4   z+BaseBytesTest.test_repeat.<locals>.<lambda>c                      s   d  S r   r   r   r2   r   r   r3     r4   )r#   r$   rG   rx   r   r   r8   r9   r   cr   r2   r   test_repeat  s   zBaseBytesTest.test_repeatc                 C   s*   |  | dd | tdgd  d S )N   xr>   x)r$   r#   r   r   r   r   r   test_repeat_1char  s   *zBaseBytesTest.test_repeat_1charc                    st  |  d | td  | ttd  | d  | t fdd | t fdd | t fdd | t fdd | t fd	d | t fd
d tt	fD ]Z}| |d  | |d  | |d  | |d  | |d  | |d  | |d  | |d  | |d  | |d  | |d  q]d S )Nr   r/      c                         d v S )N,  r   r   r2   r   r   r3     r4   z-BaseBytesTest.test_contains.<locals>.<lambda>c                      r   r@   r   r   r2   r   r   r3     r4   c                      s   t jd  v S r5   r7   r   r2   r   r   r3     r;   c                      s   d  v S r   r   r   r2   r   r   r3     r4   c                      s   t td v S Nr/   )floatr   r   r2   r   r   r3     rD   c                      r   r   r   r   r2   r   r   r3     r4   r{      a   b   c   ab   bc   ac   ds   dabs   abd)
r#   r^   r   intZassertNotInrG   ru   rx   rp   r   r   fr   r2   r   test_contains  s.   
zBaseBytesTest.test_containsc              	   C   s  |  t| jj |  t| jjd | | jd|   tg d}| | jd| | | jd| | | jd| dD ]}| | j||   qCdD ]}|  t| jj| qT| | jd	d
 |  t| jjd |  t| jjd |  t| jjd |  t| jjd |  t| jjd |  t| jjd dD ]*\}}|  t}| j| W d    n1 sw   Y  | d| t|j	 qd S )Nr6   r      rM   0   1a2B30z  1A 2B  30   z
 1A
2B	30z	
 u       Z0000s     s   1Br/   Zrtz1a b cd z12       34))z12 x4 56rV   )z12 3x 56r   )z12 xy 56rV   )u	   12 3ÿ 56r   zat position %s)
rG   rx   r#   fromhexr$   r   ru   r^   r   	exception)r   r(   r   dataposcmr   r   r   test_fromhex  s0   
zBaseBytesTest.test_fromhexc                 C   s~   |  t| jj |  t| jjd | | d d | tg d d | | d d | td d d S )Nr6   r{   r   r   Z1a2b30   +0)rG   rx   r#   hexr$   r   
memoryviewr   r   r   r   test_hex  s   zBaseBytesTest.test_hexc                 C   s  |  d}| | d | t |d W d    n1 s"w   Y  | t |d W d    n1 s<w   Y  | |ddd | t |d d W d    n1 saw   Y  | t |d W d    n1 s{w   Y  | t |d W d    n1 sw   Y  | t |d	 W d    n1 sw   Y  | t |td
 W d    n1 sw   Y  | |ddd | |dd | |dd | |dd | |dd | |ddd | |ddd | |ddd | |dd | |dd | |ddd | |ddd | |ddd | |ddd | |ddd d}| |dd d! d S )"Ns   Zb901efr   xx:r      ÿ      rJ   r|   zb9 01 efr      zb901efrV   r   zb9:01:ef   $zb9$01$efr6   rA   rE   zb9:01ef*rB   zb901*efs    {s   worldi   s   helloi   0.   zC7b7305000000776f.726c646902000000.730500000068656c.6c6f690100000030)r#   r$   r   rG   ru   rx   chr)r   Zthree_bytesr   r   r   r   test_hex_separator_basics  sR   
z'BaseBytesTest.test_hex_separator_basicsc                 C   s$   |  tdd}| | d d S )NZ   _   Z
5a5b5c5d5er#   r\   r$   r   )r   Z
five_bytesr   r   r   test_hex_separator_five_bytes  s   z+BaseBytesTest.test_hex_separator_five_bytesc                 C   s  |  dd tddD }| | d | |ddd | |dd	d
 | |ddd | |ddd | |ddd | |ddd | |ddd | |ddd | |ddd | |ddd | |ddd | |ddd d S )Nc                 s   s    | ]}|d  V  qdS )rV   Nr   rP   r   r   r   r   rR   
      z=BaseBytesTest.test_hex_separator_six_bytes.<locals>.<genexpr>r6   r   Z0306090c0f12r  z03.06.09.0c.0f.12 rE   z0306 090c 0f12-rV   z030609-0c0f12r  r   z0306:090c0f12r}   z03:06090c0f12   r  _r   Z030609_0c0f12r
  z0306090c:0f12   @r   z0306090c0f@12iir  )r   Z	six_bytesr   r   r   test_hex_separator_six_bytes	  s   z*BaseBytesTest.test_hex_separator_six_bytesc                 C   s  |  | dg d |  | ddgd dgddgddgg dfD ]2}tt| j|}|  | d|d |  | dt|d |  | dt|d q&| dj}|  |dd	gd
 |  |tdd	gd
 |  |dtd	gd
 |  |tdd	gd
 |  |dtd	gd
 dgd }ddd  }|  ||| dgd }dd }|  | d|| | 	t
| djd  | 	t
 |tdddg W d    n1 sw   Y  | 	t
 |tdddg W d    d S 1 sw   Y  d S )Nr{   r   r   r   r   r   )r   r   r   s   .:s   cds   ab.:cdi s   .:abci     Zcds   ef)r$   r#   joinr]   r   r_   r`   r  r   rG   rx   )r   ZlstZdot_joinseqZexpectedr   r   r   	test_join  s4   

$zBaseBytesTest.test_joinc                 C   s  |  d}d}d}d}| |dd | |dd | |d	d
 | ||d | ||d
 | |ddd | |ddd | |dddd | |dddd | ||dd | ||dd | ||ddd | ||ddd d S )N   mississippii   p   w      ir      ssrE      wr   r     pr6   rV   r   	   )r#   r$   count)r   r(   rQ   pwr   r   r   
test_count7  s"   
zBaseBytesTest.test_countc                 C   s   |  d}| |   d | |d | |d | |d | |d | |d | t}|dg W d    n1 sMw   Y  t|j}| d| | d| d S )	N   hello   anythings   hel   hs   hellows   harp   r_   )	r#   r   
startswithr   rG   rx   r   r   r^   r   r(   r   excr   r   r   test_startswithN  s   

zBaseBytesTest.test_startswithc                 C   s   |  d}| t d | |d | |d | |d | |d | |d | t}|dg W d    n1 sLw   Y  t|j}| 	d| | 	d| d S )	Nr.  r/  s   llo   os   whellos   norp   r_   )
r#   r   r   endswithr   rG   rx   r   r   r^   r2  r   r   r   test_endswith\  s   

zBaseBytesTest.test_endswithc                 C   s  |  d}d}d}| |dd | |dd | |dd | ||d	 | ||d | |dd
d | |dd	dd | |dd	d
d | ||dd | ||d	d
d	 | ||d	d
d ddtjd	 fD ]}| td|j| q~d S )Nr!  r"  r$  r&  rE   r'  rA      mississippianr6   rV   r}   r   r  rJ   zbyte must be in range\(0, 256\))r#   r$   findr8   r9   assertRaisesRegexru   )r   r(   rQ   r,  indexr   r   r   	test_findj  s(   
zBaseBytesTest.test_findc                 C   s   |  d}d}d}| |dd | |dd | |dd | ||d	 | ||d | |dd
d | |dddd | ||dd
d | ||d
dd | ||dd
d d S )Nr!  r"  r$  r&  r}   r'  rA   r8  r=   rV   r   r  rE   r6   r)  r   )r#   r$   rfindr   r(   rQ   r,  r   r   r   
test_rfind  s   
zBaseBytesTest.test_rfindc                 C   s   |  d}d}d}| |dd | t|jd | t|jd | ||d | t|j| | |dd	d
 | |dddd | t|jddd	 | ||dd | ||dd	d | t|j|dd	 d S )Nr!  r"  r$  r&  rE   r'  r8  r6   rV   r}   r   r  )r#   r$   r;  rG   ru   r>  r   r   r   
test_index  s   
zBaseBytesTest.test_indexc                 C   s   |  d}d}d}| |dd | t|jd | t|jd | ||d | t|j| | |dd	d | |dd
dd | ||dd	d | ||d	dd | t|j|dd	 d S )Nr!  r"  r$  r&  r}   r'  r8  r=   rV   r   r  rE   r6   r)  r   )r#   r$   rindexrG   ru   r>  r   r   r   test_rindex  s   
zBaseBytesTest.test_rindexc                 C   s   |  d}|}|d }| |d | |d | ||u  |  d}|d }| |d | t|| j  |  d}|d }| |d | t|| j  d S 	Ns
   hello, %b!   worlds   hello, world!s   %s / 100 = %d%%)s   seventy-nineO   s   seventy-nine / 100 = 79%s
   hello, %b!s   hello, world!r#   r$   r   assertIsr%   )r   r(   origr/   r   r   r   test_mod     


zBaseBytesTest.test_modc                 C   s   |  d}|}|d; }| |d | |d | ||u  |  d}|d; }| |d | t|| j  |  d}|d; }| |d | t|| j  d S rC  rF  )r   r(   rH  r   r   r   	test_imod  rJ  zBaseBytesTest.test_imodc                 C   sV   |  t t | d  W d    n1 sw   Y  | | ddt d S )Nr   z%r)rG   rx   objectr#   rG  __rmod__NotImplementedr   r   r   r   	test_rmod  s   zBaseBytesTest.test_rmodc                 C   s6   |  d}| |ddd | |ddd d S )Nr!  r%  r   s   massassappar&  r   s	   mixixippi)r#   r$   replacer'   r   r   r   test_replace  s   
zBaseBytesTest.test_replacec                 C   s   |  t| djdd d S )N   a b    r{   )rG   rx   r#   rP  r   r   r   r   test_replace_int_error     z$BaseBytesTest.test_replace_int_errorc                 C   0   |  t| djd |  t| djd d S NrR  r  rG   rx   r#   splitrsplitr   r   r   r   test_split_string_error     z%BaseBytesTest.test_split_string_errorc                 C   rV  NrR  rS  rX  r   r   r   r   test_split_int_error  r\  z"BaseBytesTest.test_split_int_errorc                 C   sF   dD ]}|  |}| | |g q|  d}| | dg d S )N)s   abs   abs   abs   ab	   	
   )r#   r$   rY  r'   r   r   r   test_split_unicodewhitespace  s
   

z*BaseBytesTest.test_split_unicodewhitespacec                 C   s    |  d}| | dg d S )Nr_  r`  )r#   r$   rZ  r'   r   r   r   test_rsplit_unicodewhitespace  s   
z+BaseBytesTest.test_rsplit_unicodewhitespacec                 C   s2   |  d}| |dd | |dd d S )Nr!  r&  )s   mir&  s   issippir'  )r!  r{   r{   )r#   r$   	partitionr'   r   r   r   test_partition  s   
zBaseBytesTest.test_partitionc                 C   sD   |  d}| |dd | |dd | |dd d S )Nr!  r&  )s   missir&  s   ippir%  )s
   mississippr%  r{   r'  )r{   r{   r!  )r#   r$   
rpartitionr'   r   r   r   test_rpartition  s   
zBaseBytesTest.test_rpartitionc                 C   rV  rW  rG   rx   r#   rc  re  r   r   r   r   test_partition_string_error
  r\  z)BaseBytesTest.test_partition_string_errorc                 C   rV  r]  rg  r   r   r   r   test_partition_int_error  r\  z&BaseBytesTest.test_partition_int_errorc                 C   sN   t tjd D ]}dD ]}| |}t||}t|}| || qqd S Nr6   )r{   r   r   s   abs       )r\   pickleHIGHEST_PROTOCOLr#   dumpsloadsr$   )r   protor(   Zpsqr   r   r   test_pickling  s   

zBaseBytesTest.test_picklingc                 C   s   t tjd D ]W}dD ]R}t| | }}t| |}t||}t|}| t	|t	| | t|| t|}|sBqt
| t||}t|}| t||dd   qqd S rj  )r\   rk  rl  r`   r#   r]   rm  rn  r$   r%   next)r   ro  r(   itZitorgr   dr   r   r   test_iterator_pickling  s"   


z$BaseBytesTest.test_iterator_picklingc                 C   sX   |  | dtdd |  | dtdd |  | dtdd d S )Nr   r   r   r   r   )r$   r#   stripr  lstriprstripr   r   r   r   test_strip_bytearray,  s    z"BaseBytesTest.test_strip_bytearrayc                 C   F   |  t| djd |  t| djd |  t| djd d S )Nr   ZacrG   rx   r#   rv  rw  rx  r   r   r   r   test_strip_string_error1     z%BaseBytesTest.test_strip_string_errorc                 C   rz  )Ns    abc rS  r{  r   r   r   r   test_strip_int_error6  r}  z"BaseBytesTest.test_strip_int_errorc                 C   :   |  d}ttfD ]}| |d|d|  d q	d S )Nr   r      -s   --abc--)r#   rp   r   r$   centerr   r(   Z	fill_typer   r   r   test_center;     
zBaseBytesTest.test_centerc                 C   r  )Nr   r   r  s   abc----)r#   rp   r   r$   ljustr  r   r   r   
test_ljustB  r  zBaseBytesTest.test_ljustc                 C   r  )Nr   r   r  s   ----abc)r#   rp   r   r$   rjustr  r   r   r   
test_rjustI  r  zBaseBytesTest.test_rjustc                 C   sL   |  t| djdd |  t| djdd |  t| djdd d S )Nr   r   rS  )rG   rx   r#   r  r  r  r   r   r   r   test_xjust_int_errorP  s   z"BaseBytesTest.test_xjust_int_errorc                    s4   |  d |  fddtt D g d d S )Ns    Ac                    s    g | ]}t  ||d   qS r6   )r   rO   r2   r   r   
<listcomp>W  s     z*BaseBytesTest.test_ord.<locals>.<listcomp>)r   A      rS   rs   )r#   r$   r\   rF   r   r   r2   r   test_ordU  s   
zBaseBytesTest.test_ordc                 C   s`   d}|  | jdd| d}|  | jdd| | t| jjdd | t| jjdd d S )	Ns    	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`xyzdefghijklmnopqrstuvwxyz{|}~r      xyzs    	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~xyzs   s   xyzqr   r   )r$   r#   	maketransrG   ru   rx   )r   Z
transtabler   r   r   test_maketransZ  s   zBaseBytesTest.test_maketransc                 C   s  |  d}|  d}|  d}|  d}|  d}| d||d  | d||dd  | d||d d | d	||d d  | d||d  | d||dd  | d||d d | d	||d d  | d||d  | d||dd  | d||d d | d	||d d  | d||d  | d||dd  | d||d d | d	||d d  | d||d  | d
||dd  | d
||d d | d	||d d  | d||d  | d||dd  | d||d d | d||d d  | d||d  | d||dd  | d||d d | d||d d  d S )Nr.     lr0  r   r5  rE   rV   rB   r   r6   TF)	r#   r$   r9  r=  r;  rA  r*  r6  r1  )r   r(   lhr   or   r   r   test_none_argumentsb  sB   




z!BaseBytesTest.test_none_argumentsc                 C   sV   |  d}|j|j|j|j|jfD ]}| t|d | t|d | t|d qd S )Nr.  rA   rJ   i'  )r#   r*  r9  r;  r=  rA  rG   ru   )r   r(   methodr   r   r   (test_integer_arguments_out_of_byte_range  s   
z6BaseBytesTest.test_integer_arguments_out_of_byte_rangec              	   C   s   |  d}|  d}| td|j|d d d  | td|j|d d d  | td|j|d d d  | td|j|d d d  | td|j|d d d  | td|j|d d d  | td	|j	|d d d  d S )
Nr.  r   z\bfind\bz	\brfind\bz	\bindex\bz
\brindex\bz	\bcount\bz\bstartswith\bz\bendswith\b)
r#   r:  rx   r9  r=  r;  rA  r*  r1  r6  )r   r(   r   r   r   r   *test_find_etc_raise_correct_error_messages  s.   

z8BaseBytesTest.test_find_etc_raise_correct_error_messagesc                 C   s(   t j| t| j t j| t| j d S r   )testsupportZcheck_free_after_iteratingr`   r#   r   r   r   r   r   test_free_after_iterating  s   z'BaseBytesTest.test_free_after_iteratingc                 C   s4  |  d}ttd}td|td< | t|j | t|jd d  | t|jttd ||d}| 	|d | 
|| j  ||}||d}| 	|| | 	|d ||d}| 	|d	 |d d
}| 	|d |j|dd}| 	|d |j|dd}| 	|d	 |jd d
d}| 	|d d S )Nr.  rJ   er  rs   r{   s   heller  s   hee   es   hllo)delete)r#   r   r\   r   rG   rx   	translateru   rp   r$   assertIsInstance)r   r(   Zrosettar   rt  r   r   r   test_translate  s.   

zBaseBytesTest.test_translatec                 C   s   t d}| d}| t ||d W d    n1 s w   Y  | t ||d W d    n1 s;w   Y  | ||dd d S )N	_testcapi)rK   rB   r6   r   rK   )r   import_moduler#   rG   rH   Zsequence_getitemr$   )r   r  objr   r   r   test_sq_item  s   

zBaseBytesTest.test_sq_itemN)Kr   r    r!   r)   r0   rI   ra   rc   rd   rq   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r-  r4  r7  r<  r?  r@  rB  rI  rK  rO  rQ  rT  r[  r^  ra  rb  rd  rf  rh  ri  rq  ru  ry  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r"   /   s    



	8	%%+r"   c                   @   s@   e Zd ZeZdd Zdd Zdd Zdd Zd	d
 Z	dd Z
dS )	BytesTestc                 C   sB   d}d}|  t| |d  W d    d S 1 sw   Y  d S )N   pythonz'byte indices must be integers or slicesr/   )r:  rx   r   r(   msgr   r   r   test_getitem_error  s
   
"zBytesTest.test_getitem_errorc                 C   sR   t tt j}t|ddd}| t|jd W d    d S 1 s"w   Y  d S )Nrbr   )	bufferingr{   )osopen__file__O_RDONLYrG   rx   readinto)r   fdr   r   r   r   test_buffer_is_readonly  s   "z!BytesTest.test_buffer_is_readonlyc                 C   s  G dd d}|  t| d G dd d}| tt|  G dd d}| tt|  G dd d}|  t| d G dd dt}|  t|d	d |  t|d	d
d G dd d}|  t| d | tt| t |  t| d | tt| t d S )Nc                   @   rT   ) BytesTest.test_custom.<locals>.Ac                 S      dS Nr   r   r   r   r   r   	__bytes__  r   *BytesTest.test_custom.<locals>.A.__bytes__Nr   r    r!   r  r   r   r   r   A  rZ   r  r   c                   @   r   )r  Nr   r   r   r   r   r    r?   c                   @   rT   )r  c                 S   s   d S r   r   r   r   r   r   r    r   r  Nr  r   r   r   r   r    rZ   c                   @      e Zd Zdd Zdd ZdS )r  c                 S   r  )Nr   r   r   r   r   r   r    r   r  c                 S   r  rf   r   r   r   r   r   r     r   z*BytesTest.test_custom.<locals>.A.__index__N)r   r    r!   r  r   r   r   r   r   r    s    r   c                   @   rT   )r  c                 S   r  r  r   r   r   r   r   r    r   r  Nr  r   r   r   r   r    rZ   u   €z
iso8859-15   c                   @   rT   )r  c                 S   s   t dS r  )OtherBytesSubclassr   r   r   r   r    rX   r  Nr  r   r   r   r   r    rZ   )	r$   rp   rG   rx   r   rG  r%   r  BytesSubclass)r   r  r   r   r   test_custom  s    zBytesTest.test_customc                    sr  t d}t d}ddlm}m} ddlm}m}m}m}m	}	m
}
m} |j}|f|_||_| |dd | |ddd	 | |d
|dd | |d
|tdd | |d
|dd | |d|d|d|	dd | |d|d|d|	dd | |d|d|d|	dd | |d|dd | |d|d d! | |d"|d#d$ ||}tjd%krd&d|   fd'd(}nd)d( }d*}| |d+||d,|| d- | |d.|d/d0 |	dj}d1||jtfd1||jtfd2||jtfd2||jtfd3||jtfd4|
|jtfd4|
|jtfd5|	|tfd6|||ff	D ]\}}}}| ||||||d-f q,| |d7d8d8 | |d9d:d; | |d<d= | |d>d? | |d@|tdAdB | |dCdD | |d=d= | |dE|d|ddF | t |dG|d | t |dG|dH | |dIdI | |dDdIdI d S )JNctypesr  r   )	pythonapi	py_object)c_intc_uintc_longc_ulongc_size_t	c_ssize_tc_char_ps   formats
   Hello %s !rD  s   Hello world !s   c=%cs   c= @s   c=@rs   s   c=s   d=%d ld=%ld zd=%zdr6   rE   rV   s   d=1 ld=2 zd=3rA   rB   r   s   d=-1 ld=-2 zd=-3s   u=%u lu=%lu zu=%zu{   i  i  s   u=123 lu=456 zu=789s   i=%is   i=123is   i=-123s   x=%xi
  s   x=abcntz0x%0{}Xc                    s    |  S r   r   ptrZ
ptr_formatr   r   ptr_formatter7  rX   z1BytesTest.test_from_format.<locals>.ptr_formatterc                 S   s   d|  S )Nz%#xr   r  r   r   r   r  ;  rX   iͫ s   ptr=%pzptr=r   s   s=%ss   cstrs   s=cstrs   %ds   %lds   %lus   %zds   %zus   %ps   %5sr   s   %.3sr   r   s   %%   %s   [%%]s   [%]s   %%%cr  s   %_s   %%ss   %ss   x=%i y=%s   x=2 y=%s   %crJ   r{   )!r   r  r  r  r  r  r  r  r  r  r  r  PyBytes_FromFormatargtypesZrestyper$   r   Zsizeofr  nameformatr   r   ZINT_MINr   ZINT_MAXZLONG_MINZLONG_MAXZ	ULONG_MAXZPY_SSIZE_T_MINZPY_SSIZE_T_MAXrG   r   )r   r  r  r  r  r  r  r  r  r  r  r  r  Z
sizeof_ptrr  r  Zsize_maxZ	formatstrZctypes_typer   Zpy_formatterr   r  r   test_from_format  s   

$












zBytesTest.test_from_formatc                 C   s   G dd dt }g d}| t|d | tt|| G dd dt}| tdd | tt|d G d	d
 d
t}| tdd | tt|d G dd dt}td|d}}| t|d | tt| d S )Nc                   @      e Zd ZdZdS )z7BytesTest.test_bytes_blocking.<locals>.IterationBlockedNr  r   r   r   r   IterationBlockedw      r  )r   r6   rE   rV   s    c                   @   r  )z1BytesTest.test_bytes_blocking.<locals>.IntBlockedNr  r   r   r   r   
IntBlocked  r  r  rV   s      c                   @   r  )z;BytesTest.test_bytes_blocking.<locals>.BytesSubclassBlockedNr  r   r   r   r   BytesSubclassBlocked  r  r  r   c                   @   r  )z4BytesTest.test_bytes_blocking.<locals>.BufferBlockedNr  r   r   r   r   BufferBlocked  r  r  )r]   r$   rp   rG   rx   r   r   )r   r  rQ   r  r  r  babbr   r   r   test_bytes_blockingv  s   zBytesTest.test_bytes_blockingc                 C   sP  d}d}|  t|t| | t|t| | t|t|d  | t|t|d  |  t|t|d  |  t|td|  | t|t|d  G dd dt}|d	}|  t|t| | t|t|d  | t|t|d  | t|t|d  | t|td|  | t|t|d  d S )
Ns   123abc1@s   456zyx-+r
  r   r6   rE   c                   @   r   )z5BytesTest.test_repeat_id_preserving.<locals>.SubBytesNr   r   r   r   r   SubBytes  r   r  s   qwerty())r$   idassertNotEqualrp   )r   r/   r(   r  r   r   r   r   test_repeat_id_preserving  s"   z#BytesTest.test_repeat_id_preservingN)r   r    r!   rp   r#   r  r  r  r  r  r  r   r   r   r   r    s    !rr  c                   @   s2  e Zd ZeZdd Zdd Zdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"e#j$j%d=d> Z&d?d@ Z'e#j(j)j*Z*dAdB Z+dCdD Z,dES )FByteArrayTestc                 C   sF   t d}d}| t| |d  W d    d S 1 sw   Y  d S )Nr  ,bytearray indices must be integers or slicesr/   r   r:  rx   r  r   r   r   r    
   
"z ByteArrayTest.test_getitem_errorc                 C   sF   t d}d}| t| d|d< W d    d S 1 sw   Y  d S )Nr  r  Zpythonr/   r  r  r   r   r   test_setitem_error  r  z ByteArrayTest.test_setitem_errorc                 C   s   |  ttt  d S r   )rG   rx   hashr   r   r   r   r   test_nohash     zByteArrayTest.test_nohashc                 C   sn  d}|ddt |   }t }zt|d}|| W d    n1 s&w   Y  t|d}td}||}W d    n1 sDw   Y  | |t | | t|t| t|d}|| W d    n1 spw   Y  t|d}| |	 | W d    n1 sw   Y  W zt
| W d S  ty   Y d S w zt
| W w  ty   Y w w )Ns   Hello world
r|      wbr  )rF   tempfilemktempr  writer   r  r$   r]   readr  removeOSError)r   Zshort_sampler   Ztfnr   r(   nr   r   r   test_bytearray_api  s<   z ByteArrayTest.test_bytearray_apic                 C   s\   t d}| | d  | |d t d}|  | |d t  }|  | | d S )Nr.  s   ollehs   hello1s   1olleh)r   r$   r   r   r'   r   r   r   test_reverse  s   zByteArrayTest.test_reversec                 C   st   t d}|  | |d t d}|  | |d t d}|td |  |td | |d d S )Nr  r{   rr+  r(  )r   rg   r$   rm   r   r'   r   r   r   
test_clear  s   zByteArrayTest.test_clearc                 C   s   t d}| }| |d t d}| }| |d t d}| }| || | || |td | |d | |d d S )Nr   r{   rt  r+   )r   r,   r$   assertIsNotrm   r   )r   r(   r  r   r   r   r0     s   zByteArrayTest.test_copyc                 C   s4   dd }|d}|  td||d|dg d S )Nc                 S   s   t tt| S r   )r   r   r   r   r   r   r   r        z&ByteArrayTest.test_regexps.<locals>.byr   s   \w+r   r   )r$   refindallr   r   r   r   test_regexps  s   $zByteArrayTest.test_regexpsc                 C   s>  t g d}d|d< | |t g d d|d< | |t g d td|d	< | |t g d
 zd	|d< | d W n	 tyF   Y nw zd	|d< | d W n	 ty[   Y nw zd|d	< | d W n	 typ   Y nw ztd|d	< | d W n	 ty   Y nw zd |d	< | d W d S  ty   Y d S w )NrU   r>   r6   )r6   r>   rV   r   rA   )r6   r>   r   r=   r   )r=   r>   r   rV   zDidn't raise IndexErrorirJ   zDidn't raise ValueErrorzDidn't raise TypeError)r   r$   r   failrH   ru   rx   r'   r   r   r   test_setitem	  sJ   zByteArrayTest.test_setitemc                 C   sb   t td}|d= | |t tdd |d= | |t tdd |d= | |t g d d S )Nr=   r   r6   rA   r)  r   )r6   rE   rV   r   r  r   r  )r   r\   r$   r'   r   r   r   test_delitem+  s   zByteArrayTest.test_delitemc              	   C   s  t td}| t|ttd t g d|dd< | |t g d |dd= | |t g d t g d|dd< | |t td t d	d
g|dd< | |t g d g d|dd< | |t td g d|dd< | |t g d d|dd < | |t g d td|d d< | |t g d g |dd< | |t g d dddtdddddgddgg gf	D ]}| t ||dd< W d    q1 sw   Y  qg ddd gfD ]}| t ||dd< W d    q1 sw   Y  qd S )!Nr=   )r6   r6   r6   r6   r6   r   r}   )
r6   r6   r6   r6   r6   r}   r  r   r  r)  r   )r}   r  r   r  r)  )r   r6   rE   rV   r   r>   e   r   r   )r   r6   rE   r>   r  r   r  r)  )rV   r   r}   r  rV   )rK   rK   rK   )r   r6   rE   rK   rK   rK   rV   r   r}   r  r   r  r)  s   foo)r   r6   rE   f   o   r  )r  r  r  r  r  r  r   )r  r  r  r  r  gPKDr   gffffff@r/   r(   r   r   )rr   rs   rJ   i i(#  )	r   r\   r$   r]   r  r   rG   rx   ru   )r   r(   elemr   r   r   test_setslice4  s>   
 zByteArrayTest.test_setslicec                 C   sv   t td}| t|ttd |d d= | t|ttdd |tdd | t|ttdd d S )Nr>   r=   n   )r   r\   r$   r]   extendr'   r   r   r   test_setslice_extend\  s   
z"ByteArrayTest.test_setslice_extendc                 C   s,   t d}|  |d d= |td7 }~d S )Nr=   r6   rE   )r   poprp   r'   r   r   r   test_fifo_overrune  s
   
zByteArrayTest.test_fifo_overrunc                 C   s2   t d}t|}|d d= | t|| d S )Nr=   r6   )r   r8   	getsizeofassertLessEqual)r   r(   r   r   r   r   test_del_expandn  s   

zByteArrayTest.test_del_expandc                 C   s   dd dddddd> t jddd	d
f}|D ]O}|D ]J}|dd  D ]A}ttd}t|}|||| }|  |||||< |||||< | |t| ||||= ||||= | |t| qqqd S )Nr   r6   rV   r   r   iM  rA   rB   r   irs   )r8   r9   r]   r\   r   r   r$   )r   r   r   r   r   r   r(   r   r   r   r   test_extended_set_del_sliceu  s&   z)ByteArrayTest.test_extended_set_del_slicec                 C   s@   t td}||dd < | |t ttdttd  d S )NrJ   r  )r   r\   r$   r]   r'   r   r   r   test_setslice_trap  s   (z ByteArrayTest.test_setslice_trapc                 C   s|   t d}|}|d7 }| |d | || | || |d7 }| |d z|d7 }W n
 ty6   Y d S w | d d S )Nr   r   r   r  s	   abcdefxyzr   z'bytes += unicode didn't raise TypeError)r   r$   rG  rx   r  r   r(   r   r   r   r   test_iconcat  s   zByteArrayTest.test_iconcatc                 C   <   t d}|}|d9 }| |d | || | || d S )Nr   rV   r   r   r$   rG  r  r   r   r   test_irepeat     zByteArrayTest.test_irepeatc                 C   r  )Nr   r>   sd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr  r  r   r   r   test_irepeat_1char  r  z ByteArrayTest.test_irepeat_1charc                 C   sd   t  }| }| |d |g}tdD ]}|d7 }| }| |t| ||vr/|| qd S )Nr   r>   r   )r   	__alloc__ZassertGreaterEqualr\   assertGreaterrF   rm   )r   r(   allocr  rQ   r   r   r   
test_alloc  s   
zByteArrayTest.test_allocc                    sf   t    fdd} |  t ttdd t d   }|t  d S )Nc               	   3   s~    t ddD ]6} | V  t }|tt dt|d  t t| t |    }|t  qd S )Nr6   r>   )r\   r]   r$   rF   r  r  r  )rQ   r/   r  r(   r   r   r   g  s   z(ByteArrayTest.test_init_alloc.<locals>.gr6   r>   c   )r   r   r$   r]   r\   rF   r  r  )r   r  r  r   r  r   test_init_alloc  s   	zByteArrayTest.test_init_allocc                 C   s  d}t |}|| | |||  | |dd  | t d}|tt|d  |dd |d D  | ||d  | |dd  | t d}|ttt|d  | ||d  | |dd  | t d}|ttt|d  | ||d  | |dd  | t d}| t|jg d	 | t|jg d
 | t	|d t d}|t
tdg | |d d S )Nr.  r}   r{      c                 s   s    | ]}t |V  qd S r   )r   r  r   r   r   rR     r  z,ByteArrayTest.test_extend.<locals>.<genexpr>2   r   )r   r6   rE   rJ   )r   r6   rE   rA   r   r/   r   )r   r  r$   r   r   r`   r]   rG   ru   rF   r   r   )r   rH  r/   r   r   r   test_extend  s2   
zByteArrayTest.test_extendc                    s  t d  td |  d  td |  d | t fdd | t fdd | t fdd  td	  td
 |  d | t fdd  ttd |  d t g d}|d | |tg d |d | |tddg d S )Nr.  r  s   helos   heoc                      s     tdS )Nr  )r  r   r   r2   r   r   r3     r;   z+ByteArrayTest.test_remove.<locals>.<lambda>c                      
     dS )Ni  r  r   r2   r   r   r3     r:   c                      r#  )Nr  r$  r   r2   r   r   r3     r:   r  r  r  c                      r#  )Nr  r$  r   r2   r   r   r3     r:   r  r{   )~   r  rS      r  )r%  rS   r&  r&  r%  rS   )	r   r  r   r$   rG   ru   rx   r   rp   r   r   r2   r   test_remove  s&   

zByteArrayTest.test_removec                    s   t d |   td |  dtd |  dtd | t fdd | td	d  | t d
 d d S )NrD  rt  r   r,  rB   r  c                      r#  )Nr=   )r
  r   r2   r   r   r3     r:   z(ByteArrayTest.test_pop.<locals>.<lambda>c                   S   
   t   S r   )r   r
  r   r   r   r   r3     r:   r  rs   )r   r$   r
  r   rG   rH   r   r   r2   r   test_pop  s   zByteArrayTest.test_popc                 C   s   |  tdd  d S )Nc                   S   r(  r   )r   sortr   r   r   r   r3     r:   z+ByteArrayTest.test_nosort.<locals>.<lambda>)rG   AttributeErrorr   r   r   r   test_nosort  r  zByteArrayTest.test_nosortc                    s   t d  td |  d |  dd  t    td | t d | t fdd t    ttd |  d	 d S )
Ns   hellr  r.  r>   r  r6   c                      r#  )Nr5  )rm   r   r2   r   r   r3     r:   z+ByteArrayTest.test_append.<locals>.<lambda>   A)r   rm   r   r$   rF   rG   rx   r   r   r   r2   r   test_append  s   zByteArrayTest.test_appendc                    s   t d  dtd  dtd  dtd  dtd |  d | t fdd	 t    d
ttd |  d d S )Ns   mssssppr6   rQ   r   rB   rl   r!  c                      s     ddS )Nr      1)insertr   r2   r   r   r3   #  r?   z+ByteArrayTest.test_insert.<locals>.<lambda>r   r  r-  )r   r0  r   r$   rG   rx   r   r   r   r2   r   test_insert  s   zByteArrayTest.test_insertc                 C   sR   t d}| ||ddd t dd tdD }t d}| ||| d S )Nr   s   cder   c                 S   s   g | ]}|qS r   r   rO   r   r   r   r  .  rD   z-ByteArrayTest.test_copied.<locals>.<listcomp>rJ   r{   )r   r  rP  r\   r  )r   r(   tr   r   r   r   test_copied(  s
   zByteArrayTest.test_copiedc                 C   s   t dd\}}}| |d | |d | || |d7 }| |d t dd\}}}| |d | |d t dd\}}}| |d | |d | || |d7 }| |d t dd\}}}| |d | |d d S )Nr      yr{      !)r   rc  r$   r  re  )r   r/   r(   r   r   r   r   0test_partition_bytearray_doesnt_share_nullstring2  s$   z>ByteArrayTest.test_partition_bytearray_doesnt_share_nullstringc                    s
  t td t } fdd}|d  d d  }| t|d |  | | t|d |  | | t|d |  | | t jd |  | | t j d  |  |  fdd	}| t| |  |  fd
d}| t| |  | d S )Nr=   c                    s"   t | d d|  d  dd< d S )Nr6   rE   rA   )r\   )r  r2   r   r   resizeN  s   "z3ByteArrayTest.test_resize_forbidden.<locals>.resize   r)  r   r6   c                      s
    d= d S r5   r   r   r2   r   r   delitem]  r   z4ByteArrayTest.test_resize_forbidden.<locals>.delitemc                      s   d ddd< d S )Nr{   r6   rA   rE   r   r   r2   r   r   delsliceb  s   z5ByteArrayTest.test_resize_forbidden.<locals>.delslice)r   r\   r  rG   BufferErrorr$   r
  r  )r   vr7  rH  r9  r:  r   r2   r   test_resize_forbiddenG  s*   z#ByteArrayTest.test_resize_forbiddenc                 C   s    ddl m} | t|t  d S )Nr   )getbuffer_with_null_view)r  r>  rG   r;  r   )r   r>  r   r   r   test_obsolete_write_lockg  s   z&ByteArrayTest.test_obsolete_write_lockc           	      C   s  t d}td}ttjd D ]}t|}t||f|}t|\}}||d d < | t	|t	| | t|| t
| t||f|}t|\}}||d d < | t	|t	| | t||dd   tdt|D ]}t
| qrt||f|}t|\}}||d d < | t	|t	| | t||t|d   | tt
| t||f|}t|\}}||d d < | t|g  qd S )Nr   s   qwertyr6   )r   r]   r\   rk  rl  r`   rm  rn  r$   r%   rr  rF   rG   StopIteration)	r   rH  r   ro  Zitorigrt  rs  r(   rQ   r   r   r   test_iterator_pickling2l  s8   
z%ByteArrayTest.test_iterator_pickling2c                 C   s4   t d}t|}t| |  | t|g  d S )Nr   )r   r`   rr  rg   r$   r]   )r   r  rs  r   r   r   test_iterator_length_hint  s
   z'ByteArrayTest.test_iterator_length_hintc                 C   sL   t d}d|d d< |d }|d }| |d | || | |d d S )Nr   r   rE   r6   rV   s   xcs   xcxcxcr   r$   )r   r(   r   r   r   r   r   test_repeat_after_setslice  s   z(ByteArrayTest.test_repeat_after_setsliceN)-r   r    r!   r   r#   r  r  r  r  r  r  r0   r  r   r  r  r	  r  r  r  r  r  r  r  r  r  r"  r'  r)  r,  r.  r1  r3  r6  r=  r  r  Zcpython_onlyr?  rA  Z
list_testsZ
CommonTestZtest_exhausted_iteratorrB  rD  r   r   r   r   r    sL    "	(		

 

$	r  c                   @   s   e Zd Zedd Zedd Zdd Zejj	dd Z
d	d
 Zedd Zdd Zdd Zdd Zdd Zeejjddd ZdS )AssortedBytesTestc                 C   s   t tfD ]:}| |t d | |tdgd | |tg dd | |dd | |dd	 | |d
d qd S )Nbytearray(b'')r   zbytearray(b'\x00')rt   zbytearray(b'\x00\x01\xfe\xff')r   zb'abc'   'zb"'"s   '"zb'\'"')r   reprr$   r   r   r   r   r   test_repr_str  s   zAssortedBytesTest.test_repr_strc              	   C   s   dt dfD ]:}| t|t| | t|dt| | tdtt|j	  t|d W d    q1 s;w   Y  qd S )Nr   r   z\b%s\br   )
r   r$   r  r   r:  rx   r  escaper%   r   r'   r   r   r   test_format  s   zAssortedBytesTest.test_formatc                 C   s  |  dtdkd |  dtdkd |  dtdkd |  dtdk d |  dtdkd |  dtdkd |  dtdkd |  dtdkd |  dtdkd |  dtdkd |  dtdk d |  dtdkd |  tddkd |  tddkd |  tddkd |  tddk d |  tddkd |  tddkd |  tddkd |  tddkd |  tddkd |  tddkd |  tddk d |  tddkd d S )Nr   Tr   Fro   r   r   r   r   test_compare_bytes_to_bytearray  s0   z1AssortedBytesTest.test_compare_bytes_to_bytearrayc                 C   sH   |  tj | tjdtj |  tj | tjdtj d S )Nz
bytearray(zbytes()ZassertIsNotNoner   __doc__r   r1  rp   r   r   r   r   test_doc  s   zAssortedBytesTest.test_docc                 C   s,   t d}t|}t|}| |t| d S )Ns   Hello world
)rp   r  r   r$   )r   r   bufr(   r   r   r   test_from_bytearray  s   z%AssortedBytesTest.test_from_bytearrayc                 C   sp   |  tdd |  tdd |  tdd |  ttdd |  ttdd |  ttdd	 d S )
Nr{   zb''r   zb'x'r  zb'\x80'rF  zbytearray(b'x')zbytearray(b'\x80'))r$   r   r   r   r   r   r   test_to_str  s   zAssortedBytesTest.test_to_strc                 C   sR   g d}|D ]\}}|  |t|d qtddD ]}| ttdt|  qd S )N))s   Wonderful spamzWonderful spam)s   Wonderful spam toozWonderful spam too)s     u   ª  )s   \xaa\x00\000\200z\xaa\x00\000\200r   rS   rJ   zb"%s")r$   r   r\   rG   SyntaxErrorevalr  )r   Ztestsr(   r   r   r   r   r   test_literal  s   
zAssortedBytesTest.test_literalc                 C      |  dtdddg d S NrR  r  r   r   )r$   rY  r  r   r   r   r   test_split_bytearray     z&AssortedBytesTest.test_split_bytearrayc                 C   rU  rV  )r$   rZ  r  r   r   r   r   test_rsplit_bytearray  rX  z'AssortedBytesTest.test_rsplit_bytearrayc                 C   s   t  }| |dd| d S )Nr{   )r   r  rP  r'   r   r   r   test_return_self  s   z"AssortedBytesTest.test_return_selfz4BytesWarning is needed for this test: use -bb optionc                 C   sJ  dd }|  ddk W d    n1 sw   Y  |  ddk W d    n1 s-w   Y  |  ddk W d    n1 sDw   Y  |  ddk W d    n1 s[w   Y  |  t ddk W d    n1 stw   Y  |  dt dk W d    n1 sw   Y  |  t ddk W d    n1 sw   Y  |  dt dk W d    n1 sw   Y  |  ddk W d    n1 sw   Y  |  ddk W d    n1 sw   Y  |  ddk W d    n	1 sw   Y  |  ddk W d    d S 1 sw   Y  d S )Nc                   S   s   t dtfS r   r	   r   r   r   r   bytes_warning  r  z5AssortedBytesTest.test_compare.<locals>.bytes_warningr{   r   r|   r   r   )r   r[  r   r   r   r   
  sJ   







$zAssortedBytesTest.test_compareN)r   r    r!   r   rI  rK  rL  r  r  Zrequires_docstringsrN  rP  rQ  rT  rW  rY  rZ  unittestZ
skipUnlessr8   flagsr[  r   r   r   r   r   rE    s&    





rE  c                   @   r  )BytearrayPEP3137Testc                 C   s   t |S r   r\  )r   r   r   r   r   marshal8  rX   zBytearrayPEP3137Test.marshalc                 C   s   |  d}dD ]}t||}|d}| || | |||d  qdD ]}t|}| || | |||d  q$|  d}||g}| || | || d S )Ns   1234)zfillr  r  r  rV   z" returned self on a mutable object)zval.split()[0]zval.rsplit()[0]zval.partition(b".")[0]zval.rpartition(b".")[2]zval.splitlines()[0]zval.replace(b"", b"")z! returned val on a mutable objectr{   )r`  getattrr$   r  rS  r  )r   valZmethnamer  Znewvalexprsepr   r   r   test_returns_new_copy;  s$   


z*BytearrayPEP3137Test.test_returns_new_copyN)r   r    r!   r`  rf  r   r   r   r   r_  7  s    r_  c                       s    e Zd Z fddZdZ  ZS )FixedStringTestc                    s&   t |tr| |dS t |S )Nr   )
isinstancer   r#   r   superfixtype)r   r  r&   r   r   rj  S  s   
zFixedStringTest.fixtypeT)r   r    r!   rj  Zcontains_bytes__classcell__r   r   rk  r   rg  R  s    rg  c                   @      e Zd ZeZdS )ByteArrayAsStringTestN)r   r    r!   r   r#   r   r   r   r   rn  Z  r  rn  c                   @   rm  )BytesAsStringTestN)r   r    r!   rp   r#   r   r   r   r   ro  ]  r  ro  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )SubclassTestc                 C   s   |  t| j| j | |  | j d\}}| || |}}|  ||k |  ||k |  ||k  |  ||k |  ||k |  ||k | || | || ||  | || ||  | || ||  |  |d |d k d S )N)r+      efghr}   )r   
issubclassr#   basetyper  r  r$   )r   r/   r(   Z_aZ_br   r   r   
test_basicc  s   zSubclassTest.test_basicc                 C   s`   |  d}|  |g}| || | t|| jt| |dg}| t|| j d S r*   )r#   rs  r  r  rG  r%   )r   s1s2Zs3r   r   r   r   {  s   
zSubclassTest.test_joinc                 C   s   |  d}d|_|  d|_ttjd D ]A}tt||}| t	|t	| | 
|| | 
|j|j | 
|j|j | 
t|t| | 
t|jt|j qd S )Nr+   r=   rq  r6   )r#   r   yr\   rk  rl  rn  rm  r  r  r$   r%   )r   r/   ro  r(   r   r   r   test_pickle  s   
zSubclassTest.test_picklec                 C   s   |  d}d|_|  d|_tjtjfD ]<}||}| t|t| | || | |j|j | |j|j | t|t| | t|jt|j qd S )Nr+   r=   rq  )	r#   r   rw  r,   r-   r  r  r$   r%   r.   r   r   r   r0     s   
zSubclassTest.test_copyc                    s    j d} |d  t| j  G  fddd j}|d} |d  t||  |jd G  fddd j}|d} |d  t||  |jd d S )Nr   r   c                       re   )z%SubclassTest.test_fromhex.<locals>.B1c                    s    j | |}d|_|S Nbar)rs  __new__foo)clsr   mer   r   r   r{    s   z-SubclassTest.test_fromhex.<locals>.B1.__new__N)r   r    r!   r{  r   r   r   r   B1  rk   r  rz  c                       re   )z%SubclassTest.test_fromhex.<locals>.B2c                    s.    j tur j j| g|R i | d| _d S ry  )rs  rp   r   r|  )r~  r   kwargsr   r   r   r     s   

z.SubclassTest.test_fromhex.<locals>.B2.__init__Nr   r    r!   r   r   r   r   r   B2  rk   r  )r#   r   r$   rG  r%   rs  r|  )r   r(   r  r  r   r   r   r     s   

zSubclassTest.test_fromhexN)r   r    r!   rt  r   rx  r0   r   r   r   r   r   rp  a  s    rp  c                   @   r   )ByteArraySubclassNr   r   r   r   r   r    r   r  c                   @   r   )r  Nr   r   r   r   r   r    r   r  c                   @   r   )r  Nr   r   r   r   r   r    r   r  c                   @   s   e Zd ZeZeZdd ZdS )ByteArraySubclassTestc                 C   sN   G dd dt }|dd}|ddd}| |d |ddd}| |d d S )Nc                   @   s   e Zd ZdddZdS )z:ByteArraySubclassTest.test_init_override.<locals>.subclassr6   c                 _   s   t j| g|R i | d S r   )r   r   )r~  newargr   r  r   r   r   r     rU  zCByteArraySubclassTest.test_init_override.<locals>.subclass.__init__Nr  r  r   r   r   r   subclass  s    r  r   r+   )source)r  r  rC  )r   r  r   r   r   r   test_init_override  s   
z(ByteArraySubclassTest.test_init_overrideN)r   r    r!   r   rs  r  r#   r  r   r   r   r   r    s    r  c                   @   s   e Zd ZeZeZdS )BytesSubclassTestN)r   r    r!   rp   rs  r  r#   r   r   r   r   r    s    r  __main__)-ry   r  r  r8   r,   r   rk  r  r   r]  Ztest.supportr  r   r   Ztest.string_testsZtest.list_testsr   r   Ztest.support.script_helperr   r^  r[  r   r   r"   ZTestCaser  r  rE  r_  Zstring_testsZBaseTestrg  rn  ro  rp  r   r  rp   r  r  r  r  r   mainr   r   r   r   <module>   sf    
       - W   ~ ]