a ze*@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddlZ ddl mZmZddlmZejjrddZnddZGdd d ZGd d d ZGd d d ee jZGdddee jZGddde jZGddde jZGddde jjZGdddee jZ Gdddee jZ!GdddZ"Gddde#Z$Gddde%Z&Gd d!d!e%Z'Gd"d#d#e"e jZ(Gd$d%d%e"e jZ)e*d&kre +dS)'zUnit tests for the bytes and bytearray types. XXX This is a mess. Common tests should be unified with string_tests.py (and the latter should be modernized). N)bigaddrspacetestMAX_Py_ssize_t)assert_python_failurecstfdd}|S)NcsBtjdtf|i|WdS1s40YdSNtestsupportZcheck_warnings BytesWarning)argskwfuncC/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_bytes.pywrappersz%check_bytes_warnings..wrapper) functoolswraps)rrrr rcheck_bytes_warningssrcCs|SNrr rrrr"sc@seZdZdddZddZdS) IndexablercCs ||_dSrvalue)selfrrrr__init__'szIndexable.__init__cCs|jSrrrrrr __index__)szIndexable.__index__N)r)__name__ __module__ __qualname__rrrrrrr&s rc@sDeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZeddZddZddZedd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Z d9d:Z!d;d<Z"d=d>Z#d?d@Z$dAdBZ%dCdDZ&dEdFZ'dGdHZ(dIdJZ)dKdLZ*dMdNZ+dOdPZ,dQdRZ-dSdTZ.dUdVZ/dWdXZ0dYdZZ1d[d\Z2d]d^Z3d_d`Z4dadbZ5dcddZ6dedfZ7dgdhZ8didjZ9dkdlZ:dmdnZ;dodpZdudvZ?dwdxZ@dydzZAd{d|ZBd}d~ZCddZDddZEddZFddZGddZHddZIddZJdS) BaseBytesTestcCs.|}|t||j||j|jdSr) type2test assertEqualtype __class__rbrrr test_basics/szBaseBytesTest.test_basicscCsH|d}tjtjfD],}||}||||t|t|qdSNabcd)r!copydeepcopyr"r#raZ copy_methodr&rrr test_copy4s   zBaseBytesTest.test_copycs||td|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfd d|tfd d|tfd d|tfd d|tfd ddS)NrcsdS)Nrrrr&rr>z3BaseBytesTest.test_empty_sequence..csdSNrrr/rrr0?r1cs tjSrsysmaxsizerr/rrr0@r1cstjdSr2r4rr/rrr0Ar1cs ddSN drrr/rrr0Br1csdSNrrr/rrr0Cr1csdS)Nrrr/rrr0Dr1cs tj Srr4rr/rrr0Er1cstj dSr2r4rr/rrr0Fr1cstj dS)Nr4rr/rrr0Gr1csdd Sr7rrr/rrr0Hr1)r!r"len assertRaises IndexErrorrrr/rtest_empty_sequence;sz!BaseBytesTest.test_empty_sequencecCs|td}|t|d|t|ttd|dh}||d|ddh}|t|ddh|ttd}|t|d|t|ttd|dd tdD}|t|d |t|ttdd dd Gd dd}||}||ddS)N**+-)rErF)rFrEcss|]}|dr|VqdS)r=Nr.0irrr [r1z3BaseBytesTest.test_from_iterable..r3r=c@seZdZddZdS)z+BaseBytesTest.test_from_iterable..ScSsd|S)Nr3r=r)rrIrrr __getitem__asz7BaseBytesTest.test_from_iterable..S.__getitem__N)rrrrNrrrrS`srO)r!ranger"r>listassertIntupleiter)rr&rOrrrtest_from_iterableJs   " z BaseBytesTest.test_from_iterablecCsT|ttd}|t|d|t|ttd|d}||ddSNrBrLrP)r!rTrQr"r>rRr%rrrtest_from_tuplefs  zBaseBytesTest.test_from_tuplecCsX|ttd}|t|d|t|ttd|gd}||ddSrW)r!rRrQr"r>r%rrrtest_from_listns zBaseBytesTest.test_from_listcs\Gfddd}||g|tdGfddd}|g|tddS)NcseZdZfddZdS)z0BaseBytesTest.test_from_mutating_list..Xcs dSNrC)clearrr-rrrysz:BaseBytesTest.test_from_mutating_list..X.__index__Nrrrrrr\rrXxsr^rDcseZdZfddZdS)z0BaseBytesTest.test_from_mutating_list..Ycstdkr|dS)NrC)r>appendrr\rrrs  z:BaseBytesTest.test_from_mutating_list..Y.__index__Nr]rr\rrYsras****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************r"bytes)rr^rarr\rtest_from_mutating_listvs  z%BaseBytesTest.test_from_mutating_listcCsd|ttdtdtdg}|t|gd|t|jtdg|t|jtdgdS)Nr3rr3rerfr;rB)r!rr"rRr? ValueErrorr%rrrtest_from_indexs zBaseBytesTest.test_from_indexcCsb|tdgd}||d|d}||dGdddt}|||dddS)NBrLrPc@seZdZddZdS)z)BaseBytesTest.test_from_buffer..BcSstdSr) TypeErrorrrrrrsz3BaseBytesTest.test_from_buffer..B.__index__Nr]rrrrrjssfoobar)r!arrayr"rc)rr-rjrrrtest_from_buffers    zBaseBytesTest.test_from_buffercCs||dd||dd||dd|t|jd||dd d ||d d |t|jtjddS) Nrr1r3sr;0ascii0)r"r!r?rh OverflowErrorr5r6rrrrtest_from_ssizeszBaseBytesTest.test_from_ssizecCs&|t|jdGddd}|t|jdg|t|jdg|t|jdg|t|j|g|jt|jdd|jt|jdd|t|jd d|t|jd d|jt|jd dd|jt|jd dd|t|jd |jt|jd dd|t|jd d |t|jd dd dS)Ngc@s eZdZdS)z5BaseBytesTest.test_constructor_type_errors..CNrrrrrrrCsrvrprq)encodingignore)errorsrr1rsasciisignore)r?rkr!)rrvrrrtest_constructor_type_errorss z*BaseBytesTest.test_constructor_type_errorscCs|t|jdg|t|jtj g|t|jtj dg|t|jtj dg|t|jdd g|t|jdg|t|jdg|t|jtjg|t|jtjdg|t|jddgdS)Nr;r3r=r8r9rBi)r?rhr!r5r6rrrrtest_constructor_value_errorssz+BaseBytesTest.test_constructor_value_errorsc CsDt}|ttf|j|zt|dWnttfy>Yn0dS)N)rr?rs MemoryErrorr! bytearray)rsizerrrtest_constructor_overflows z'BaseBytesTest.test_constructor_overflowcCsXGddd}|t|j||t|j|gGddd}|t|j|dS)Nc@seZdZddZdS)z9BaseBytesTest.test_constructor_exceptions..BadIntcSs dddSNr3rrrrrrrszCBaseBytesTest.test_constructor_exceptions..BadInt.__index__Nr]rrrrBadIntsrc@seZdZddZdS)z>BaseBytesTest.test_constructor_exceptions..BadIterablecSs dddSrrrrrr__iter__szGBaseBytesTest.test_constructor_exceptions..BadIterable.__iter__N)rrrrrrrr BadIterablesr)r?ZeroDivisionErrorr!)rrrrrrtest_constructor_exceptionss z)BaseBytesTest.test_constructor_exceptionscCs |gd}|gd}|ddg}||||||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||k|||kdS)NrLr3rM)r!r" assertTrue assertFalse)rb1b2b3rrr test_compares& zBaseBytesTest.test_comparecCs||ddkd||ddkd||ddkd||ddkd||tkd||tkddS)NsabcabcFs abcsabcs abcT)r"r!strrrrrtest_compare_to_strsz!BaseBytesTest.test_compare_to_strcCs<tttd}||}tt|}||||dS)NHello)rRmapordr!reversedreverser")rinputr&outputrrr test_reverseds   zBaseBytesTest.test_reversedcsPfdd}|d}|dd|d|dd|d|dd|d |dd|d |dd |d |dd |d |dd |d|dd |d|d d|d |dd|d |dd |d |dd |d |dd|ddS)Ncstt|Sr)r!rrsrrrby sz'BaseBytesTest.test_getslice..by Hello, worldrorr3Zelloz, world r9i)r"rrr&rrr test_getslice s zBaseBytesTest.test_getslicec Csttd}||}ddddddtjddd d f }|D]F}|D]<}|ddD]*}||||||||||qNq>q6dS) Nrfrr3rMr9r;r<r)rRrQr!r5r6r")rLr&indicesstartstopsteprrrtest_extended_getslices  z$BaseBytesTest.test_extended_getslicec Csrd}dD](}|||}|||||q|t|j|d||dd}||||ddddS)NHello world ሴ噸骼utf-8zutf-16latin-1rxr)r!r"encoder?UnicodeEncodeErrorrsampleencr&rrr test_encoding)s zBaseBytesTest.test_encodingcCsd}dD]"}|||}||||qd}||d}|t|jd||ddd||jdddd||d d dS) NrruHello world €þÿrrrxz Hello world )ryrws☃u☃)r!r"decoder?UnicodeDecodeErrorrrrr test_decode2s  zBaseBytesTest.test_decodecCsdd}d}td|jjd|d|d|d|d|d |d }td d d |}||jd|dS)NzBoom, Shaka Laka, Boom!)rqutf8latin1z0 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-Xdevz-cr8)textwrapdedentr!rrr"rc)rinvalid encodingscodeprocrrrtest_check_encoding_errors@s& ( 0z(BaseBytesTest.test_check_encoding_errorscCsb|d}||||d}|||dgd|d}|||dgddS)Nrr8i')r!r"r%rrr test_from_intxs    zBaseBytesTest.test_from_intcsx|d|d|d|tdd|tdd|tfdd|tfdddS)NabcdefabcdefsdefabccsdS)Ndefrr)rrrr0r1z+BaseBytesTest.test_concat..csdS)Nrrr)rrrr0r1)r!r"rcr?rkrr)rrr test_concats  zBaseBytesTest.test_concatc sd|dfD]̉|dd|dd|dd|tfdd|tfd d|ttftj}Wdn1s0Y|ttftj9Wdq1s0YqdS) NrrM abcabcabcrr1r;csdSNgQ @rrr/rrr0r1z+BaseBytesTest.test_repeat..csdSrrrr/rrr0r1)r!r"r?rkrsr}r5r6rcrr/r test_repeats(zBaseBytesTest.test_repeatcCs*||dd|tdgddS)Nxr9x)r"r!rrrrrtest_repeat_1charszBaseBytesTest.test_repeat_1charcst|d|td|ttd|d|tfdd|tfdd|tfdd|tfdd|tfd d|tfd dtt fD]}||d ||d ||d ||d||d||d||d||d||d||d||dqdS)Nrr-csdvS)N,rrr/rrr0r1z-BaseBytesTest.test_contains..csdvSr:rrr/rrr0r1cstjdvSr2r4rr/rrr0r1csdvSrrrr/rrr0r1csttdvSNr-)floatrrr/rrr0r1csdvSrrrr/rrr0r1r1abcabbcacdsdabsabd) r!rSrintZ assertNotInr?rhrkrcr~rfrr/r test_containss,   zBaseBytesTest.test_containsc Cs|t|jj|t|jjd||jd|tgd}||jd|||jd|||jd|dD]}||j||qdD]}|t|jj|q||jd d |t|jjd |t|jjd |t|jjd |t|jjd|t|jjd|t|jjddD]X\}}|t}|j|Wdn1sz0Y|d|t|j qDdS)Nr3rrE01a2B30z 1A 2B 30 z 1A 2B 30 z u…   
Z0000ss1Br-Zrtz1a b cdz 12 34))z12 x4 56rM)z12 3x 56r|)z12 xy 56rM)u 12 3ÿ 56r|zat position %s) r?rkr!fromhexr"r~rhrSr exception)rr&rdataposcmrrr test_fromhexs,  ,zBaseBytesTest.test_fromhexcCs~|t|jj|t|jjd||dd|tgdd||dd|tdddS)Nr3r1rrZ1a2b30+0)r?rkr!hexr"r~ memoryviewrrrrtest_hexs zBaseBytesTest.test_hexcCs|d}||d|t|dWdn1sD0Y|t|dWdn1sx0Y||ddd|t|ddWdn1s0Y|t|dWdn1s0Y|t|dWdn1s,0Y|t|d Wdn1sb0Y|t|td Wdn1s0Y||ddd||d d ||d d ||dd||dd||ddd||ddd||ddd||dd||dd||ddd||ddd||ddd||ddd||dddd}||dd d!dS)"NsZb901efrxx:rÿrBrnzb901efrzb901efrMr|zb9:01:ef$zb9$01$efr3r;r=zb9:01ef*r<zb901*efs {sworldishelloi0.zC7b7305000000776f.726c646902000000.730500000068656c.6c6f690100000030)r!r"rr?rhrkchr)rZ three_bytesrrrrtest_hex_separator_basicssD  ( ( * ( * * .z'BaseBytesTest.test_hex_separator_basicscCs$|tdd}||ddS)NZ_Z 5a5b5c5d5er!rQr"r)rZ five_bytesrrrtest_hex_separator_five_bytessz+BaseBytesTest.test_hex_separator_five_bytescCs|ddtddD}||d||ddd||dd d ||d d d ||ddd||ddd||ddd||ddd||ddd||ddd||ddd||ddd||ddddS)Ncss|]}|dVqdS)rMNrrHrrrrrJr1z=BaseBytesTest.test_hex_separator_six_bytes..r3rZ 0306090c0f12rz03.06.09.0c.0f.12 r=z0306 090c 0f12-rMz 030609-0c0f12rr|z 0306:090c0f12roz 03:06090c0f12r_rZ 030609_0c0f12rz 0306090c:0f12@rz 0306090c0f@12iir)rZ six_bytesrrrtest_hex_separator_six_bytessz*BaseBytesTest.test_hex_separator_six_bytescCs||dgd||ddgddgddgddggdfD]d}tt|j|}||d|d||dt|d||dt|dqL|dj}||dd gd ||tdd gd ||dtd gd ||tdd gd ||dtd gd dgd }dd d }||||dgd }dd }||d||| t |djd| t "|tdddgWdn1s0Y| t "|tdddgWdn1s 0YdS)Nr1rrrrr)rrrs.:scdsab.:cdis.:abci Zcdsef) r"r!joinrRrrTrUrr~r?rk)rZlstZdot_joinseqZexpectedrrr test_joins0     2 zBaseBytesTest.test_joincCs|d}d}d}d}||dd||dd||d d |||d|||d ||dd d||d d d||dd dd ||d ddd |||d d|||d d|||d dd |||ddd dS)N mississippiipwir|ssr=wrrpr3rMr )r!r"count)rr&rIpwrrr test_count5s" zBaseBytesTest.test_countcCs|d}||d||d||d||d||d||d|t}|dgWdn1s0Yt|j}|d||d|dS) NhelloanythingshelhshellowsharcrT) r!r startswithrr?rkrrrSrr&rexcrrrtest_startswithLs  *  zBaseBytesTest.test_startswithcCs|d}|td||d||d||d||d||d|t}|dgWdn1s0Yt|j}| d|| d|dS) NrrsllooswhellosnorcrT) r!rr~endswithrr?rkrrrSrrrr test_endswithZs  *  zBaseBytesTest.test_endswithcCs|d}d}d}||dd||dd||dd|||d |||d||dd d ||dd d d||dd d d|||d d |||d d d |||d d dddtjd fD]}|td|j|qdS)Nrrrrr=rr; mississippianr3rMrorrrBzbyte must be in range\(0, 256\))r!r"findr5r6assertRaisesRegexrh)rr&rIrindexrrr test_findhs& zBaseBytesTest.test_findcCs|d}d}d}||dd||dd||dd|||d |||d||dd d||dd d d |||dd d|||d dd|||dd ddS)Nrrrrrorr;r%r8rMrrr=r3rr)r!r"rfindrr&rIrrrr test_rfinds zBaseBytesTest.test_rfindcCs|d}d}d}||dd|t|jd|t|jd|||d|t|j|||dd d ||ddd d|t|jddd |||d d |||dd d|t|j|dd dS) Nrrrrr=rr%r3rMrorr)r!r"r(r?rhr+rrr test_indexs zBaseBytesTest.test_indexcCs|d}d}d}||dd|t|jd|t|jd|||d|t|j|||dd d||dd d d |||d d d |||d dd|t|j|d d dS)Nrrrrrorr%r8rMrrr=r3rr)r!r"rindexr?rhr+rrr test_rindexs zBaseBytesTest.test_rindexcCs|d}|}|d}||d||d|||u|d}|d}||d|t||j|d}|d}||d|t||jdS Ns hello, %b!worlds hello, world!s%s / 100 = %d%%)s seventy-nineOsseventy-nine / 100 = 79%s hello,%b!s hello,world!r!r"rassertIsr#)rr&origr-rrrtest_mods       zBaseBytesTest.test_modcCs|d}|}|d;}||d||d|||u|d}|d;}||d|t||j|d}|d;}||d|t||jdSr0r3)rr&r5rrr test_imods       zBaseBytesTest.test_imodcCsV|t t|dWdn1s00Y||ddtdS)Nrz%r)r?rkobjectr!r4__rmod__NotImplementedrrrr test_rmods .zBaseBytesTest.test_rmodcCs6|d}||ddd||ddddS)Nrrrs massassapparrs mixixippi)r!r"replacer%rrr test_replaces zBaseBytesTest.test_replacecCs|t|djdddS)Na b r1)r?rkr!r<rrrrtest_replace_int_errorsz$BaseBytesTest.test_replace_int_errorcCs0|t|djd|t|djddSNr>rr?rkr!splitrsplitrrrrtest_split_string_errorsz%BaseBytesTest.test_split_string_errorcCs0|t|djd|t|djddSNr>r?rBrrrrtest_split_int_errorsz"BaseBytesTest.test_split_int_errorcCsFdD] }||}|||gq|d}||dgdS)N)sabsabsabsab )r!r"rCr%rrrtest_split_unicodewhitespaces   z*BaseBytesTest.test_split_unicodewhitespacecCs |d}||dgdS)NrHrI)r!r"rDr%rrrtest_rsplit_unicodewhitespaces z+BaseBytesTest.test_rsplit_unicodewhitespacecCs2|d}||dd||dddS)Nrr)smirsissippir)rr1r1)r!r" partitionr%rrrtest_partitions zBaseBytesTest.test_partitioncCsD|d}||dd||dd||dddS)Nrr)smissirsippir)s mississipprr1r)r1r1r)r!r" rpartitionr%rrrtest_rpartitions zBaseBytesTest.test_rpartitioncCs0|t|djd|t|djddSrAr?rkr!rLrNrrrrtest_partition_string_errorsz)BaseBytesTest.test_partition_string_errorcCs0|t|djd|t|djddSrFrPrrrrtest_partition_int_error sz&BaseBytesTest.test_partition_int_errorcCsNttjdD]:}dD]0}||}t||}t|}|||qqdSNr3)r1rrsabs)rQpickleHIGHEST_PROTOCOLr!dumpsloadsr")rprotor&Zpsqrrr test_picklings    zBaseBytesTest.test_picklingcCsttjdD]}dD]}t||}}t||}t||}t|}|t |t ||t||t|}|sqt |t||}t|}|t||ddqqdSrS) rQrTrUrUr!rRrVrWr"r#next)rrXr&itZitorgrdrrrtest_iterator_picklings     z$BaseBytesTest.test_iterator_picklingcCsX||dtdd||dtdd||dtdddS)Nrrrrr)r"r!striprlstriprstriprrrrtest_strip_bytearray*sz"BaseBytesTest.test_strip_bytearraycCsF|t|djd|t|djd|t|djddS)NrZacr?rkr!r_r`rarrrrtest_strip_string_error/sz%BaseBytesTest.test_strip_string_errorcCsF|t|djd|t|djd|t|djddS)Ns abc r?rcrrrrtest_strip_int_error4sz"BaseBytesTest.test_strip_int_errorcCs:|d}ttfD]"}||d|d|dqdS)Nrr-s--abc--)r!rcr~r"centerrr&Z fill_typerrr test_center9s   zBaseBytesTest.test_centercCs:|d}ttfD]"}||d|d|dqdS)Nrrrfsabc----)r!rcr~r"ljustrhrrr test_ljust@s   zBaseBytesTest.test_ljustcCs:|d}ttfD]"}||d|d|dqdS)Nrrrfs----abc)r!rcr~r"rjustrhrrr test_rjustGs   zBaseBytesTest.test_rjustcCsL|t|djdd|t|djdd|t|djdddS)Nrrr?)r?rkr!rgrjrlrrrrtest_xjust_int_errorNsz"BaseBytesTest.test_xjust_int_errorcs4|d|fddttDgddS)NsAcs g|]}t||dqS)r3)rrGr/rr Ur1z*BaseBytesTest.test_ord..)rArKrf)r!r"rQr>rrr/rtest_ordSs zBaseBytesTest.test_ordcCs`d}||jdd|d}||jdd||t|jjdd|t|jjdddS) Ns  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`xyzdefghijklmnopqrstuvwxyz{|}~rxyzs  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~xyzssxyzqrr)r"r! maketransr?rhrk)rZ transtablerrrtest_maketransXs zBaseBytesTest.test_maketranscCs|d}|d}|d}|d}|d}|d||d|d||dd|d||dd|d ||dd|d||d|d||dd|d||dd|d ||dd|d||d|d||dd|d||dd|d ||dd|d||d|d||dd|d||dd|d ||dd|d||d|d ||dd|d ||dd|d ||dd|d ||d|d ||dd|d ||dd|d ||dd|d ||d|d ||dd|d ||dd|d ||dddS) Nrlrrr"r=rMr<rr3TF) r!r"r&r*r(r.rr#r)rr&lhrorrrtest_none_arguments`sB     z!BaseBytesTest.test_none_argumentscCsV|d}|j|j|j|j|jfD].}|t|d|t|d|t|dq"dS)Nrr;rBi')r!rr&r(r*r.r?rh)rr&methodrrr(test_integer_arguments_out_of_byte_ranges  z6BaseBytesTest.test_integer_arguments_out_of_byte_rangec Cs|d}|d}|td|j|ddd|td|j|ddd|td|j|ddd|td|j|ddd|td|j|ddd|td|j|ddd|td |j |ddddS) Nrrz\bfind\bz \brfind\bz \bindex\bz \brindex\bz \bcount\bz\bstartswith\bz \bendswith\b) r!r'rkr&r*r(r.rrr#)rr&rrrr*test_find_etc_raise_correct_error_messagess.         z8BaseBytesTest.test_find_etc_raise_correct_error_messagescCs(tj|t|jtj|t|jdSr)rr Zcheck_free_after_iteratingrUr!rrrrrtest_free_after_iteratingsz'BaseBytesTest.test_free_after_iteratingcCs4|d}ttd}td|td<|t|j|t|jdd|t|jttd||d}| |d| ||j||}||d}| ||| |d||d}| |d |dd }| |d |j|dd }| |d|j|dd }| |d |jdd d }| |d dS) NrrBeryrfr1shellervsheeeshllo)delete) r!r~rQrr?rk translaterhrcr"assertIsInstance)rr&Zrosettarr]rrrtest_translates.              zBaseBytesTest.test_translatecCstjd}|d}|t||dWdn1sB0Y|t||dWdn1sx0Y|||dddS)N _testcapi)rCr<r3rrC)rr import_moduler!r?r@Zsequence_getitemr")rrobjrrr test_sq_items   * *zBaseBytesTest.test_sq_itemN)Krrrr'r.rArVrXrYrdrirmrtrzr{rrrrrrrrrrrrrrrrrrrrrr r rr!r$r)r,r-r/r6r7r;r=r@rErGrJrKrMrOrQrRrZr^rbrdrerirkrmrnrrrurzr|r}r~rrrrrrr -s      8  %%+r c@s8eZdZeZddZddZddZddZd d Z d S) BytesTestcCs@d}d}|t||dWdn1s20YdS)Npythonz'byte indices must be integers or slicesr-)r'rkrr&msgrrrtest_getitem_errorszBytesTest.test_getitem_errorcCsPtttj}t|ddd }|t|jdWdn1sB0YdS)Nrbr) bufferingr1)osopen__file__O_RDONLYr?rkreadinto)rfdrrrrtest_buffer_is_readonlysz!BytesTest.test_buffer_is_readonlycCsGddd}|t|dGddd}|tt|Gddd}|tt|Gddd}|t|dGdddt}|t|d d|t|d d d Gd dd}|t|d|tt|t|t|d|tt|tdS) Nc@seZdZddZdS) BytesTest.test_custom..AcSsdSNrrrrrr __bytes__s*BytesTest.test_custom..A.__bytes__NrrrrrrrrAsrrc@s eZdZdS)rNrurrrrrr1c@seZdZddZdS)rcSsdSrrrrrrrsrNrrrrrrsc@seZdZddZddZdS)rcSsdS)NrrrrrrrsrcSsdSrZrrrrrrsz*BytesTest.test_custom..A.__index__N)rrrrrrrrrrsrc@seZdZddZdS)rcSsdSrrrrrrrsrNrrrrrrsu€z iso8859-15c@seZdZddZdS)rcSstdSr)OtherBytesSubclassrrrrrsrNrrrrrrs) r"rcr?rkrr4r#r BytesSubclass)rrrrr test_customs zBytesTest.test_customc sxtjd}tjd}ddlm}m}ddlm}m}m}m }m } m } m } |j } | f| _|| _|| dd|| ddd || d |dd || d |td d || d |dd|| d|d|d| dd|| d|d|d| dd|| d|d|d| dd|| d|dd|| d|d d!|| d"|d#d$|| } tjd%krd&d| fd'd(}nd)d(}d*}|| d+| |d,||d-|| d.| d/d0| dj}d1||jtfd1||jtfd2||jtfd2||jtfd3||jtfd4| |jtfd4| |jtfd5| |tfd6| ||ff D]0\}}}}|| |||||d-fq^|| d7d8d8|| d9d:d;|| d<d=|| d>d?|| d@|tdAdB|| dCdD|| d=d=|| dE|d|ddF| t!| dG|d| t!| dG|dH|| dIdI|| dDdIdIdS)JNctypesrr) pythonapi py_object)c_intc_uintc_longc_ulongc_size_t c_ssize_tc_char_psformats Hello %s !r1s Hello world !sc=%csc=@sc=@rfsc=sd=%d ld=%ld zd=%zdr3r=rMs d=1 ld=2 zd=3r;r<rsd=-1 ld=-2 zd=-3su=%u lu=%lu zu=%zu{iisu=123 lu=456 zu=789si=%isi=123isi=-123sx=%xi sx=abcntz0x%0{}Xcs|SrrptrZ ptr_formatrr ptr_formatter5sz1BytesTest.test_from_format..ptr_formattercSsd|S)Nz%#xrrrrrr9siͫsptr=%pzptr=rqss=%sscstrss=cstrs%ds%lds%lus%zds%zus%ps%5srs%.3srrs%%%s[%%]s[%]s%%%crs%_s%%ss%ssx=%i y=%sx=2 y=%s%crBr1)"rr rrrrrrrrrrrPyBytes_FromFormatargtypesZrestyper"rZsizeofrnameformatrrZINT_MINrZINT_MAXZLONG_MINZLONG_MAXZ ULONG_MAXZPY_SSIZE_T_MINZPY_SSIZE_T_MAXr?rs)rrrrrrrrrrrrrZ sizeof_ptrrrZsize_maxZ formatstrZ ctypes_typerZ py_formatterrrrtest_from_formats  $                            zBytesTest.test_from_formatcCsGdddt}gd}|t|d|tt||Gdddt}|tdd|tt|dGd d d t}|td d |tt|d Gd d d t}td |d }}|t|d |tt|dS)Nc@seZdZdZdS)z7BytesTest.test_bytes_blocking..IterationBlockedNrrrrrIterationBlockedusr)rr3r=rMsc@seZdZdZdS)z1BytesTest.test_bytes_blocking..IntBlockedNrrrrr IntBlocked~srrMsc@seZdZdZdS)z;BytesTest.test_bytes_blocking..BytesSubclassBlockedNrrrrrBytesSubclassBlockedsrrc@seZdZdZdS)z4BytesTest.test_bytes_blocking..BufferBlockedNrrrrr BufferBlockedsr)rRr"rcr?rkrr~)rrrIrrrbabbrrrtest_bytes_blockingtszBytesTest.test_bytes_blockingN) rrrrcr!rrrrrrrrrrs !rrc@s2eZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Z d9d:Z!d;d<Z"e#j$j%d=d>Z&d?d@Z'e#j(j)j*Z*dAdBZ+dCdDZ,dES)F ByteArrayTestcCsDtd}d}|t||dWdn1s60YdS)Nr,bytearray indices must be integers or slicesr-r~r'rkrrrrrsz ByteArrayTest.test_getitem_errorcCsDtd}d}|t|d|d<Wdn1s60YdS)NrrZpythonr-rrrrrtest_setitem_errorsz ByteArrayTest.test_setitem_errorcCs|tttdSr)r?rkhashr~rrrr test_nohashszByteArrayTest.test_nohashcCszd}|ddt|}t}z,t|d}||Wdn1sN0Yt|d"}td}||}Wdn1s0Y||t||t|t|t|d}||Wdn1s0Yt|d }|| |Wdn1s0YWzt |Wnt yLYn0n&zt |Wnt yrYn00dS)Ns Hello world rnwbr) r>tempfilemktemprwriter~rr"rRreadrremoveOSError)rZ short_samplerZtfnrr&nrrrtest_bytearray_apis. ( ( ( 2z ByteArrayTest.test_bytearray_apicCs\td}||d||dtd}|||dt}|||dS)Nrsollehshello1s1olleh)r~r"rrr%rrr test_reverses  zByteArrayTest.test_reversecCsttd}|||dtd}|||dtd}|td||td||ddS)Nrr1rrr)r~r[r"r`rr%rrr test_clears  zByteArrayTest.test_clearcCstd}|}||dtd}|}||dtd}|}|||||||td||d||ddS)Nrr1r]r))r~r*r" assertIsNotr`r)rr&rrrrr.s     zByteArrayTest.test_copycCs4dd}|d}|td||d|dgdS)NcSsttt|Sr)r~rrrrrrrsz&ByteArrayTest.test_regexps..byrs\w+rr)r"refindallrrrr test_regexpsszByteArrayTest.test_regexpscCsBtgd}d|d<||tgdd|d<||tgdtd|d <||tgd zd |d <|d WntyYn0zd |d <|d WntyYn0zd|d <|dWntyYn0ztd|d <|dWntyYn0zd|d <|dWnty<Yn0dS)NrLr9r3)r3r9rMrr;)r3r9rr8r)r8r9rrMzDidn't raise IndexErrorirBzDidn't raise ValueErrorzDidn't raise TypeError)r~r"rfailr@rhrkr%rrr test_setitems@      zByteArrayTest.test_setitemcCsbttd}|d=||ttdd|d=||ttdd|d=||tgddS)Nr8rr3r;rr|)r3r=rMr|rrr)r~rQr"r%rrr test_delitems zByteArrayTest.test_delitemc Csttd}|t|ttdtgd|dd<||tgd|dd=||tgdtgd|dd<||ttdtd d g|d d <||tgd gd|dd<||ttdgd|dd<||tgdd|dd<||tgdtd|dd<||tgdg|dd<||tgddddtdddddgddgggf D]>}|t||dd<Wdn1s0Yqgddd gfD]>}|t||dd<Wdn1s 0YqdS)!Nr8)r3r3r3r3r3rro) r3r3r3r3r3rorrrrr)rorrrr)rr3r=rMr|r9err)rr3r=r9rrrr)rMr|rorrM)rCrCrC) rr3r=rCrCrCrMr|rorrrrsfoo)rr3r=for)rrrrrrr|)rrrrrgPKDrgffffff@r-r&rr)rerfrBii(#) r~rQr"rRrrr?rkrh)rr&elemrrr test_setslices8     0 zByteArrayTest.test_setslicecCsvttd}|t|ttd|dd=|t|ttdd|tdd|t|ttdddS)Nr9r8n)r~rQr"rRextendr%rrrtest_setslice_extendDs   z"ByteArrayTest.test_setslice_extendcCs,td}||dd=|td7}~dS)Nr8r3r=)r~poprcr%rrrtest_fifo_overrunMs   zByteArrayTest.test_fifo_overruncCs2td}t|}|dd=|t||dS)Nr8r3)r~r5 getsizeofassertLessEqual)rr&rrrrtest_del_expandVs  zByteArrayTest.test_del_expandc Csdddddddd>tjddd d f }|D]}|D]}|ddD]}ttd }t|}||||}||||||<|||||<||t|||||=||||=||t|q>q.q&dS) Nrr3rMrriMr;r<rirf)r5r6rRrQr~rr")rrrrrrr&rrrrtest_extended_set_del_slice]s    z)ByteArrayTest.test_extended_set_del_slicecCs@ttd}||dd<||tttdttddS)NrBr)r~rQr"rRr%rrrtest_setslice_traprs  z ByteArrayTest.test_setslice_trapcCsztd}|}|d7}||d|||||||d7}||dz |d7}WntyjYn 0|ddS)Nrrrrss abcdefxyzrz'bytes += unicode didn't raise TypeError)r~r"r4rkrrr&rrrr test_iconcatys      zByteArrayTest.test_iconcatcCs<td}|}|d9}||d||||||dS)NrrMrr~r"r4rrrr test_irepeats   zByteArrayTest.test_irepeatcCs<td}|}|d9}||d||||||dS)Nrr9sdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrrrrrtest_irepeat_1chars   z ByteArrayTest.test_irepeat_1charcCsdt}|}||d|g}tdD]6}|d7}|}||t|||vr(||q(dS)Nrr9r)r~ __alloc__ZassertGreaterEqualrQ assertGreaterr>r`)rr&allocr rIrrr test_allocs  zByteArrayTest.test_alloccsftfdd}|tttddtd}|tdS)Nc 3s|tddD]l}|Vt}|ttdt|dtt|t|}|tq dS)Nr3r9)rQrRr"r>rrr)rIr-rr&rrrgsz(ByteArrayTest.test_init_alloc..gr3r9c)r~rr"rRrQr>rr)rrrrrrtest_init_allocs zByteArrayTest.test_init_alloccCsd}t|}||||||||dd|td}|tt|d|dd|dD|||d||dd|td}|ttt|d|||d||dd|td}|ttt|d|||d||dd|td}|t|jgd |t|jgd |t |d td}|t t d g||d dS)Nrror1css|]}t|VqdSr)rrrrrrJr1z,ByteArrayTest.test_extend..2r)rr3r=rB)rr3r=r;rr-r) r~rr"rrrUrRr?rhr>rr)rr5r-rrr test_extends2 zByteArrayTest.test_extendcstdtd|dtd|d|tfdd|tfdd|tfddtd td |d |tfd dttd |dtgd}|d||tgd|d||tddgdS)NrrwshelosheocstdS)Nrw)rrrr/rrr0r1z+ByteArrayTest.test_remove..cs dS)Nirrr/rrr0r1cs dS)Nrrrr/rrr0r1ryrxrcs dS)Nrrrr/rrr0r1rr1)~rqrKrq)rrKrrrrK) r~rrr"r?rhrkrrcrrr/r test_removes&       zByteArrayTest.test_removecstd|td|dtd|dtd|tfdd|td d|td d dS) Nr1r]rrr<rcs dS)Nr8)rrr/rrr0r1z(ByteArrayTest.test_pop..cSs tSr)r~rrrrrr0r1rrf)r~r"rrr?r@rrr/rtest_popszByteArrayTest.test_popcCs|tdddS)NcSs tSr)r~sortrrrrr0r1z+ByteArrayTest.test_nosort..)r?AttributeErrorrrrr test_nosortszByteArrayTest.test_nosortcstdtd|d|ddttd|td|tfddtttd|d dS) Nshellryrr9rr3cs dS)Nr")r`rr/rrr0r1z+ByteArrayTest.test_append..A)r~r`rr"r>r?rkrrrr/r test_appends zByteArrayTest.test_appendcstddtddtddtddtd|d|tfdd td ttd |d dS) Nsmssssppr3rIr|r<r_rcs ddS)Nr1)insertrr/rrr0 r1z+ByteArrayTest.test_insert..rrr)r~rrr"r?rkrrrr/r test_inserts zByteArrayTest.test_insertcCsRtd}|||dddtddtdD}td}||||dS)NrscdercSsg|]}|qSrrrGrrrror1z-ByteArrayTest.test_copied..rBr1)r~rr<rQr)rr&trrrr test_copieds zByteArrayTest.test_copiedcCstdd\}}}||d||d||||d7}||dtdd\}}}||d||dtdd\}}}||d||d||||d7}||dtdd\}}}||d||ddS)Nryr1!)r~rLr"rrN)rr-r&rrrr0test_partition_bytearray_doesnt_share_nullstrings$           z>ByteArrayTest.test_partition_bytearray_doesnt_share_nullstringcs ttdt}fdd}|ddd}|t|d|||t|d|||t|d|||tjd|||tjd||fdd }|t|||fd d }|t|||dS) Nr8cs"t|dd|ddd<dS)Nr3r=r;)rQ)rr/rrresize6sz3ByteArrayTest.test_resize_forbidden..resize rrr3cs d=dSr2rrr/rrdelitemEsz4ByteArrayTest.test_resize_forbidden..delitemcsdddd<dS)Nr1r3r;r=rrr/rrdelsliceJsz5ByteArrayTest.test_resize_forbidden..delslice)r~rQrr? BufferErrorr"rr)rvr r5r r rr/rtest_resize_forbidden/s*             z#ByteArrayTest.test_resize_forbiddencCs ddlm}|t|tdS)Nr)getbuffer_with_null_view)rrr?rr~)rrrrrtest_obsolete_write_lockOs z&ByteArrayTest.test_obsolete_write_lockc Cstd}td}ttjdD]v}t|}t||f|}t|\}}||dd<|t |t ||t||t |t||f|}t|\}}||dd<|t |t ||t||ddtdt |D] }t |qt||f|}t|\}}||dd<|t |t ||t||t |d| t t |t||f|}t|\}}||dd<|t|gqdS)Nrsqwertyr3)r~rRrQrTrUrUrVrWr"r#r[r>r? StopIteration) rr5rrXZitorigr]r\r&rIrrrtest_iterator_pickling2Ts6     z%ByteArrayTest.test_iterator_pickling2cCs4td}t|}t|||t|gdS)Nr)r~rUr[r[r"rR)rrr\rrrtest_iterator_length_hintzs z'ByteArrayTest.test_iterator_length_hintcCsLtd}d|dd<|d}|d}||d|||||ddS)Nrrr=r3rMsxcsxcxcxcr~r")rr&rrrrrtest_repeat_after_setslices   z(ByteArrayTest.test_repeat_after_setsliceN)-rrrr~r!rrrrrrr.rrrrrrrrrrrrrrrrrrrrrr rrr Z cpython_onlyrrZ list_testsZ CommonTestZtest_exhausted_iteratorrrrrrrrsJ " (         $  rc@seZdZeddZeddZddZejj ddZ d d Z ed d Z d dZ ddZddZddZeejjdddZdS)AssortedBytesTestcCsttfD]t}||td||tdgd||tgdd||dd||dd ||d d qdS) Nbytearray(b'')rzbytearray(b'\x00')rgzbytearray(b'\x00\x01\xfe\xff')rzb'abc''zb"'"s'"zb'\'"')rreprr"r~rrrr test_repr_strs zAssortedBytesTest.test_repr_strc CsdtdfD]t}|t|t||t|dt||tdtt|j t|dWdq 1sv0Yq dS)Nrrz\b%s\br) r~r"rrr'rkrescaper#rr%rrr test_formatszAssortedBytesTest.test_formatcCs|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|dtdkd|tddkd|tddkd|tddkd|tddkd|tddkd|tddkd|tddkd|tddkd|tddkd|tddkd|tddkd|tddkddS)NrTrFrbrrrrtest_compare_bytes_to_bytearrays0z1AssortedBytesTest.test_compare_bytes_to_bytearraycCsH|tj|tjdtj|tj|tjdtjdS)Nz bytearray(zbytes()ZassertIsNotNoner~__doc__rrrcrrrrtest_docs  zAssortedBytesTest.test_doccCs,td}t|}t|}||t|dS)NsHello world )rcrr~r")rrbufr&rrrtest_from_bytearraysz%AssortedBytesTest.test_from_bytearraycCsp|tdd|tdd|tdd|ttdd|ttdd|ttdd dS) Nr1zb''rzb'x'rzb'\x80'rzbytearray(b'x')zbytearray(b'\x80'))r"rr~rrrr test_to_strs zAssortedBytesTest.test_to_strcCsRgd}|D]\}}||t|dq tddD]}|ttdt|q2dS)N))sWonderful spamzWonderful spam)sWonderful spam toozWonderful spam too)suª€)s\xaa\x00\000\200z\xaa\x00\000\200rrKrBzb"%s")r"r~rQr? SyntaxErrorevalr)rZtestsr&rrrrr test_literals  zAssortedBytesTest.test_literalcCs|dtdddgdSNr>r rr)r"rCrrrrrtest_split_bytearraysz&AssortedBytesTest.test_split_bytearraycCs|dtdddgdSr()r"rDrrrrrtest_rsplit_bytearraysz'AssortedBytesTest.test_rsplit_bytearraycCst}||dd|dS)Nr1)r~rr<r%rrrtest_return_selfsz"AssortedBytesTest.test_return_selfz4BytesWarning is needed for this test: use -bb optioncCsRdd}|ddkWdn1s,0Y|ddkWdn1sZ0Y|ddkWdn1s0Y|ddkWdn1s0Y|tddkWdn1s0Y|dtdkWdn1s0Y|tddkWdn1sP0Y|dtdkWdn1s0Y|ddkWdn1s0Y|ddkWdn1s0Y|ddkWdn1s0Y|ddkWdn1sD0YdS)NcSstjdtfSrrrrrr bytes_warningsz5AssortedBytesTest.test_compare..bytes_warningr1rrnrr~)rr,rrrrs2&&&&*,,,(((zAssortedBytesTest.test_compareN)rrrrrrrrr Zrequires_docstringsr!r#r$r'r)r*r+unittestZ skipUnlessr5flagsr,rrrrrrs$      rc@seZdZddZddZdS)BytearrayPEP3137TestcCst|Srr-)rrrrrmarshal szBytearrayPEP3137Test.marshalcCs|d}dD]4}t||}|d}|||||||dqdD]*}t|}|||||||dqH|d}||g}||||||dS)Ns1234)zfillrlrjrgrMz" returned self on a mutable object)zval.split()[0]zval.rsplit()[0]zval.partition(b".")[0]zval.rpartition(b".")[2]zval.splitlines()[0]zval.replace(b"", b"")z! returned val on a mutable objectr1)r1getattrr"rr&r )rvalZmethnamer{Znewvalexprseprrrtest_returns_new_copy#s$       z*BytearrayPEP3137Test.test_returns_new_copyN)rrrr1r7rrrrr0sr0cs eZdZfddZdZZS)FixedStringTestcs&t|tr||dSt|S)Nr) isinstancerr!rsuperfixtype)rrr$rrr;;s zFixedStringTest.fixtypeT)rrrr;Zcontains_bytes __classcell__rrr<rr8:s r8c@seZdZeZdS)ByteArrayAsStringTestN)rrrr~r!rrrrr>Bsr>c@seZdZeZdS)BytesAsStringTestN)rrrrcr!rrrrr?Esr?c@s4eZdZddZddZddZddZd d Zd S) SubclassTestcCs|t|j|j|||jd\}}||||}}|||k|||k|||k|||k|||k|||k||||||||||||||||||||d|dkdS)N)r)efghro)r issubclassr!basetyperrr")rr-r&Z_aZ_brrr test_basicKs zSubclassTest.test_basiccCs`|d}||g}||||t||jt||dg}|t||jdSr()r!rCr rr4r#)rs1s2Zs3rrrr cs    zSubclassTest.test_joincCs|d}d|_|d|_ttjdD]}tt||}|t |t || ||| |j|j| |j|j| t |t || t |jt |jq*dS)Nr)r8rAr3) r!ryrQrTrUrWrVassertNotEqualidr"r#)rr-rXr&rrr test_pickleps   zSubclassTest.test_picklecCs|d}d|_|d|_tjtjfD]x}||}|t|t||||||j|j||j|j|t|t||t|jt|jq(dS)Nr)r8rA) r!rrGr*r+rHrIr"r#r,rrrr.}s   zSubclassTest.test_copycsjd}|dt|jGfdddj}|d}|dt|||jdGfdddj}|d}|dt|||jddS)NrrcseZdZfddZdS)z%SubclassTest.test_fromhex..B1csj||}d|_|SNbar)rC__new__foo)clsrmerrrrMsz-SubclassTest.test_fromhex..B1.__new__N)rrrrMrrrrB1srQrLcseZdZfddZdS)z%SubclassTest.test_fromhex..B2cs.jtur$jj|g|Ri|d|_dSrK)rCrcrrN)rPr kwargsrrrrs z.SubclassTest.test_fromhex..B2.__init__NrrrrrrrrB2srT)r!rr"r4r#rCrN)rr&rQrTrrrrs      zSubclassTest.test_fromhexN)rrrrDr rJr.rrrrrr@Is    r@c@s eZdZdS)ByteArraySubclassNrurrrrrUsrUc@s eZdZdS)rNrurrrrrsrc@s eZdZdS)rNrurrrrrsrc@seZdZeZeZddZdS)ByteArraySubclassTestcCsNGdddt}|dd}|ddd}||d|ddd}||ddS)Nc@seZdZdddZdS)z:ByteArraySubclassTest.test_init_override..subclassr3c_stj|g|Ri|dSr)r~r)rPnewargr rRrrrrszCByteArraySubclassTest.test_init_override..subclass.__init__N)r3rSrrrrsubclasssrXr|r))source)rWrYr)rrXrrrrtest_init_overrides     z(ByteArraySubclassTest.test_init_overrideN)rrrr~rCrUr!rZrrrrrVsrVc@seZdZeZeZdS)BytesSubclassTestN)rrrrcrCrr!rrrrr[sr[__main__),r rlrrr5r*rrTrrr.Z test.supportrZtest.string_testsZtest.list_testsrrZtest.support.script_helperrr/r,rrr ZTestCaserrrr0Z string_testsZBaseTestr8r>r?r@r~rUrcrrrVr[rmainrrrrs^  -A~]