ÿØÿà 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@s8ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z ede dZ e de dz ddl Z WneyYn0ddZdd Zd d Zejd Zd Zee pedkdeeejdkdGdddejZGdddejZGdddejZddZedkr4edS)N)requires import_moduleverbose SaveSignalscursesz curses.asciizcurses.textpadcCsttt|d|S)Nzrequires curses.%s)unittestZ skipUnlesshasattrrnamer //opt/python39/lib/python3.9/test/test_curses.pyrequires_curses_funcs r csfdd}|S)Ncstfdd}|S)Ncs4t|jstd|g|Ri|dS)Nzrequires curses.window.%s)rstdscrrZSkipTestselfargskwargs)r testr r wrappeds z:requires_curses_window_meth..deco..wrapped functoolswrapsrrr rr decosz)requires_curses_window_meth..decor )r rr r r requires_curses_window_meths rcstfdd}|S)Ncs4ts|dt|g|Ri|dS)Nrequires colors support)r has_colorsskipTest start_colorrrr r r)s z requires_colors..wrappedrrr rr requires_colors(sr ZTERMiunknownz*$TERM=%r, calling initscr() may cause exitcygwinz!cygwin's curses mostly just hangsc@seZdZeddZddZedddZedd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zed%d&d'Zd(d)Zd*d+Zd,d-Zed.d/d0Zed1d2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%edFdGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*edQdRdSZ+edTdUdVZ,edWdXdYZ-dZd[Z.d\d]Z/d^d_Z0d`daZ1e2dbdcZ3e2dddeZ4dfdgZ5e2dhdiZ6e2djdkZ7e2dldmZ8edne2dodpZ9dqdrZ:edsdtduZ;edvdwdxZedyd~dZ?edyddZ@edddZAedddZBedddZCddZDddZEedeFGeHeIdddkdddZJddZKddZLed.ddZMdS) TestCursescCs4trtdttjddtj}tj|ddS)NzTERM=Tfileflush)fd) rprinttermsysstderr __stdout__filenorZ setupterm)cls stdout_fdr r r setUpClass;s zTestCurses.setUpClasscCsTd|_tj|_tj}tjst|}|tj||tj ||tj rdtj }tj |_nLzt dddd}Wn&t yt jddd}d|_Yn0||jd|_t ||t|_|j||jjtr|jdurtjtjt|jddt|_|jrFt|tj|tj|jdS) NTz/dev/ttywbr) buffering)moder2Fr$)isattyr*r,outputr-osdup addCleanupclosedup2 __stderr__openOSErrortempfile TemporaryFilerZ save_signalssaveZrestorerr+r&stdoutr(rZinitscrrZsavettyendwinZresettyerase)rr/Zdup_fdtmpr r r setUpDs>              zTestCurses.setUpfiltercCs tdSN)rrFrr r r test_filtertszTestCurses.test_filteruse_envcCstdtddS)NFT)rrJrHr r r test_use_envzs zTestCurses.test_use_envcCstdd}||d||d||dtdddd}||d||d||d |d d }||d ||d ||d|ddd d }||d ||d ||d|dd }||d||d||d|dddd }||d||d||d|dd||d||d||d ||d ||d ||d||d||d||d| dd||d ||d||d| dd||d||d||ddS)N rrrP)rLrM)rRrL)rMrQ)rSrTrR) ))rRrS)rZ  )r\r]rrV)rrV)rRrV) rnewwin assertEqualgetbegyxZgetparyxgetmaxyxsubwinZderwinZmvwinZmvderwin)rwinwin2Zwin3r r r test_create_windowssT      zTestCurses.test_create_windowscCsj|j}|dddd}|dd|dd||d||d|||d dS) NrMrQrRrLrVrYrU)rRrY)rYrW)rrbmover_getyxZ cursyncup)rrrcr r r test_move_cursors  zTestCurses.test_move_cursorcCs|j}|||d|||d|||d|||d|||d|dd||dd||dd||d|ddd||dd|dddd}|ddd d }||| ||d||d|||| ||dt |d rt j d s||d D]:}|||d||||||qdS)NFTrLrRr\rVrMrQrSrTsyncokZsunos)FTa)rrefreshassertIs is_wintouchedZtouchwinZ untouchwinZ touchlineZis_linetouchedrbZsyncupZsyncdownrr*platform startswithriaddch)rrrcrdrir r r test_refresh_controlsJ   zTestCurses.test_refresh_controlc Csp|j}|j}||dd|d|d|dd}z||WnRtyr|t|j|Yn2ty||}| t |dt |Yn0|dt j |ddd|dddt j ||d ||dd|d|d|d|ttf|d Wdn1sD0Y|dt j ||d dS) NrAAA€rVrRrSTuĔF)rencodingrkrfrpUnicodeEncodeError assertRaisesencode OverflowErrorZassertNotEquallenreprrA_BOLDrlrmZechochar)rrrvcencodedr r r test_output_characters8           *z TestCurses.test_output_characterc Cs|j}|j}|j|jfD]}||j|dd|d|dd}z ||Wn"tyx|t|j |Yn0|dt j |ddd|dddt j Wdq1s0Yq|j |j fD]}||j|dd|dd|d dd }z||dWn$ty6|t|j |Yn0|dd |ddt j |dddd|ddddt j Wdq1s0YqdS) NrZabcdsabcduàßçđrVrRrSZ1234s1234u١٢٣٤rL)rrvaddstrinsstrsubTest __qualname__rfrwrxryrr}addnstrinsnstr)rrrvfuncsr r r test_output_strings:     0    zTestCurses.test_output_stringc Cs|j}dD]t}|j|dT|t|j||t|j|d|t|j||t|j|dWdq 1st0Yq dS)N)zasa)argrV)rrrx ValueErrorrrrr)rrrr r r &test_output_string_embedded_null_chars8sz1TestCurses.test_output_string_embedded_null_charscCs|j}|dddtj|dd||dtjB||dddtjB|dd||ddd||dddd ||dd dd d ||dd d d |t |jd |t |jdd d dS)NrrVZABCDrtrSCr\s ABCD s ABrRrYsBCD ) rrrr}rfr_inchinstrrxrrrr r r test_read_from_windowBs  z TestCurses.test_read_from_windowcCstdddd}ddddD]}t|q||ddd||d ||dd d ||d ||d ||d ||d||ddS)NrLr[rRzspam rPrSrVs)rSrVrYp)rSrYamrM)rr^ungetchr_Zgetchrgrrcr~r r r test_getchRs zTestCurses.test_getchcCs0tdddd}t|tj|t|jd|t|jdddddddD]}t|qV| |dddd | | dd d | |ddd d | | dd d| |ddd| | dd d| |dd| | dd d| |d| | dd ddS)NrLr[rRiprSzLorem ipsum dolor sit amet rPrVsLors Lo rMsipsums Lo ipsum sdolors dolor ssis si dolor samets amet dolor ) rr^echor8noechorxrZgetstrrr_rrr r r test_getstras"  zTestCurses.test_getstrcCstdddd}t||dd|||ddd||ddd|dd |||ddd ||ddd |j |j fD]B}t||||ddd ||ddd qdS) NrLrQrRrrZsLorem iprVdolor sit amet,rSsLor) rr^ lorem_ipsumrfZclrtoeolr_rrstripZclrtobotrCclear)rrcrr r r test_clearws  zTestCurses.test_clearcCstdddd}t||dd|||ddd|dd||ddd|dd|||ddd||ddd ||ddd ||d dd ||d dd|dd|||ddd||ddd||ddd | t||dd| d||ddd||ddd||ddd||d dd| t||dd| d||ddd||ddd ||ddd ||d dddS)NrLrQrRrsLoem ipsum rTsLoem ipum rVsconsectetur adipiscing elitrSssed do eiusmod rY sLorem ipsum rr) rr^rrfZdelchr_rZdeletelnZinsertlnrZinsdellnrrcr r r test_insert_deletesF        zTestCurses.test_insert_deletecCstdddd}t||d|||ddd|d||ddd|d||ddd ||ddd ||d dd|d dS) NrLrQrRTrrrrrSF)rr^rscrollokZscrollr_rrr r r test_scrolls   zTestCurses.test_scrollcCsHtdddd}|tj|tj|tj||dS)NrLrQrR)rr^Zattronr}ZattroffZattrsetZstandoutZstandendrr r r test_attributess    zTestCurses.test_attributeschgatcCstdddd}|ddd|ddd|dd|tj||dd d ||ddd tjB||dd d tjB|dd|dtj||ddd||dddtjB||dddtjB||ddd|ddtj ||ddd||dddtj B||dd d tj B|ddd tj||dddtj B||dddtjB||dddtjB||dddtj B||dd d tj BdS)NrLrQrRr Lorem ipsumrSzdolor sit ametrZrTrr rVLoerYrlrrMrr]) rr^rrfrZA_BLINKr_rr}Z A_UNDERLINErr r r test_chgats0   zTestCurses.test_chgatcCstdddd}|ddd||d|d||d|d ||d |d ||d |d||d |d tj||d tjB||ddd||ddd |d| d||d||ddd||ddd| d tj||d tjB||dddtjB||ddd tjBdS)NrLrQrRrr)rr__##rtr#r) rr^rassertInZgetbkgdZbkgdsetr_Z A_REVERSErZbkgdrr r r test_backgrounds0      zTestCurses.test_backgroundc Cstdddd}t|tdddd}tdD]}||dd q0||||ddd ||d dd ||d dd||ddd||||ddd||d dd||d dd||ddd||d ddd dd||ddd||ddd||ddd||d ddd dd||ddd||ddd||ddddS)NrLrSrYrTr\rZ_________________ssectetur_________rVspiscing_elit,____rRs_do_eiusmod______s_________________ssectetur __spiscing elit, __s do eiusmod __r]s__r_sit_amet_____s__ectetur________s__r sit amet_____s__ectetur _____) rr^rrangerZoverlayr_rZ overwrite)rZsrcwinZdstwinir r r test_overlay s.   zTestCurses.test_overlaycCs@tdddd}||dd||tdS)NrLrQrRrV)rr^Z noutrefreshZredrawlnZ redrawwinrkdoupdaterr r r test_refresh*s  zTestCurses.test_refreshresizecCsLtdddd}|dd||d|dd||ddS)NrLrQrRrY)rYr)rLrQ)rr^rr_rarr r r test_resize2s   zTestCurses.test_resizeenclosecCstdddd}||dd||dd||dd||dd||dd||dd dS) NrLrQrRrVrYr\rTr)rr^ assertTruer assertFalserr r r test_enclose:szTestCurses.test_enclosecCstdddd}|dddtd}||~|dt|}|| d|| d|| ddd Wdn1s0YdS) NrLr[rVrRrrrU)rLr[s Lorem ipsum) rr^rr>r?ZputwinseekZgetwinr_r`rar)rrcfr r r test_putwinEs    zTestCurses.test_putwinc Cs$tdddd}|dddddd d d ||d d d ||dd d||dd d|dddddddd|ddddddd d!|t|jdddddgd d! |t|jddddddd d!d" |t|jddddddd d!d" |ddddddd |dddddd|ddddd|dddd|ddd|dd|d||d#d$||d dd%d&||dd d'||ddd%d&|d(d)|dd|t|jddd|t|jd||dd| dd||ddd*d+| dd| d,d| ddtj | dddd| ddddtj |dd| d-d.| d/d.| d0d.| d-d.tj | ddd-d.| ddd1dtj || ddd2tj B|| ddd2tj B|| d.dd0dS)3NrLrMrR|!-r+\r/rs +--------\rVs | !rYs #________/|!-_+\r/rtBrDEFGHI:~rZs~~~~~~~~s : ::~rTs ----- -rjrSar;;)rr^Zborderr_rrx TypeErrorboxrfZhliner}ZvlineZ A_STANDOUTrrr r r test_borders_and_linesQsr                   z!TestCurses.test_borders_and_linescCs|tdd|tdd|tdd|tdd|tdd|tdd|ttjd|ttjd |ttjd |ttjd |ttjd dS) Nrsrrrt s^J rMrsABZAB)r_runctrlrxrrzrHr r r test_unctrlszTestCurses.test_unctrlcCsT|js|d|tdt|tdt|tddS)Nrequires terminalFT)r4rrlrisendwinrBrrHr r r test_endwins zTestCurses.test_endwincCs|tdt|tdd|tdd|tdt|tdd|tdd|tdttdf| td| tdtd}|dur||tt |dt |d}||tt |t ddS) NZhccolsrPZcrrcudrRsabc ) assertIsInstancerZ tigetflagintr_ZtigetnumtigetstrbytestypeZ assertIsNoneZtparmZputp)rrZcud_2r r r test_terminfos"      zTestCurses.test_terminfocCsDtdtt|tdtdtdddS)NrVFd2)rZ delay_outputZflushinprrlrZnapmsZnewpadrHr r r test_misc_module_funcss   z!TestCurses.test_misc_module_funcscCs|tt|tt|tt|tt|t t|t tt }||t| t |dt}||t| t |ddSNrV)rrZtermnamerZlongnameZbaudraterZhas_icboolZhas_ilZ termattrsZkillcharr_r{Z erasechar)rr~r r r test_env_queriess  zTestCurses.test_env_queriescCs|j}|d|d|d|d|d|dt|dr`|d|d|d|d|d|d|ddt t dt dt dS)NTFimmedokrLrM) rZclearokZidcokZidlokrrZleaveokrZ setscrregrZnonlnlrr r r test_output_optionss&                zTestCurses.test_output_optionscCs6|j}|jrhtttdtdtdtdttdtdttt t dt dt dt d| d| dt dt d| d| dttdtdt|d|d|d|d|ddS)NFTrVrPrrL)rr4rZnocbreakZcbreakZ intrflushrawZnorawrrZ halfdelayZkeypadmetaZnodelayZ noqiflushZqiflushZ notimeouttimeoutrr r r test_input_optionssB                      zTestCurses.test_input_options typeaheadcCsttjtddS)NrP)rr r* __stdin__r-rHr r r test_typeaheadszTestCurses.test_typeaheadcCs$|js|dttdS)Nr)r4rrZ def_prog_modeZreset_prog_moderHr r r test_prog_mode$s zTestCurses.test_prog_modecCsVtddustddur&tn,z tWntjyP|dYn0dS)Nbelflashz beep() failed)rrZbeeperrorrrHr r r test_beep*s   zTestCurses.test_beepcCsVtddustddur&tn,z tWntjyP|dYn0dS)Nrrzflash() failed)rrrrrrHr r r test_flash4s   zTestCurses.test_flashc CsPdD]F\}}t|dur&t|qzt|WqtjyHYq0qdS)N))rZcivis)rRZcvvis)rVZcnorm)rrZcurs_setr)rZvisZcapr r r test_curs_set>s  zTestCurses.test_curs_set get_escdelaycCs<t}||ttd|tdt|dS)N)rrrrZ set_escdelayr_)rZescdelayr r r test_escdelayHs   zTestCurses.test_escdelay get_tabsizecCs<t}||ttd|tdt|dS)NrY)rrrrZ set_tabsizer_)rtabsizer r r test_tabsizePs   zTestCurses.test_tabsizegetsyxcCsDt\}}||t||ttdd|tddS)NrYrL)rYrL)rrrrZsetsyxr_)ryxr r r test_getsyxXs     zTestCurses.test_getsyxcCsdSN)llllrr rHr r r bad_colors`szTestCurses.bad_colorscCsdSr r rHr r r bad_pairscszTestCurses.bad_pairscCs$|tt|ttdSrG)rrrrcan_change_colorrHr r r test_has_colorsfszTestCurses.test_has_colorscCsNts|dttrJtdtjtjdtdtj tjddS)Nrz COLORS = )r%zCOLOR_PAIRS = ) rrrrrr(COLORSr*r+ COLOR_PAIRSrHr r r test_start_colorjs  zTestCurses.test_start_colorcCs|ttjdtdttjdt}t||D]}|t tj|q@tjtkrt|tj tjtj|tj tjddS)NrrrrrVrP) r_r color_content COLOR_BLACKminr% SHORT_MAXr!rxrzr)rmaxcolorcolorr r r test_color_contentrs    zTestCurses.test_color_contentc Csts|dtd}ztjdg|RWntjyP|dYn0|jtjdg|Rtdddd|tddtdddd|tddttj dt }t|}tj|g|R|jtj|g|Rt|ddd|t|d | D]}| t tj|dddqtj t kr\| tjtjtj ddd| tjtjd dddd D]N}| tjtjd|dd| tjtjdd|d| tjtjddd|qxdS) Nzcannot change colorrz)cannot change color (init_color() failed)r()r0r0r0rV)rr1r0rP)rPi)rr#rr)Z init_colorrr8r_r+r%r,r!rxrz)roldr-r.compr r r test_init_colors6     zTestCurses.test_init_colorcCs ttjtSrG)r+rr&r,rHr r r get_pair_limitszTestCurses.get_pair_limitcCsttds$|tdtjtjftd|d}|dkrLt||D]}|t tj|qT|tj tjddS)Nuse_default_colorsrrVrP) rrr_ pair_content COLOR_WHITEr*r5r"rxrzr)rmaxpairpairr r r test_pair_contents       zTestCurses.test_pair_contentcCstd}tjdg|R|jtjdg|Rtddd|tddttjdt}td|d|td|dftdd||tdd|f|d}|dkrt|dd|t|d| D]}| t tj|ddq| tj tjddd| D].}| t tjd|d| t tjdd|qtjtkr| tj tjdtjd| tj tjddtjdS)NrVrrNrP)rr7Z init_pairr8r_r+r%r,r5r"rxrzrr!)rr2r-r9r:r.r r r test_init_pairs.     zTestCurses.test_init_paircCshdD]:}t|}|t||||t|tjB|q|tdd|tdddS)N)rrVrr)rZ color_pairr_Z pair_numberr})rr:attrr r r test_color_attrss  zTestCurses.test_color_attrsr6cCsftd}z tWntjy4|dYn0|tdd||tjtjfddgdS)Nrz1cannot change color (use_default_colors() failed)rOrN) rr7r6rrr_rr8r*)rr2r r r test_use_default_colorss  z"TestCurses.test_use_default_colorscCsn|tdd|tdd|tdd|tdd|ttjd |td tdS) NrtrsrXs^Ms^?rs^@rP)r_rZkeynamerxrrrrHr r r test_keynames zTestCurses.test_keynamehas_keycCstddS)NrX)rrCrHr r r test_has_keyszTestCurses.test_has_keygetmousecCsLttj\}}|dkr"|dtdtddddtjt}dS)Nrzmouse stuff not availablerM)rZ mousemaskZBUTTON1_PRESSEDrZ mouseintervalZ ungetmouserE)rZ availmaskZoldmaskmr r r test_getmouses   zTestCurses.test_getmousepanelcCsVtdd}tj|}|jtjjdd|Wdn1sH0YdS)NrMz!userptr should fail since not set)msg)rr^rH new_panelrxrZuserptr)rwpr r r test_userptr_without_sets    z#TestCurses.test_userptr_without_setcCsbtdd}tj|}t}t|}tdD]}||q0|d| t||ddS)NrMrzset_userptr leaked references) rr^rHrJobjectr* getrefcountr set_userptrr_)rrKrLobjZnrefsrr r r test_userptr_memory_leaks      z#TestCurses.test_userptr_memory_leakcsDtdd}tj|Gfddd}|ddS)NrMcseZdZfddZdS)z+TestCurses.test_userptr_segfault..AcsddSrG)rPrHrHr r __del__sz3TestCurses.test_userptr_segfault..A.__del__N)__name__ __module__rrTr rSr r rrsrr)rr^rHrJrP)rrKrrr rSr test_userptr_segfaults    z TestCurses.test_userptr_segfaultcCs,tdd}tj|}|tt|dS)NrM)rr^rHrJrxrr)rrKrHr r r test_new_curses_panels  z TestCurses.test_new_curses_panelis_term_resizedcCsBtjtj}}|t||d|t|d|dddS)NFrVT)rLINESCOLSrlrYrlinesrr r r test_is_term_resizedszTestCurses.test_is_term_resized resize_termcCszttjtj}}|d}|d}t|||tj||tj|t|||tj||tj|dSr)rupdate_lines_colsrZr[r_r_rr]rZ new_linesZnew_colsr r r test_resize_term$s  zTestCurses.test_resize_term resizetermcCszttjtj}}|d}|d}t|||tj||tj|t|||tj||tj|dSr)rr`rZr[rcr_rar r r test_resizeterm2s  zTestCurses.test_resizetermcCsXtd||jdtd||jdtd||jddS)NrsrrBrC)rrr_rgetkeyrHr r r test_ungetch@s    zTestCurses.test_ungetchcCstd|jdS)Ni)rrrrgrHr r r test_issue6243Hs zTestCurses.test_issue6243 unget_wchncurses_version)c)rLrZz.unget_wch is broken in ncurses 5.7 and earlierc Cs|j}|j}dD]}z||Wnty8YqYn0zt|Wn:ty}z"|d||j|fWYd}~n d}~00|}| ||t |}t||}| ||qdS)N)rjéruu􏿿z)unget_wch(%a) failed with encoding %s: %s) rrvryrwrrj ExceptionZfailZget_wchr_ord)rrrvcherrreadcoder r r test_unget_wchLs&     zTestCurses.test_unget_wchcCs|j}ddl}|j}|||td|_Wdn1sD0Y||_|t|`Wdn1sx0YdS)NrrM)rcodecsrvlookuprxr)rrrurvr r r test_encodingds  $ zTestCurses.test_encodingcCsV|j}zt|j}||Wnty2Yn0|jjdd}|d|dS)Nrrz[y, x,]) rinspect signaturerprr__doc__splitr)rrryZhuman_readable_signaturer r r test_issue21088os    zTestCurses.test_issue21088cCsNtdddd}tjj|dd}|\}}||d|d|ddS)NrLrQrRT)Z insert_moderj)rr^ZtextpadZTextboxrarZ_insert_printable_char)rrcrr]rr r r test_issue13051s  zTestCurses.test_issue13051N)NrUrVr classmethodr0rEr rIrKrerhrqrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrrrr!r"r$r'r r/r4r5r;r<r>r?rBrDrGrMrRrWrXr^rbrdrhrirskipIfgetattrrrtrwr|r}r r r r r#5s 0  4 0&" *  !   8  .                         r#c@s,eZdZedddZedddZdS) MiscTestsr`cCsJttjtj}}dt_t_t|tj||tj|dS)Nr)rr`rZr[r_r\r r r test_update_lines_colss  z MiscTests.test_update_lines_colsrkcCstj}trtdtjdd||ddt|t|d||dt||dt||dt||j t||j t||j t||d|j ||d|j ||d|j | |j d| |j d| |j ddS)Nzncurses_version = T)r&rSrrVrR) rrkrr(rtupler_r{rmajorminorZpatchZassertGreaterEqual)rvr r r test_ncurses_versions"zMiscTests.test_ncurses_versionN)rUrVrr rrr r r r rs rc@s<eZdZddZddZddZddZd d Zd d Zd S) TestAsciicCs&tjjD]}|ttj||qdSrG)rasciiZ controlnamesrr)rr r r r test_controlnamess zTestAscii.test_controlnamescsfdd}tdD]Tttg}|tjj||tjj||tjj||tjj||tjj | |tjj | |tjj dk|tjj dk|tjj dk|tjjdkpdk|tjjdv|tjjdkodkn|tjjdko>dkn|tjjtjv|tjjtjvqd d dtjtjd fD]tjtjtjtjtj tj tj tj tjtjtjtjtjtjqtj d dS) NcsRj|d0||||Wdn1sD0YdS)N)rpr)rr_)rZexpectedr~rrr r checksz$TestAscii.test_ctypes..checkrArr@z ~rrPrV)rchrrrrisalnumisalphaisdigitislowerisspaceisupperisasciiZismetaZisctrlZiscntrlZisblankZisgraphZisprintZispunctstring punctuationZisxdigit hexdigitsr* maxunicoder)rrbr rr test_ctypessF $$zTestAscii.test_ctypescCsDtjj}||dd||dd||tdtddS)NÁrr)rrr_ro)rrr r r test_asciiszTestAscii.test_asciicCsTtjj}||dd||dd||dd||tdtddS)NJr@)rrctrlr_ro)rrr r r test_ctrls zTestAscii.test_ctrlcCs@tjj}||dd||dd||tdddS)NrŠrrr)rraltr_ro)rrr r r test_altszTestAscii.test_altcCstjj}||dd||dd||dd||dd||dd||dd||d d ||tdd||tdd||d d ||d d||td d ||td ddS)Nrjrrr z^?rz^Jrz^@rz!^Jrz!A)rrrr_ro)rrr r r rszTestAscii.test_unctrlN) rUrVrrrrrrrr r r r rs -rc CsTgd}|\}}t|d|D]*\}}||d|d|||dkq$dS)N) rzdolor sit amet,Z consecteturzadipiscing elit,zsed do eiusmodztempor incididuntz ut labore etz dolore magnazaliqua.rrV)ra enumerater)rctextZmaxyZmaxxrliner r r r s r__main__)rrxr6rr*r>rZ test.supportrrrrrZ curses.panel ImportErrorr rr environgetr)r,rrnZTestCaser#rrrrUmainr r r r sP     d X