o
    GXh0                    @   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 9/opt/python-3.10.19/usr/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   r3   r   r   r4   A   r5   c                      s
    t j S r   sysmaxsizer   r3   r   r   r4   B      
 c                      s    t jd  S r6   r8   r   r3   r   r   r4   C       c                      s    dd  S N
   d   r   r   r3   r   r   r4   D       c                      r1   Nr   r   r3   r   r   r4   E   r5   c                      r1   )Nr   r   r3   r   r   r4   F   r5   c                      s    t j  S r   r8   r   r3   r   r   r4   G   r@   c                          t j d  S r6   r8   r   r3   r   r   r4   H       c                      rD   )N   r8   r   r3   r   r   r4   I   rE   c                      s    dd   S r=   r   r   r3   r   r   r4   J   r<   )r#   r$   lenassertRaises
IndexErrorr   r   r3   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   *      *+   -   )rN   rO   )rO   rN   c                 s   s    | ]	}|d  r|V  qdS )rF   Nr   .0ir   r   r   	<genexpr>]   s    z3BaseBytesTest.test_from_iterable.<locals>.<genexpr>   r7   rF   c                   @      e Zd Zdd ZdS )z+BaseBytesTest.test_from_iterable.<locals>.Sc                 S   s   d| S )Nr7   rF      r   )r   rR   r   r   r   __getitem__c      z7BaseBytesTest.test_from_iterable.<locals>.S.__getitem__N)r   r    r!   rX   r   r   r   r   Sb       rZ      )r#   ranger$   rG   listassertIntupleiter)r   r(   rZ   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 NrK   rV   r\   )r#   r`   r]   r$   rG   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 rc   )r#   r^   r]   r$   rG   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                           dS NrL   clearr   r/   r   r   r   {      z:BaseBytesTest.test_from_mutating_list.<locals>.X.__index__Nr   r    r!   r   r   rk   r   r   Xz       rn   rM   c                       rf   )z0BaseBytesTest.test_from_mutating_list.<locals>.Yc                    s   t  dk r |  dS )N  rL   )rG   appendr   rk   r   r   r      s   
z:BaseBytesTest.test_from_mutating_list.<locals>.Y.__index__Nrm   r   rk   r   r   Y   ro   rr   s  ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************r$   bytes)r   rn   rr   r   rk   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 )Nr7         r   r7   rv   rw   rB   rK   )r#   r   r$   r^   rH   
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BrV   r\   c                   @   rU   )z)BaseBytesTest.test_from_buffer.<locals>.Bc                 S   s   t r   )	TypeErrorr   r   r   r   r      r   z3BaseBytesTest.test_from_buffer.<locals>.B.__index__Nrm   r   r   r   r   r{      r[   s   foobar)r#   arrayr$   rt   )r   r/   r{   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       r7          s        rB   0ascii   0)r$   r#   rH   ry   OverflowErrorr9   r:   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)rH   r|   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 )NrB   r7   rF   r>   r?   rK   i  )rH   ry   r#   r9   r:   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   rH   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                   @   rU   )z9BaseBytesTest.test_constructor_exceptions.<locals>.BadIntc                 S      dd  d S Nr7   r   r   r   r   r   r   r         zCBaseBytesTest.test_constructor_exceptions.<locals>.BadInt.__index__Nrm   r   r   r   r   BadInt   r[   r   c                   @   rU   )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   r[   r   )rH   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 )NrV   r7   rW   )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   r7   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 )Nrw   r   r7   rW      r?   rB   rC   r   )r^   r]   r#   r9   r:   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$   encoderH   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$   decoderH   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   invalid	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   r4     r5   z+BaseBytesTest.test_concat.<locals>.<lambda>c                      s   d  S )Nr   r   r   )r   r   r   r4     r5   )r#   r$   rt   rH   r|   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    n1 shw   Y  qd S )
Nr   rW   	   abcabcabcr   r   rB   c                      s    d S NgQ	@r   r   r3   r   r   r4     r5   z+BaseBytesTest.test_repeat.<locals>.<lambda>c                      s   d  S r   r   r   r3   r   r   r4     r5   )r#   r$   rH   r|   r   r   r9   r:   r   cr   r3   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   r3   r   r   r4     r5   z-BaseBytesTest.test_contains.<locals>.<lambda>c                      r   rA   r   r   r3   r   r   r4     r5   c                      s   t jd  v S r6   r8   r   r3   r   r   r4     r<   c                      s   d  v S r   r   r   r3   r   r   r4     r5   c                      s   t td v S Nr/   )floatr   r   r3   r   r   r4     rE   c                      r   r   r   r   r3   r   r   r4     r5   r      a   b   c   ab   bc   ac   ds   dabs   abd)
r#   r_   r   intZassertNotInrH   ry   r|   rt   r   r   fr   r3   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 )Nr7   r      rN   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 56rW   )z12 3x 56r   )z12 xy 56rW   )u	   12 3ÿ 56r   zat position %s)
rH   r|   r#   fromhexr$   r   ry   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 )Nr7   r   r   r   Z1a2b30   +0)rH   r|   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      ÿ      rK   r   zb9 01 efr      zb901efrW   r   zb9:01:ef   $zb9$01$efr7   rB   rF   zb9:01ef*rC   zb901*efs    {s   worldi   s   helloi   0.   zC7b7305000000776f.726c646902000000.730500000068656c.6c6f690100000030)r#   r$   r  rH   ry   r|   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 )rW   Nr   rQ   r   r   r   r   rS   
      z=BaseBytesTest.test_hex_separator_six_bytes.<locals>.<genexpr>r7   r   Z0306090c0f12r  z03.06.09.0c.0f.12 rF   z0306 090c 0f12-rW   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`   ra   r  r   rH   r|   )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      ssrF      wr   r     pr7   rW   r   	   )r#   r$   count)r   r(   rR   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   hart   r`   )	r#   r   
startswithr   rH   r|   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 )	Nr3  r4  s   llo   os   whellos   nort   r`   )
r#   r   r   endswithr   rH   r|   r   r   r_   r7  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+  rF   r,  rB      mississippianr7   rW   r   r   r  rK   zbyte must be in range\(0, 256\))r#   r$   findr9   r:   assertRaisesRegexry   )r   r(   rR   r1  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,  rB   r=  r>   rW   r   r  rF   r7   r.  r   )r#   r$   rfindr   r(   rR   r1  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+  rF   r,  r=  r7   rW   r   r   r  )r#   r$   r@  rH   ry   rC  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,  r=  r>   rW   r   r  rF   r7   r.  r   )r#   r$   rindexrH   ry   rC  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 rH  rK  )r   r(   rM  r   r   r   	test_imod  rO  zBaseBytesTest.test_imodc                 C   sV   |  t t | d  W d    n1 sw   Y  | | ddt d S )Nr   z%r)rH   r|   objectr#   rL  __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   )rH   r|   r#   rU  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 NrW  r  rH   r|   r#   splitrsplitr   r   r   r   test_split_string_error     z%BaseBytesTest.test_split_string_errorc                 C   r[  NrW  rX  r]  r   r   r   r   test_split_int_error  ra  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$   r^  r'   r   r   r   test_split_unicodewhitespace  s
   

z*BaseBytesTest.test_split_unicodewhitespacec                 C   s    |  d}| | dg d S )Nrd  re  )r#   r$   r_  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   r[  r\  rH   r|   r#   rh  rj  r   r   r   r   test_partition_string_error
  ra  z)BaseBytesTest.test_partition_string_errorc                 C   r[  rb  rl  r   r   r   r   test_partition_int_error  ra  z&BaseBytesTest.test_partition_int_errorc                 C   sN   t tjd D ]}dD ]}| |}t||}t|}| || qqd S Nr7   )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 ro  )r]   rp  rq  ra   r#   r^   rr  rs  r$   r%   next)r   rt  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rH   r|   r#   r{  r|  r}  r   r   r   r   test_strip_string_error1     z%BaseBytesTest.test_strip_string_errorc                 C   r  )Ns    abc rX  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#   rt   r   r$   centerr   r(   Z	fill_typer   r   r   test_center;     
zBaseBytesTest.test_centerc                 C   r  )Nr   r   r  s   abc----)r#   rt   r   r$   ljustr  r   r   r   
test_ljustB  r  zBaseBytesTest.test_ljustc                 C   r  )Nr   r   r  s   ----abc)r#   rt   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   rX  )rH   r|   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 r7   )r   rP   r3   r   r   
<listcomp>W  s     z*BaseBytesTest.test_ord.<locals>.<listcomp>)r   A      rT   rw   )r#   r$   r]   rG   r   r   r3   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#   	maketransrH   ry   r|   )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 )Nr3     lr5  r   r:  rF   rW   rC   r   r7   TF)	r#   r$   r>  rB  r@  rF  r/  r;  r6  )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 )Nr3  rB   rK   i'  )r#   r/  r>  r@  rB  rF  rH   ry   )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 )
Nr3  r   z\bfind\bz	\brfind\bz	\bindex\bz
\brindex\bz	\bcount\bz\bstartswith\bz\bendswith\b)
r#   r?  r|   r>  rB  r@  rF  r/  r6  r;  )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_iteratingra   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 )Nr3  rK   er  rw   r   s   heller  s   hee   es   hllo)delete)r#   r   r]   r   rH   r|   	translatery   rt   r$   assertIsInstance)r   r(   Zrosettar   ry  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)rL   rC   r7   r   rL   )r   import_moduler#   rH   rI   Zsequence_getitemr$   )r   r  objr   r   r   test_sq_item  s   

zBaseBytesTest.test_sq_itemN)Kr   r    r!   r)   r0   rJ   rb   rd   re   ru   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%  r2  r9  r<  rA  rD  rE  rG  rN  rP  rT  rV  rY  r`  rc  rf  rg  ri  rk  rm  rn  rv  rz  r~  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?  r|   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_RDONLYrH   r|   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                   @   rU   ) 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  r[   r  r   c                   @   r   )r  Nr   r   r   r   r   r    r@   c                   @   rU   )r  c                 S   s   d S r   r   r   r   r   r   r    r   r  Nr  r   r   r   r   r    r[   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  rh   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                   @   rU   )r  c                 S   r  r  r   r   r   r   r   r    r   r  Nr  r   r   r   r   r    r[   u   €z
iso8859-15   c                   @   rU   )r  c                 S   s   t dS r  )OtherBytesSubclassr   r   r   r   r    rY   r  Nr  r   r   r   r   r    r[   )	r$   rt   rH   r|   r   rL  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 !rI  s   Hello world !s   c=%cs   c= @s   c=@rw   s   c=s   d=%d ld=%ld zd=%zdr7   rF   rW   s   d=1 ld=2 zd=3rB   rC   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  rY   z1BytesTest.test_from_format.<locals>.ptr_formatterc                 S   s   d|  S )Nz%#xr   r  r   r   r   r  ;  rY   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   %crK   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_MAXrH   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   r7   rF   rW   s    c                   @   r  )z1BytesTest.test_bytes_blocking.<locals>.IntBlockedNr  r   r   r   r   
IntBlocked  r  r  rW   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$   rt   rH   r|   r   r   )r   r  rR   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   r7   rF   c                   @   r   )z5BytesTest.test_repeat_id_preserving.<locals>.SubBytesNr   r   r   r   r   SubBytes  r   r  s   qwerty())r$   idassertNotEqualrt   )r   r/   r(   r  r   r   r   r   test_repeat_id_preserving  s"   z#BytesTest.test_repeat_id_preservingN)r   r    r!   rt   r#   r  r  r  r  r  r  r   r   r   r   r    s    !r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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,dEdF Z-dGS )H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?  r|   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   )rH   r|   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  )rG   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 )Nr3  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   rr0  r-  )r   rj   r$   rq   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   ry  r+   )r   r,   r$   assertIsNotrq   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 )NrV   r?   r7   )r7   r?   rW   r   rB   )r7   r?   r   r>   r   )r>   r?   r   rW   zDidn't raise IndexErrorirK   zDidn't raise ValueErrorzDidn't raise TypeError)r   r$   r   failrI   ry   r|   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   r7   rB   r.  r   )r7   rF   rW   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    n1 sw   Y  qg ddd gfD ]}| t ||dd< W d    n	1 sw   Y  qd S )!Nr>   )r7   r7   r7   r7   r7   r   r   )
r7   r7   r7   r7   r7   r   r  r   r  r.  r   )r   r  r   r  r.  )r   r7   rF   rW   r   r?   e   r   r   )r   r7   rF   r?   r  r   r  r.  )rW   r   r   r  rW   )rL   rL   rL   )r   r7   rF   rL   rL   rL   rW   r   r   r  r   r  r.  s   foo)r   r7   rF   f   o   r	  )r  r	  r	  r  r	  r	  r   )r  r	  r	  r	  r	  gPKDr   gffffff@r/   r(   r   r   )rv   rw   rK   i i(#  )	r   r]   r$   r^   r  r   rH   r|   ry   )r   r(   elemr   r   r   test_setslice4  sB   
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>   r7   rF   )r   poprt   r'   r   r   r   test_fifo_overrune  s
   
zByteArrayTest.test_fifo_overrunc                 C   s2   t d}t|}|d d= | t|| d S )Nr>   r7   )r   r9   	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   r7   rW   r   r   iM  rB   rC   r   irw   )r9   r:   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 )NrK   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$   rL  r|   r  r   r(   r   r   r   r   test_iconcat  s   zByteArrayTest.test_iconcatc                 C   <   t d}|}|d9 }| |d | || | || d S )Nr   rW   r   r   r$   rL  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]   assertGreaterrG   rq   )r   r(   allocr$  rR   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 )Nr7   r?   )r]   r^   r$   rG   r  r  r  )rR   r/   r  r(   r   r   r   g  s   z(ByteArrayTest.test_init_alloc.<locals>.gr7   r?   c   )r   r   r$   r^   r]   rG   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 )Nr3  r   r      c                 s   s    | ]}t |V  qd S r   )r   r  r   r   r   rS     r  z,ByteArrayTest.test_extend.<locals>.<genexpr>2   r   )r   r7   rF   rK   )r   r7   rF   rB   r   r/   r   )r   r  r$   r   r   ra   r^   rH   ry   rG   r   r   )r   rM  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 )Nr3  r  s   helos   heoc                      s     tdS )Nr  )r  r   r   r3   r   r   r4     r<   z+ByteArrayTest.test_remove.<locals>.<lambda>c                      
     dS )Ni  r  r   r3   r   r   r4     r;   c                      r(  )Nr  r)  r   r3   r   r   r4     r;   r  r  r  c                      r(  )Nr  r)  r   r3   r   r   r4     r;   r  r   )~   r  rT      r  )r*  rT   r+  r+  r*  rT   )	r   r  r   r$   rH   ry   r|   r   rt   r   r   r3   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 )NrI  ry  r   r1  rC   r  c                      r(  )Nr>   )r  r   r3   r   r   r4     r;   z(ByteArrayTest.test_pop.<locals>.<lambda>c                   S   
   t   S r   )r   r  r   r   r   r   r4     r;   r  rw   )r   r$   r  r   rH   rI   r   r   r3   r   test_pop  s   zByteArrayTest.test_popc                 C   s   |  tdd  d S )Nc                   S   r-  r   )r   sortr   r   r   r   r4     r;   z+ByteArrayTest.test_nosort.<locals>.<lambda>)rH   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  r3  r?   r  r7   c                      r(  )Nr:  )rq   r   r3   r   r   r4     r;   z+ByteArrayTest.test_append.<locals>.<lambda>   A)r   rq   r   r$   rG   rH   r|   r   r   r   r3   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   mssssppr7   rR   r   rC   rp   r&  c                      s     ddS )Nr      1)insertr   r3   r   r   r4   #  r@   z+ByteArrayTest.test_insert.<locals>.<lambda>r   r  r2  )r   r5  r   r$   rH   r|   r   r   r   r3   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   rP   r   r   r   r  .  rE   z-ByteArrayTest.test_copied.<locals>.<listcomp>rK   r   )r   r  rU  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   rh  r$   r  rj  )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 )Nr7   rF   rB   )r]   )r  r3   r   r   resizeN  s   "z3ByteArrayTest.test_resize_forbidden.<locals>.resize   r.  r   r7   c                      s
    d= d S r6   r   r   r3   r   r   delitem]  r   z4ByteArrayTest.test_resize_forbidden.<locals>.delitemc                      s   d ddd< d S )Nr   r7   rB   rF   r   r   r3   r   r   delsliceb  s   z5ByteArrayTest.test_resize_forbidden.<locals>.delslice)r   r]   r  rH   BufferErrorr$   r  r  )r   vr<  rM  r>  r?  r   r3   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  rC  rH   r@  r   )r   rC  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   qwertyr7   )r   r^   r]   rp  rq  ra   rr  rs  r$   r%   rw  rG   rH   StopIteration)	r   rM  r   rt  Zitorigry  rx  r(   rR   r   r   r   test_iterator_pickling2l  s8   
z%ByteArrayTest.test_iterator_pickling2c                 C   s4   t d}t|}t| |  | t|g  d S )Nr   )r   ra   rw  rj   r$   r^   )r   r  rx  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   rF   r7   rW   s   xcs   xcxcxcr   r$   )r   r(   r   r   r   r   r   test_repeat_after_setslice  s   z(ByteArrayTest.test_repeat_after_setslicec              	      s  G  fddd}|  d& td | t |  d< W d    n1 s(w   Y  W d    n1 s7w   Y  |  d7 td}td | t | d|  W d    n1 scw   Y  W d    d S W d    d S 1 s{w   Y  d S )Nc                       rf   )z/ByteArrayTest.test_mutating_index.<locals>.Boomc                    rg   r2   ri   r   r3   r   r   r     rl   z9ByteArrayTest.test_mutating_index.<locals>.Boom.__index__Nrm   r   r3   r   r   Boom  ro   rJ  Ztp_as_mappings   Now you see me...r   Ztp_as_sequencer  )ZsubTestr   rH   rI   r   r  Zsequence_setitem)r   rJ  r  r   r3   r   test_mutating_index  s"   
"z!ByteArrayTest.test_mutating_indexN).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.  r1  r3  r6  r8  r;  rB  r  r  Zcpython_onlyrD  rF  Z
list_testsZ
CommonTestZtest_exhausted_iteratorrG  rI  rK  r   r   r   r   r    sN    "	(		

 

$	
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')rx   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    n1 s;w   Y  qd S )Nr   r   z\b%s\br   )
r   r$   r  r   r?  r|   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   Frs   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   r6  rt   r   r   r   r   test_doc  s   zAssortedBytesTest.test_docc                 C   s,   t d}t|}t|}| |t| d S )Ns   Hello world
)rt   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'rM  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   rT   rK   zb"%s")r$   r   r]   rH   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 NrW  r"  r   r   )r$   r^  r  r   r   r   r   test_split_bytearray     z&AssortedBytesTest.test_split_bytearrayc                 C   r\  r]  )r$   r_  r  r   r   r   r   test_rsplit_bytearray  r_  z'AssortedBytesTest.test_rsplit_bytearrayc                 C   s   t  }| |dd| d S )Nr   )r   r  rU  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   rb  r   r   r   r     sJ   







$zAssortedBytesTest.test_compareN)r   r    r!   r   rP  rR  rS  r  r  Zrequires_docstringsrU  rW  rX  r[  r^  r`  ra  unittestZ
skipUnlessr9   flagsrb  r   r   r   r   r   rL    s&    





rL  c                   @   r  )BytearrayPEP3137Testc                 C   s   t |S r   rc  )r   r   r   r   r   marshalI  rY   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  rW   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   )rg  getattrr$   r  rZ  r#  )r   valZmethnamer  Znewvalexprsepr   r   r   test_returns_new_copyL  s$   


z*BytearrayPEP3137Test.test_returns_new_copyN)r   r    r!   rg  rm  r   r   r   r   rf  H  s    rf  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   rq  d  s   
zFixedStringTest.fixtypeT)r   r    r!   rq  Zcontains_bytes__classcell__r   r   rr  r   rn  c  s    rn  c                   @      e Zd ZeZdS )ByteArrayAsStringTestN)r   r    r!   r   r#   r   r   r   r   ru  k  r  ru  c                   @   rt  )BytesAsStringTestN)r   r    r!   rt   r#   r   r   r   r   rv  n  r  rv  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_basict  s   zSubclassTest.test_basicc                 C   s`   |  d}|  |g}| || | t|| jt| |dg}| t|| j d S r*   )r#   rz  r#  r  rL  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>   rx  r7   )r#   r   yr]   rp  rq  rs  rr  r  r  r$   r%   )r   r/   rt  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>   rx  )	r#   r   r~  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                       rf   )z%SubclassTest.test_fromhex.<locals>.B1c                    s    j | |}d|_|S Nbar)rz  __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  ro   r  r  c                       rf   )z%SubclassTest.test_fromhex.<locals>.B2c                    s.    j tur j j| g|R i | d| _d S r  )rz  rt   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  ro   r  )r#   r   r$   rL  r%   rz  r  )r   r(   r  r  r   r   r   r    s   

zSubclassTest.test_fromhexN)r   r    r!   r{  r%  r  r0   r  r   r   r   r   rw  r  s    rw  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>.subclassr7   c                 _   s   t j| g|R i | d S r   )r   r   )r  newargr   r  r   r   r   r     rZ  zCByteArraySubclassTest.test_init_override.<locals>.subclass.__init__Nr  r  r   r   r   r   subclass  s    r  r   r+   )source)r  r  rH  )r   r  r   r   r   r   test_init_override  s   
z(ByteArraySubclassTest.test_init_overrideN)r   r    r!   r   rz  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!   rt   rz  r  r#   r   r   r   r   r    s    r  __main__)-r}   r  r  r9   r,   r   rp  r  r   rd  Ztest.supportr  r   r   Ztest.string_testsZtest.list_testsr   r   Ztest.support.script_helperr   re  rb  r   r   r"   ZTestCaser  r  rL  rf  Zstring_testsZBaseTestrn  ru  rv  rw  r   r  rt   r  r  r  r  r   mainr   r   r   r   <module>   sh    
       - W     ]