a zeK@sddlZddlZddlZddlZddlmZgdZgdZeeddgZGdddej Z Gd d d e Z Gd d d e Z Gd dde Z edkredS)N)support) b2a_base64b2a_hexb2a_hqxb2a_qpb2a_uuhexlify rlecode_hqx) a2b_base64a2b_hexa2b_hqxa2b_qpa2b_uu unhexlify rledecode_hqxcrc32crc_hqxc@seZdZeZdZeeed7Zed7ZddZddZdd Z e j e d d d Z d dZddZddZddZe j e d ddZddZe j e d ddZe j e d ddZddZdd Zd!d"Ze j e d d#d$Zd%d&Ze j e d d'd(Zd)d*Zd+d,Zd-S). BinASCIITests.The quick brown fox jumps over the lazy dog. s Hello world. cCs||j|_dSN) type2testrawdatadataselfrF/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_binascii.pysetUpszBinASCIITest.setUpcCs(|ttjt|ttjtdSr) assertTrue issubclassbinasciiError ExceptionZ Incompleterrrrtest_exceptionsszBinASCIITest.test_exceptionscCs6tD],}|ttt|d|ttt|qdS)N__call__) all_functionsrhasattrgetattrr assertRaises TypeError)rnamerrrtest_functions"szBinASCIITest.test_functions)categoryc Csd}|jd|}tttD]\}}tt|}tt|}z |||}|||}Wn8ty} z |d ||| WYd} ~ n d} ~ 00|dkr|\}} | ||d ||||| |t | |t | t|dq| t|dt| t|tdS)N-{}/{} conversion raises {!r}r{}/{} conversion: {!r} != {!r}r)rzip a2b_functions b2a_functionsr'r rr"failformat assertEqualassertIsInstancebytesZ assertLessmaxrintr) rMAX_ALLrawfafba2bb2aareserr_rrrtest_returned_value(s(  *   z BinASCIITest.test_returned_valuecCsd}g}tdt|j|D]0}||j|||}t|}||qt}|D] }||}t|}||7}qV| ||jdS)N9r) rangelenrrr rappendr8r r6)r MAX_BASE64linesibrArBlinerrrtest_base64valid@s     zBinASCIITest.test_base64validc sd}g}tdt|j|D]0}||j|||}t|}||qtd}tdD]}||vr^|q^fdd}t}t ||D] } || }t |}||7}q| ||j| t |ddS)NrFrs@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/rcs|}t|t|}t}|rp|rpt|t||krN|d|dd}}n|d|dd}}||q|||S)Nr)rH bytearrayrI)rNZnoiseZratiorBcZfillersrraddnoise^s z1BinASCIITest.test_base64invalid..addnoise) rGrHrrrr rrIrQmapr r6) rrJrKrLrMrAZvalidrTrBrNrrSrtest_base64invalidOs&        zBinASCIITest.test_base64invalidcsfdd}|d|d|d|d|d|d|d |d fd d }|d |d|d|d|d|d|ddS)NcsBtjd t|Wdn1s40YdS)Nz(?i)Incorrect padding)assertRaisesRegexr r!r r)rrrrassertIncorrectPaddingvsz>BinASCIITest.test_base64errors..assertIncorrectPaddingsabsab=abcsabcdefsabcdef=sabcdefgsa=b=sa b=cs`ttdd|}dt|}tj| t|Wdn1sR0YdS)Ns[^A-Za-z0-9/+]rUz((?i)Invalid.+number of data characters.+) rHresubstrrXr r!r r)rZ n_data_charsZexpected_errmsg_rerrrassertInvalidLengths  z;BinASCIITest.test_base64errors..assertInvalidLengthasa=sa==sa===saaaaas]aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas A B C ??DEr)rrYr^rrrtest_base64errorsts"  zBinASCIITest.test_base64errorsc Csd}dD]}g}tdt|j|D]4}||j|||}tj||d}||q"t}|D] }||}t |}||7}qb| ||jq| t dd| t dd| t d d| tj tj d | tj tj d | tj tjd | td d| tdd| tjdddd| t dd| t dd| tdd| tjdddd| t dt d| t tddWdn1s0YdS)Nr-)TFr)backtickss ss!!!!s.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!xs!> rUs Ts` sCats $ $-A= s $`$-A=``` )rGrHrrrr rrIr8rr6r(r!r)) rZMAX_UUrarKrLrMrArBrNrrrtest_uusB      zBinASCIITest.test_uucCst|dd}t|d|}||d|ttj|ttj|ddD]"}|t|d||d@qXdS)NTest the CRC-32 ofr this string.i7rU)rrPi4iE#ixV4i)r rrr6r(r)rcrcrrr test_crc_hqxs zBinASCIITest.test_crc_hqxcCs@t|d}t|d|}||d|ttjdS)Nrgrhij])r rrr6r(r)rjrrr test_crc32s zBinASCIITest.test_crc32cCsLt|j}t||}t||\}}t|}|||jdSr) r r rrrr rr6r)rZrlerArMrDrBrrrtest_hqxs   zBinASCIITest.test_hqxcCs4d}t|}||dt|}|||dS)Nsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccs adbcc-)r r r6r)rrencodedZdecodedrrrtest_rles  zBinASCIITest.test_rlecCsd}t||}t||}||||tjtj|dd|tjtj|ddd|tjtjtddg|tjtjd|tjtjd|tjtjd|tjtjd|t||||t |||dS) N {sworldishelloi0riqs0Gs0gsG0sg0) r rrr r6r(r!r8rr)rsturrrtest_hexs zBinASCIITest.test_hexcCsd}|t|||d|ddd}|t||dd||dd}|t||d|dS)Nrqascii.:)r6r rrhexencoder)rrtZ expected8Z expected1rrrtest_hex_separators "zBinASCIITest.test_hex_separatorcCs|j}tj}tj}|dddz|dUiddiWntyFYn 0|d|||dd|||dd|||dd|||d d |||d d |||d d|||d d|||dd|||dd|||dd|||dd|||dddd|||dd|||dddd|jt|dd|||dd|||dd|||d d!|||d"d#|||dd$|||dd|||dddd%|||d&ddd'|||d(ddd)|||d&ddd*d+|||d,ddd,|||dd-|||d.d/|||d0d0|||d1d1|||d0ddd-|||d1ddd/|||d2d3|||d4d5|||d4dd6d5|||d7d7|||d7dd6d8|||d7dd9d7|||d:d;|||d:dd6d;|||d:dd9d<|||d=d=|||d=dd6d>|||d=dd9d?|||d@dA|||d@dd6dA|||d@dd9dB|||dCdddD|||dEdddF|||dCdddd6dG|||dEdddd6dH|||dCdddd9dI|||dEdddd9dJ|||dKdL|||dMdN|||dOdP|||dQdR|||dSdS|||dTdddLdS)VNrUF)rheaderrPz/binascii.a2b_qp(**{1:1}) didn't raise TypeError=s= s==s= ABsABs= ABs= ABs= AB CDsCDs=ABs=abs=AXs=XAris=A_T)r Zbar)Zfoos=00 =00s s s =FF =FF =FFsR000000000000000000000000000000000000000000000000000000000000000000000000000 s[000000000000000000000000000000000000000000000000000000000000000000000000000= =FF =FF =FFrbs=7Fs=3Ds=5Fsx ysx_ysx sx=20)r quotetabssx=20ysx ys=20 s=09s xs xs=00s s=00 )rsx y zs x=20y=09z)istextsx y s x=20 y=09 s x =0Ay =0Asx y s x=20 y=09 s x =0Dy =0Dsx y s x=20 y=09 sx =0D=0Ay =0D=0Asx sx sx sx sx=20 sx=09 sx =0Dsx =0D.s=2Es. s=2E s. s=2E s.s=2E=00sa. s.a)rU)rr r rr)r4r6r()rrr rrrrtest_qps   zBinASCIITest.test_qpc Cs~|d}tD]j}|dkr(t|dqtt|}z ||Wqtyv}z |d|||WYd}~qd}~00qdS)NrUrrz{}({!r}) raises {!r})rr%r rr'r"r4r5)remptyfuncfrCrrrtest_empty_stringjs    zBinASCIITest.test_empty_stringc CsttttdhBD]T}z|ttt|dWqtyh}z|d ||WYd}~qd}~00q|ttj dddS)Nrtestz{}("test") raises {!r}r) setr%r2r(r)r'r r"r4r5r)rrrCrrrtest_unicode_b2ays *zBinASCIITest.test_unicode_b2ac Csd}|jd|}tttD]\}}|dkr.qtt|}tt|}z,|||}||}|d}||} Wn8ty} z | d ||| WYd} ~ n d} ~ 00|dkr| \} } |\}} | | |d ||| || | || | t |t|dqdS)Nr-rrxr.rr/€)rr1r2r3r'r rdecoder"r4r5r6r7r8r( ValueError) rr;r<r=r>r?r@rAZ binary_resrBrCrDrrrtest_unicode_a2bs.    *   zBinASCIITest.test_unicode_a2bcCsL|d}|t|d|tj|ddd|tj|ddddS)Nshellos aGVsbG8= T)newlineFsaGVsbG8=)rr6r r)rrMrrrtest_b2a_base64_newlines  z$BinASCIITest.test_b2a_base64_newlinecCs|t"|tddWdn1s20Y|t"|tddWdn1sn0Y|t"|tddWdn1s0Y|t"|tddWdn1s0YdS)NrZsB@*M)rZrs aaaaaaaaaasa )Z assertWarnsDeprecationWarningr6r rr r rrrrrtest_deprecated_warningss 0 0 0 z%BinASCIITest.test_deprecated_warningsN)__name__ __module__ __qualname__r8rrrGrr#r+rZignore_warningsrrErOrWr`rfrlrmrnrprwr~rrrrrrrrrrrs<  %%      f     rc@seZdZddZdS)ArrayBinASCIITestcCstdt|S)NB)arraylist)rrtrrrrszArrayBinASCIITest.type2testN)rrrrrrrrrsrc@seZdZeZdS)BytearrayBinASCIITestN)rrrrQrrrrrrsrc@seZdZeZdS)MemoryviewBinASCIITestN)rrr memoryviewrrrrrrsr__main__)Zunittestr rr[rrr3r2r%ZTestCaserrrrrmainrrrrs  )