ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3g@sddlmZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ej dkZ dZdZefdd Zd d Zd d ZGdddejZGdddejZedkredS))abcN)support)assert_python_okbig) bBhHiIlLqQnN)@=<>!ccs4tD]*}|D] }|dvr"|dvr"q ||fVq qdS)Nrr)rr) integer_codes) byteorderscode byteorderr//opt/python39/lib/python3.9/test/test_struct.pyiter_integer_formatss rcCs|dddS)Nr)srrrstring_reversesr"cCstr|St|SdSN) ISBIGENDIANr")valuerrrbigendian_to_nativesr&c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zejd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7S)8 StructTestcCs |tddddktdS)Nz=ir) assertEqualstructpackr$selfrrrtest_isbigendian"szStructTest.test_isbigendiancCs|tjtjdtd}||dtdd}d}t|}t|}||d||tjtjdd|tjtjdddd|ttjftjdd|ttjftjdd|tjtjd d td d d }|tjtjd||tjtjd|dS)NZr Ziiizcbxxxxxxhhhhiillffd?z3c3b18x12h6i6l6f3d3?ZfooPdsflapiir() assertRaisesr*errorcalcsizer)r+ TypeErrorunpack)r-ZszfmtZfmt3Zsz3r!rrrtest_consistence%s    zStructTest.test_consistencec Csd}d}d}d}d}d}d}d}dD]} d D]} | | } t| |||||||| } t| | \} } }}}}}}|| ||| |||||||||||td |td ||td |td ||||q,q$dS) Nar(iigo! @T)rrrrrr)z xcbhilfd?z xcBHILfd?d)r*r+r9r)int)r-crrr r fr2tprefixformatr!ZcpZbpZhpZipZlpfpZdptprrrtest_transitiveness:s*     zStructTest.test_transitivenessc &Csddddddddd 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||qqXdS)+N)r@r<r<r<r)Zxcr<arHr)Zcxr<arIr)r!r<r<r<r)0s helloworldrLr()Z1srKhrMr()Z9srK helloworlrNr()Z10srKrKrKr)Z11srK helloworldrOr()Z20srKhelloworldrPr()rrRr)rirSr)rrQrRrRr)rrSrSr)rr)riDDDr)r rUrVrWr)r iDrXrYr)r ,,,r)r r)r rZr[r\r)r bwr^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)rAssr)r2rbssr)?rrdr)rcr0rer()rcTrererrcrdr()rc)r(rerer(rrrrr)r$r*r+r)r7lenr9 assertTrue) r-Ztestsr:argrZlilZasyZxfmtexpresZrevrrrtest_new_featuresRs\ (   zStructTest.test_new_featuresc CsZddddddddddd }tdD]*\}}||}t|}||||q"d}|D]>}dD]4}t||d }t||d} ||| q^qV|td d|dtd |dtd |td td |td td |dtd|td td|tdtd |tdtddS)Nr(r4) rrrr r r r r rrrrrr)ZbBZhHZiIZlLnNZqQrrrrr r rrr1)rr*r7r)ZassertLessEqualassertGreaterEqual) r-Z expected_sizerrrDsizeZ native_pairsZ format_pairZ signed_sizeZ unsigned_sizerrr test_calcsizes2  zStructTest.test_calcsizecsNddlGfdddtjtD] \}}||}|q(dS)Nrcs@eZdZfddZejejjfddZfddZ Z S)z+StructTest.test_integers..IntTestercst|jdd||_|d|_|dd|_|jtvrHtd|jt||_ |j d|_ |jt dvrd|_ d|j d  |_ d|j d d |_n:|jt d vrd |_ d |_ d|j d |_ntd |jdS)Ntest_one)Z methodNamer z"unrecognized packing byteorder: %srmZbhilqnTr4r(ZBHILQNFrzunrecognized format code: %s)super__init__rDrrr ValueErrorr*r7bytesizebitsizetuplesigned min_value max_value)r-rD) IntTester __class__rrrus*    z4StructTest.test_integers..IntTester.__init__c Ss.|j}|j|kr |jkrnn|}|jrD|dkrD|d|j>7}||dd|}t|d@rld|}|d}||}d|jt||}|j dks|j dvrt st |}| t||j|||}| |||||d}| ||| tjtf||d |n| tttjf|||dS) Nrr(z%x0asciirdr)rrrre)rDr{r|rzrxrprfencoderwrr$r"r)r5r*r6r8 OverflowErrorrv) r-xr+r9 unhexlifyrDexpectedgotZ retrievedrrrrss>       z4StructTest.test_integers..IntTester.test_onecsddlm}g}t|jdD]}|d|>qt|jD]2}d}t|jD]}|d>|dB}qN||q<|ddtjd g|D]0}| |fD] }d D]}||} | | qqqGd d d } Gd ddt } Gdddt } | 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| dfD].} zt | Wn|dYn0q| d| d| d| ddi| gdfD] } | t t jft j|j| qdS)Nr) randranger0r(rmi,i` rl)r rr(c@seZdZddZdS)zAStructTest.test_integers..IntTester.run..NotAnIntcSsdSN*rr,rrr__int__szIStructTest.test_integers..IntTester.run..NotAnInt.__int__N)__name__ __module__ __qualname__rrrrrNotAnIntsrc@seZdZddZddZdS)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)rrrrurrrrr Indexablesrc@seZdZddZddZdS)zAStructTest.test_integers..IntTester.run..BadIndexcSstdSr#)r8r,rrrrszKStructTest.test_integers..IntTester.run..BadIndex.__index__cSsdSrrr,rrrrszIStructTest.test_integers..IntTester.run..BadIndex.__int__N)rrrrrrrrrBadIndexsrza stringy@E@ rr>z:integer code pack failed on object with '__index__' methodr<ra)r(r4r0)randomrrangerxappendrwextendsysmaxsizersobjectr5r8r*r6r+rDfail)r-rvaluesrir valjbaseZincrrrrrobj)rDrrrunsh         z/StructTest.test_integers..IntTester.run) rrrrur*r+r9rrsr __classcell__rr}binasciirD)r~rr}s  &r})runittestTestCaserr)r-rrrBrrr test_integersszStructTest.test_integerscsTfdd}dD]>}dD]4}||}|tj||tj|d|tj|dqqdS)NcsPtj}||i|Wdn1s00Ydt|jdS)Nzbad char in struct format)r5r*r6assertInstr exception)funcargskwargscmr,rrassertStructErrorEs,z2StructTest.test_nN_code..assertStructErrorrornrrL)r*r7r+r9)r-rrrrDrr,r test_nN_codeCs  zStructTest.test_nN_codecCsHdD]>\}}}}t||}|||t||\}|||qdS)N))pabcrdrL)Z1prrdrL)Z2prsar<)Z3prsabsab)Z4prsabcr)Z5prsabcr)Z6prsabcr)Z1000psxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r*r+r)r9)r-rinputrZ expectedbackrrrr test_p_codePs   zStructTest.test_p_codecCstddD]}d}||d|kr,|d}q||}td|}td|d}|||td|}||t|td|d}|||q d}t|d }td|}td|d}|||d }t|d }|t tjd|dS) Nr(!g?razfihig) rr*r+r9r)r"mathldexpr5r)r-rZdeltaZsmallerpackedZunpackedZ bigpackedrrrr test_705836`s(        zStructTest.test_705836cCsltD]8\}}||}|tjtj|d|tjtj|dq|tjtjdd|tjtjdddS)N?g?r1)rr5r*r6r+)r-rrrDrrr test_1530559s zStructTest.test_1530559c Csd}d}t|}ttfD]}||}|||d|||dd|||ddtdD]&}|||||||dfqhtdt|d D]}|tj |j||qqttfD]}||}|t||d|t||dd|t||ddtdD]*}|t||||||dfqtdt|d D]}|tj tj|||qXq||j|dd ddS) Ns abcd01234Z4s)sabcdr4)scd01rl)s0123r()bufferoffset) r*Structbytes bytearrayr) unpack_fromrrfr5r6)r- test_stringr:r!clsdatar rrrtest_unpack_froms0   $  (zStructTest.test_unpack_fromcCsd}tdd}d}t|}||d||dt|}|||||d||dt|d}|||dd|tdd}|ttj f|j|d||ttj f|j|d||}|t tj ftjd |ddS) NReykjavik rocks, eow!rd 21srr r4rL) arrayr*r pack_intotobytesrfr)r5rvr6r8)r-r writable_bufr:r!from_buf small_bufZsbrrrtest_pack_intos*    zStructTest.test_pack_intocsd}tdd}dfdd}||d||dt|}|||||d||dt|d}|||dd|tdd }|ttjf||d||ttjf||d |dS) Nrrrrcstjg|RSr#)r*r)rr:rrrLz.StructTest.test_pack_into_fn..rrrr4)rrrfr)r5rvr*r6)r-rrrrrrrrtest_pack_into_fns"      zStructTest.test_pack_into_fncCs@tdd}td}||fD]}td|\}||dqdS)Nrs4Vxz>IixV4)r memoryviewr*r9r))r-Zdata1Zdata2rr%rrrtest_unpack_with_buffers   z"StructTest.test_unpack_with_bufferc CsGdddt}tddD]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]} || qt|dd} |t| t |dt| dkr8|j|d| dzt|d|Wnt ybYq0| d|dqdD]} |td| dq|dS)Nc@seZdZddZdS)z+StructTest.test_bool..ExplodingBoolcSstdSr#)OSErrorr,rrr__bool__sz4StructTest.test_bool..ExplodingBool.__bool__N)rrrrrrrr ExplodingBoolsrz<>!=)rrrrr(testr lgArcz encoded bool is not one byte: %r)msgz2Expected OSError: struct.pack(%r, ExplodingBool()))rez>?) rryrfr*r+r9r)Z assertFalsergr7rr)r-rrCZfalsetrueZ falseFormatZ packedFalseZ unpackedFalseZ trueFormatZ packedTrueZ unpackedTruerBrr@rrr test_bools>    zStructTest.test_boolcCsPdtjd}|tjtj|dtjdtjd}|tjtj|dS)Nz{}br(z{}b{}Hr4)rDrrr5r*r6r7)r-Z hugecountZ hugecount2rrrtest_count_overflow szStructTest.test_count_overflowcCstdd}|tjtjd|tjtjdd|tjtjd|d|tjtjd|d|tjtjdd|tjtjdd|tjtjd|dd|tjtjd|d|tjtjd d |tjtjd d |tjtjd |dd |tjtjd |ddS) NrrZ12345rLrZc12345rxZ14s42z spam and eggss spam and eggs)rr5r*r6r+r9rr)r-storerrrtest_trailing_counters* z StructTest.test_trailing_countercCstd}|ddS)Nr r3)r*rrur-r!rrrtest_Struct_reinitialization*s z'StructTest.test_Struct_reinitializationcCs8td}|td|d7}t|t||dS)NZ2n3PZP3n0Pr()rZ calcobjsizer*r7 check_sizeofr)r-Z format_strZnumber_of_codesZ totalsizerrrr1s zStructTest.check_sizeofcCstD]}||dq|dd|dd|dd|dd |d d|d d|d d|d d|dd dS)Nr(Z BHILfdspP ABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBifdr4ZxxxxxxxxxxxxxxrZ100HZ187sZ20prJZ0c)rr)r-rrrrtest__sizeof__8s        zStructTest.test__sizeof__cCsd}|tj|$tdtdddWdn1s<0Yd}|tj|"tdtddWdn1s0YdS)Nzkpack_into requires a buffer of at least 6 bytes for packing 1 bytes at offset 5 \(actual buffer size is 1\)rr(rzounpack_from requires a buffer of at least 6 bytes for unpacking 1 bytes at offset 5 \(actual buffer size is 1\))assertRaisesRegexr*r6rrrr-Zregex1Zregex2rrrtest_boundary_error_messageFs2z&StructTest.test_boundary_error_messagecCstd}|tjd td|ddWdn1s<0Y|tjd td|ddWdn1sz0Y|tjd td|dWdn1s0Y|tjdtd|dWdn1s0YdS) Nrz%no space to pack 4 bytes at offset -2._check_iterator>ibcprLs1234567s123456s12345678rs12)r*r iter_unpackr5r6)r-r r!r rr,rtest_constructs    (( (z!UnpackIteratorTest.test_constructcCs$ttdd}|t|dS)Nr rL)typer*rr r5r8)r-Ziter_unpack_typerrrtest_uninstantiablesz&UnpackIteratorTest.test_uninstantiablecCsrtd}ttdd}||}|t|d|t|d|t|d|tt||tt|dS)N>IBr(iri r)i ) r*rrrr r)nextr5 StopIterationr-r!rr rrr test_iterates  zUnpackIteratorTest.test_iteratecCsftd}ttdd}|t|}|t|d|t|d|t t||t t|dSNrr( rr) r*rrrr rr)rr5rrrrrtest_arbitrary_buffers z(UnpackIteratorTest.test_arbitrary_buffercCstj}td}ttdd}||}|||dt||||dt||||dt||||d| t t||||ddS)Nrr(rr0r4r) operator length_hintr*rrrr r)rr5r)r-Zlhr!rr rrrtest_length_hints  z#UnpackIteratorTest.test_length_hintcCsVtdttdd}|t|d|t|d|tt||tt|dSr)r*r rrr)rr5r)r-r rrrtest_module_funcs z#UnpackIteratorTest.test_module_funcc Cs(ddddddddtd fd td fd g }|D]\}}|ddd }||td|d||td|||td|d||td|tjdkr||td|d||td|q,||td|d||td|q,gd}|D]L\}}|t td|d|t td|ddd dq tdtj }||dd@dtdtj }||dd@dgd} | D] \}}}||t||qgd} | D]\}}| t tj||qdg} | D] \}}}||t||qdS)N)s)g)sgs|z+infsz-inf)sU5gT?r elittlee))r#s)r#s)r#s)r#s|)r#s~)r#sr(~))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$sg`)r$g`)r$r,gP)r$sg)r$g)r$r-g)r$si) )r$@)r$@)r$u<7~)r$)r$)r$u<7)r#r.)r#r/)r#r0)r#r1)r#r2)r#r3)r$sgg@) floatr)r*r9r+rrrgrisnannanr5r) r-Z&format_bits_float__cleanRoundtrip_listZle_bitsrAZbe_bitsZformat_bits__nan_listZ formatcodebitsrZ format_bits_float__rounding_listZ%format_bits_float__roundingError_listZ+format_bits_float__doubleRoundingError_listrrrtest_half_floatsP     * z"UnpackIteratorTest.test_half_floatN) rrr__doc__rrrrrr r8rrrrrs  r__main__) collectionsrrrrrr*rrrZtest.support.script_helperrrr$rrrr"r&rr'rrmainrrrrs0     2