a 5êdg·Œã@sºddlmZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ej dkZ dZdZefdd „Zd d „Zd d „ZGdd„dejƒZGdd„dejƒZedkr¶e ¡dS)é)ÚabcN)Úsupport)Úassert_python_okÚbig) ÚbÚBÚhÚHÚiÚIÚlÚLÚqÚQÚnÚN)Úú@ú=ú<ú>ú!ccs4tD]*}|D] }|dvr"|dvr"q ||fVq qdS)N©rr)rr)Ú integer_codes)Ú byteordersÚcodeÚ byteorder©rú,/usr/local/lib/python3.9/test/test_struct.pyÚiter_integer_formatss rcCs|ddd…S)Néÿÿÿÿr)ÚsrrrÚstring_reversesr"cCstr|St|ƒSdS©N)Ú ISBIGENDIANr")ÚvaluerrrÚbigendian_to_nativesr&c@sêeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zejd'd(„ƒZd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7S)8Ú StructTestcCs | t dd¡ddkt¡dS)Nz=iér)Ú assertEqualÚstructÚpackr$©ÚselfrrrÚtest_isbigendian"szStructTest.test_isbigendiancCs| tjtjd¡t d¡}| |dt d¡¡d}d}t |¡}t |¡}| |d|¡| tjtjdd¡| tjtjdddd¡| ttjftjdd¡| ttjftjdd¡| tjtjd d ¡t d d d ¡}| tjtjd|¡| tjtjd|¡dS)NÚZr éZiiizcbxxxxxxhhhhiillffd?z3c3b18x12h6i6l6f3d3?ZfooÚPÚdsflapÚiir(é)Ú assertRaisesr*ÚerrorÚcalcsizer)r+Ú TypeErrorÚunpack)r-ZszÚfmtZfmt3Zsz3r!rrrÚtest_consistence%s    zStructTest.test_consistencec Csöd}d}d}d}d}d}d}d}dD]Ì} d D]Â} | | } t | ||||||||¡ } t | | ¡\} } }}}}}}| | |¡| | |¡| ||¡| ||¡| ||¡| td |ƒtd |ƒ¡| td |ƒtd |ƒ¡| ||¡q,q$dS) Nóar(éÿiÿÿigoƒÀÊ! @T)rrrrrr)z xcbhilfd?z xcBHILfd?éd)r*r+r9r)Úint)r-Úcrrr r Úfr2ÚtÚprefixÚformatr!ZcpZbpZhpZipZlpÚfpZdpÚtprrrÚtest_transitiveness:s*     zStructTest.test_transitivenessc &Csúddddddddd d d d d ddddddddddddddddddd d!d"gd#d#d$fd%g#}|D]œ\}}}}}d&||fd'||fd(||fd)|tr’|p”|ffD]X\}}t ||¡} | | |¡| t |¡t| ƒ¡t || ¡d*} | |krš| |¡qšqXdS)+N)r@r<r<r<r)Zxcr<óarHr)Zcxr<óarIr)r!r<r<r<r)Ú0só helloworldórLr()Z1srKóhrMr()Z9srKó helloworlrNr()Z10srKrKrKr)Z11srKó helloworldrOr()Z20srKóhelloworldrPr()réórRr)riùÿÿÿóùrSr)rrQrRrRr)réùrSrSr)ré¼ó¼ó¼r)riDýÿÿóýDóDýr)r rUrVrWr)r iDýrXrYr)r é€,ó,€ó€,r)r é€âÓûóûÓâ€ó€âÓûr)r rZr[r\r)r ì€b§wr^r_r)r rZr[r\r)r r]r^r_r)r rZr[r\r)r r`r^r_r)rAç@s@s@r)r2ras@s@r)rAçÀsÀsÀr)r2rbsÀsÀr)ú?rórdr)rcr0órer()rcTrererrcrdr()rc)r(rerer(rrrrr)r$r*r+r)r7Úlenr9Ú assertTrue) r-Ztestsr:ÚargrZlilZasyZxfmtÚexpÚresZrevrrrÚtest_new_featuresRs\ Û(ÿ   zStructTest.test_new_featuresc CsZdddddddddddœ }tdƒD]*\}}||}t |¡}| |||¡q"d}|D]>}dD]4}t ||d ¡}t ||d¡} | || ¡q^qV| t d ¡d¡| dt d ¡¡| dt d ¡¡| t d ¡t d ¡¡| t d ¡t d ¡¡| dt d¡¡| t d ¡t d¡¡| t d¡t d ¡¡| t d¡t d¡¡dS)Nr(r4éé) rrrr r r r r rr©rrrr)ZbBZhHZiIZlLÚnNZqQrrrrr r rrr1)rr*r7r)ZassertLessEqualÚassertGreaterEqual) r-Z expected_sizerrrDÚsizeZ native_pairsZ format_pairZ signed_sizeZ unsigned_sizerrrÚ test_calcsize‡s2û  zStructTest.test_calcsizecsNddl‰G‡‡‡fdd„dtjƒ‰tƒD] \}}||‰ˆˆƒ}| ¡q(dS)Nrcs@eZdZ‡‡fdd„Zejej”jfdd„Z‡fdd„Z ‡Z S)z+StructTest.test_integers..IntTestercsÚtˆ|ƒjdd||_|d|_|dd…|_|jtvrHtd|jƒ‚t |¡|_ |j d|_ |jt dƒvrœd|_ d|j d  |_ d|j d d |_n:|jt d ƒvrÈd |_ d |_ d|j d |_ntd |jƒ‚dS)NÚtest_one)Z methodNamer z"unrecognized packing byteorder: %srmZbhilqnTr4r(ZBHILQNFrzunrecognized format code: %s)ÚsuperÚ__init__rDrrrÚ ValueErrorr*r7ÚbytesizeÚbitsizeÚtupleÚsignedÚ min_valueÚ max_value)r-rD)Ú IntTesterÚ __class__rrru®s*  ÿ  ÿz4StructTest.test_integers..IntTester.__init__c Ss.|j}|j|kr |jkrnnî|}|jrD|dkrD|d|j>7}| |d¡d|}t|ƒd@rld|}| d¡}||ƒ}d|jt|ƒ|}|j dks¬|j dvr´t s´t |ƒ}|  t|ƒ|j¡|||ƒ}|  ||¡|||ƒd}|  ||¡|  tjtf||d |¡n|  tttjf|||¡dS) Nrr(z%xÚ0Úasciirdr)rrrre)rDr{r|rzrxrprfÚencoderwrr$r"r)r5r*r6r8Ú OverflowErrorrv) r-Úxr+r9Ú unhexlifyrDÚexpectedÚgotZ retrievedrrrrsÄs>   ÿ ÿÿ   ÿÿz4StructTest.test_integers..IntTester.test_onecsddlm}g}t|jdƒD]}| d|>¡qt|jƒD]2}d}t|jƒD]}|d>|dƒB}qN| |¡q<| ddtjd g¡|D]0}| |fD] }d D]}||} |  | ¡q q˜qŠGd d „d ƒ} Gd d„dt ƒ} Gdd„dt ƒ} |  t t jft j|jd¡|  t t jft j|j|¡|  t t jft j|jd¡|  t t jft j|j| ƒ¡|  t t jft j|j| ƒ¡| dƒ| dƒ| dƒ| dƒ| dƒ| dƒfD].} zt  ˆ| ¡Wn| d¡Yn0q˜| dƒ| dƒ| dƒ| ddiƒ| gd¢ƒfD] } |  t t jft j|j| ¡qòdS)Nr)Ú randranger0r(rméi,i`® rl)r rr(c@seZdZdd„ZdS)zAStructTest.test_integers..IntTester.run..NotAnIntcSsdS©Né*rr,rrrÚ__int__szIStructTest.test_integers..IntTester.run..NotAnInt.__int__N)Ú__name__Ú __module__Ú __qualname__r‹rrrrÚNotAnIntsrc@seZdZdd„Zdd„ZdS)zBStructTest.test_integers..IntTester.run..IndexablecSs ||_dSr#©Ú_value)r-r%rrrruszKStructTest.test_integers..IntTester.run..Indexable.__init__cSs|jSr#rr,rrrÚ __index__szLStructTest.test_integers..IntTester.run..Indexable.__index__N)rŒrrŽrur’rrrrÚ Indexablesr“c@seZdZdd„Zdd„ZdS)zAStructTest.test_integers..IntTester.run..BadIndexcSst‚dSr#)r8r,rrrr’szKStructTest.test_integers..IntTester.run..BadIndex.__index__cSsdSr‰rr,rrrr‹szIStructTest.test_integers..IntTester.run..BadIndex.__int__N)rŒrrŽr’r‹rrrrÚBadIndexsr”za stringy@E@é érŠr>éz:integer code pack failed on object with '__index__' methodr<rÚa)r(r4r0)Úrandomr‡ÚrangerxÚappendrwÚextendÚsysÚmaxsizersÚobjectr5r8r*r6r+rDÚfail)r-r‡Úvaluesrir ÚvalÚjÚbaseZincrrƒrr“r”Úobj)rDrrÚrunêsh    þ þ þ þ þÿÿ þz/StructTest.test_integers..IntTester.run) rŒrrŽrur*r+r9r„rsr¦Ú __classcell__r©r}ÚbinasciirD)r~rr}­s þ &r})r©ÚunittestÚTestCaserr¦)r-rrrBrr¨rÚ test_integers©szStructTest.test_integerscsT‡fdd„}dD]>}dD]4}||}|tj|ƒ|tj|dƒ|tj|dƒqqdS)NcsPˆ tj¡}||i|¤ŽWdƒn1s00Yˆ dt|jƒ¡dS)Nzbad char in struct format)r5r*r6ÚassertInÚstrÚ exception)ÚfuncÚargsÚkwargsÚcmr,rrÚassertStructErrorEs,z2StructTest.test_nN_code..assertStructErrorrornrrL)r*r7r+r9)r-r´rrrDrr,rÚ test_nN_codeCs  zStructTest.test_nN_codecCsHdD]>\}}}}t ||¡}| ||¡t ||¡\}| ||¡qdS)N))ÚpóabcrdrL)Z1pr·rdrL)Z2pr·sar<)Z3pr·sabsab)Z4pr·sabcr·)Z5pr·sabcr·)Z6pr·sabcr·)Z1000psèxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsèÿxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsÿxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r*r+r)r9)r-rÚinputr…Z expectedbackr†rrrÚ test_p_codePs   zStructTest.test_p_codecCsôtddƒD]Š}d}||d|kr,|d}q||}t d|¡}t d|¡d}| ||¡t d|¡}| |t|ƒ¡t d|¡d}| ||¡q d}t |d ¡}t d|¡}t d|¡d}| ||¡d }t |d ¡}| t tjd|¡dS) Nr(é!gà?razfiÿÿÿéhiÿÿÿég) ršr*r+r9r)r"ÚmathÚldexpr5r‚)r-r¤ZdeltaZsmallerÚpackedZunpackedZ bigpackedrrrrÚ test_705836`s(        zStructTest.test_705836cCsltƒD]8\}}||}| tjtj|d¡| tjtj|d¡q| tjtjdd¡| tjtjdd¡dS)Nçð?gø?r1)rr5r*r6r+)r-rrrDrrrÚ test_1530559s zStructTest.test_1530559c Cs’d}d}t |¡}ttfD]¢}||ƒ}| | |¡d¡| | |d¡d¡| | |d¡d¡tdƒD]&}| | ||¡|||d…f¡qhtdt|ƒd ƒD]}| tj |j||¡q¢qttfD]°}||ƒ}| t ||¡d¡| t ||d¡d¡| t ||d¡d¡tdƒD]*}| t |||¡|||d…f¡qtdt|ƒd ƒD]}| tj tj|||¡qXqÆ| |j|dd d¡dS) Ns abcd01234Z4s)sabcdr4)scd01rl)s0123ér()ÚbufferÚoffset) r*ÚStructÚbytesÚ bytearrayr)Ú unpack_fromršrfr5r6)r-Ú test_stringr:r!ÚclsÚdatar rrrÚtest_unpack_from‰s0   $  (ÿzStructTest.test_unpack_fromcCsìd}t dd¡}d}t |¡}| |d|¡| ¡dt|ƒ…}| ||¡| |d|¡| ¡dt|ƒd…}| ||dd…|¡t dd¡}| ttj f|j|d|¡| ttj f|j|d|¡|}| t tj ftjd |d¡dS) NóReykjavik rocks, eow!ród Ú21srr•ó r4rL) Úarrayr*rÆÚ pack_intoÚtobytesrfr)r5rvr6r8)r-rÊÚ writable_bufr:r!Úfrom_bufÚ small_bufZsbrrrÚtest_pack_into¤s*    ÿÿÿzStructTest.test_pack_intocsÈd}t dd¡}d‰‡fdd„}||d|ƒ| ¡dt|ƒ…}| ||¡||d|ƒ| ¡dt|ƒd…}| ||dd…|¡t dd ¡}| ttjf||d|¡| ttjf||d |¡dS) NrÎrrÏrÐcstjˆg|¢RŽSr#)r*rÓ)r±©r:rrÚÄrLz.StructTest.test_pack_into_fn..rr•rÑr4)rÒrÔrfr)r5rvr*r6)r-rÊrÕrÓrÖr×rrÙrÚtest_pack_into_fnÀs"      ÿÿzStructTest.test_pack_into_fncCs@t dd¡}tdƒ}||fD]}t d|¡\}| |d¡qdS)Nrs4Vxz>IixV4)rÒÚ memoryviewr*r9r))r-Zdata1Zdata2rÌr%rrrÚtest_unpack_with_buffer×s   z"StructTest.test_unpack_with_bufferc CsžGdd„dtƒ}tdƒdD]X}dggddf}dgd d d d d f}|dt|ƒ}tj|g|¢RŽ}t ||¡}|dt|ƒ}tj|g|¢RŽ} t || ¡} | t|ƒt| ƒ¡| t|ƒt|ƒ¡|D]} | | ¡qÊ| D]} | | ¡qÞt |dd¡} | t| ƒt  |d¡¡t| ƒdkr8|j|d| dzt |d|ƒ¡Wnt ybYq0|  d|d¡qdD]} | t d| ¡d¡q|dS)Nc@seZdZdd„ZdS)z+StructTest.test_bool..ExplodingBoolcSst‚dSr#)ÚOSErrorr,rrrÚ__bool__ász4StructTest.test_bool..ExplodingBool.__bool__N)rŒrrŽrßrrrrÚ ExplodingBoolàsràz<>!=)rrrrr(Útestér lgàÿÿÿßArcz encoded bool is not one byte: %r)Úmsgz2Expected OSError: struct.pack(%r, ExplodingBool()))reóóÿóóðz>?) rŸryrfr*r+r9r)Z assertFalsergr7rÞr )r-ràrCZfalseÚtrueZ falseFormatZ packedFalseZ unpackedFalseZ trueFormatZ packedTrueZ unpackedTruerBr¿r@rrrÚ test_boolßs>    ÿÿzStructTest.test_boolcCsPd tjd¡}| tjtj|¡d tjdtjd¡}| tjtj|¡dS)Nz{}br(z{}b{}Hr4)rDrržr5r*r6r7)r-Z hugecountZ hugecount2rrrÚtest_count_overflow szStructTest.test_count_overflowcCst dd¡}| tjtjd¡| tjtjdd¡| tjtjd|d¡| tjtjd|d¡| tjtjdd¡| tjtjdd¡| tjtjd|dd¡| tjtjd|d¡| tjtjd d ¡| tjtjd d ¡| tjtjd |dd ¡| tjtjd |d¡dS) NrrÏZ12345rLrZc12345rƒóxZ14s42z spam and eggss spam and eggs)rÒr5r*r6r+r9rÓrÉ)r-ÚstorerrrÚtest_trailing_counters* ÿÿÿÿz StructTest.test_trailing_countercCst d¡}| d¡dS)Nr r3)r*rÆru©r-r!rrrÚtest_Struct_reinitialization*s z'StructTest.test_Struct_reinitializationcCs8t d¡}|t d¡|d7}t |t |¡|¡dS)NZ2n3PZP3n0Pr()rZ calcobjsizer*r7Ú check_sizeofrÆ)r-Z format_strZnumber_of_codesZ totalsizerrrrð1s zStructTest.check_sizeofcCs†tD]}| |d¡q| dd¡| dd¡| dd¡| dd ¡| d d¡| d d¡| d d¡| d d¡| dd ¡dS)Nr(Z BHILfdspPé AÒBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBiÒÚfdr4ZxxxxxxxxxxxxxxrZ100HZ187sZ20prJZ0c)rrð)r-rrrrÚtest__sizeof__8s        zStructTest.test__sizeof__cCsŽd}| tj|¡$t dtdƒdd¡Wdƒn1s<0Yd}| tj|¡"t dtdƒd¡Wdƒn1s€0YdS)Nzkpack_into requires a buffer of at least 6 bytes for packing 1 bytes at offset 5 \(actual buffer size is 1\)rr(râzounpack_from requires a buffer of at least 6 bytes for unpacking 1 bytes at offset 5 \(actual buffer size is 1\))ÚassertRaisesRegexr*r6rÓrÈrÉ©r-Zregex1Zregex2rrrÚtest_boundary_error_messageFsÿ2ÿz&StructTest.test_boundary_error_messagecCstdƒ}| tjd¡ t d|dd¡Wdƒn1s<0Y| tjd¡ t d|dd¡Wdƒn1sz0Y| tjd ¡t d|d¡Wdƒn1s¶0Y| tjd¡t d|d¡Wdƒn1sò0YdS) Nr•z%no space to pack 4 bytes at offset -2ú._check_iteratorú>ibcprLs1234567s123456s12345678rs12)r*rÆÚ iter_unpackr5r6)r-r r!r rr,rÚtest_construct¯s    (( (z!UnpackIteratorTest.test_constructcCs$tt d¡ d¡ƒ}| t|¡dS)Nr rL)Útyper*rÆr r5r8)r-Ziter_unpack_typerrrÚtest_uninstantiableÄsz&UnpackIteratorTest.test_uninstantiablecCsrt d¡}ttddƒƒ}| |¡}| t|ƒd¡| t|ƒd¡| t|ƒd¡| tt|¡| tt|¡dS)Nú>IBr(é©irâ©i r•)i é) r*rÆrÇršr r)Únextr5Ú StopIteration©r-r!rr rrrÚ test_iterateÈs  zUnpackIteratorTest.test_iteratecCsft d¡}ttddƒƒ}| t|ƒ¡}| t|ƒd¡| t|ƒd¡| t t|¡| t t|¡dS©Nrr(é rr) r*rÆrÇršr rÜr)rr5rrrrrÚtest_arbitrary_bufferÒs z(UnpackIteratorTest.test_arbitrary_buffercCs¢tj}t d¡}ttddƒƒ}| |¡}| ||ƒd¡t|ƒ| ||ƒd¡t|ƒ| ||ƒd¡t|ƒ| ||ƒd¡|  t t|¡| ||ƒd¡dS)Nrr(rr0r4r) ÚoperatorÚ length_hintr*rÆrÇršr r)rr5r)r-Zlhr!rr rrrÚtest_length_hintÛs  z#UnpackIteratorTest.test_length_hintcCsVt dttddƒƒ¡}| t|ƒd¡| t|ƒd¡| tt|¡| tt|¡dSr)r*r rÇršr)rr5r)r-r rrrÚtest_module_funcês z#UnpackIteratorTest.test_module_funcc Cs(ddddddddtd ƒfd td ƒfd g }|D]Ò\}}|ddd …}| |t d|¡d¡| |t d|¡¡| |t d|¡d¡| |t d|¡¡tjdkrÒ| |t d|¡d¡| |t d|¡¡q,| |t d|¡d¡| |t d|¡¡q,gd¢}|D]L\}}| t  t d|¡d¡¡| t  t d|ddd …¡d¡¡q t dtj ¡}| |dd@d¡t dtj ¡}| |dd@d¡gd¢} | D] \}}}| |t ||¡¡q¬gd¢} | D]\}}|  t tj||¡qÚdg} | D] \}}}| |t ||¡¡qdS)N)s)óg)s€g€s|z+infsüz-inf)sU5gTÕ?r úeÚlittleÚe))r#sü)r#sþ)r#sÿÿ)r#s|)r#s~)r#sÿr(é~))r$sg`>)r$r"g`>)r$r"gP>)r$óÿgø?)r$r(güÿÿÿÿû?)r$ógü?)r$r)r!)r$s<gð?)r$ó<gð?)r$r*gð?)r$ó{ÿiàÿ)r$r+iïÿ)r$s€g`¾)r$ó€g`¾)r$r,gP¾)r$s¼gð¿)r$ó¼gð¿)r$r-gð¿)r$sûÿiÿÿ) )r$çþï@)r$çð@)r$çœuˆ<ä7~)r$çþïÀ)r$çðÀ)r$çœuˆ<ä7þ)r#r.)r#r/)r#r0)r#r1)r#r2)r#r3)r$sgÿgÿÿÿýŸ@) Úfloatr)r*r9r+rrrgr½ÚisnanÚnanr5r‚) r-Z&format_bits_float__cleanRoundtrip_listZle_bitsrAZbe_bitsZformat_bits__nan_listZ formatcodeÚbitsr¿Z format_bits_float__rounding_listZ%format_bits_float__roundingError_listZ+format_bits_float__doubleRoundingError_listrrrÚtest_half_floatòsP  ö   * ÿz"UnpackIteratorTest.test_half_floatN) rŒrrŽÚ__doc__rrrrrr r8rrrrrªs  rÚ__main__)Ú collectionsrrÒr½rrªr*rrárZtest.support.script_helperrrr$rrrr"r&r«r'rrŒÚmainrrrrÚs0     2