a 4êdg¸ã@s8ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z edƒe dƒZ e dƒe dƒz ddl Z WneyŽYn0dd„Zdd „Zd d „Zej d ¡Zd Ze e pÈedkde¡e ejdkd¡Gdd„dejƒƒƒZGdd„dejƒZGdd„dejƒZdd„Zedkr4e ¡dS)éN)ÚrequiresÚ import_moduleÚverboseÚ SaveSignalsÚcursesz curses.asciizcurses.textpadcCst tt|ƒd|¡S)Nzrequires curses.%s)ÚunittestZ skipUnlessÚhasattrr©Úname©r ú,/usr/local/lib/python3.9/test/test_curses.pyÚrequires_curses_funcs ÿr cs‡fdd„}|S)Ncst ˆ¡‡‡fdd„ƒ}|S)Ncs4t|jˆƒst dˆ¡‚ˆ|g|¢Ri|¤ŽdS)Nzrequires curses.window.%s)rÚstdscrrZSkipTest©ÚselfÚargsÚkwargs)r Útestr r Úwrappeds z:requires_curses_window_meth..deco..wrapped©Ú functoolsÚwraps©rrr ©rr Údecosz)requires_curses_window_meth..decor )r rr r r Úrequires_curses_window_meths rcst ˆ¡‡fdd„ƒ}|S)Ncs4t ¡s| d¡t ¡ˆ|g|¢Ri|¤ŽdS)Núrequires colors support)rÚ has_colorsÚskipTestÚ start_colorrrr r r)s z requires_colors..wrappedrrr rr Úrequires_colors(sr ZTERMiÿÚunknownz*$TERM=%r, calling initscr() may cause exitÚcygwinz!cygwin's curses mostly just hangsc@seZdZedd„ƒZdd„Zedƒdd„ƒZedƒd d „ƒZd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zed%ƒd&d'„ƒZd(d)„Zd*d+„Zd,d-„Zed.ƒd/d0„ƒZed1ƒd2d3„ƒZd4d5„Zd6d7„Zd8d9„Zd:d;„Z dd?„Z"d@dA„Z#dBdC„Z$dDdE„Z%edFƒdGdH„ƒZ&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*edQƒdRdS„ƒZ+edTƒdUdV„ƒZ,edWƒdXdY„ƒZ-dZd[„Z.d\d]„Z/d^d_„Z0d`da„Z1e2dbdc„ƒZ3e2ddde„ƒZ4dfdg„Z5e2dhdi„ƒZ6e2djdk„ƒZ7e2dldm„ƒZ8ednƒe2dodp„ƒƒZ9dqdr„Z:edsƒdtdu„ƒZ;edvƒdwdx„ƒZedyƒd~d„ƒZ?edyƒd€d„ƒZ@ed‚ƒdƒd„„ƒZAed…ƒd†d‡„ƒZBedˆƒd‰dŠ„ƒZCd‹dŒ„ZDddŽ„ZEedƒeF GeHeIdd‘ƒd’kd“¡d”d•„ƒƒZJd–d—„ZKd˜d™„ZLed.ƒdšd›„ƒZMdœS)Ú TestCursescCs4trtdt›tjddtj ¡}tj|ddS)NzTERM=T©ÚfileÚflush)Úfd) rÚprintÚtermÚsysÚstderrÚ __stdout__ÚfilenorZ setupterm)ÚclsÚ stdout_fdr r r Ú setUpClass;s zTestCurses.setUpClasscCsTd|_tj|_tj ¡}tj ¡sÀt |¡}| tj|¡| tj ||¡tj  ¡rdtj }tj |_nLzt dddd}Wn&t yœt jddd}d|_Yn0| |j¡d|_t  | ¡|¡tƒ|_|j ¡| |jj¡tr|jdurtj ¡tj ¡t|jddt ¡|_|jrFt ¡| tj¡| tj¡|j ¡dS) NTz/dev/ttyÚwbr)Ú buffering)Úmoder2Fr$)Úisattyr*r,Úoutputr-ÚosÚdupÚ addCleanupÚcloseÚdup2Ú __stderr__ÚopenÚOSErrorÚtempfileÚ TemporaryFilerZ save_signalsÚsaveZrestorerr+r&Ústdoutr(rZinitscrrZsavettyÚendwinZresettyÚerase)rr/Zdup_fdÚtmpr r r ÚsetUpDs>              zTestCurses.setUpÚfiltercCs t ¡dS©N)rrF©rr r r Ú test_filtertszTestCurses.test_filterÚuse_envcCst d¡t d¡dS)NFT)rrJrHr r r Ú test_use_envzs zTestCurses.test_use_envcCsŒt dd¡}| | ¡d¡| | ¡d¡| | ¡d¡t dddd¡}| | ¡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¡| | ¡d¡dS)Néé ©rr©éÿÿÿÿrP)rLrMéé)rRrL)rMrQéé)rSrT©érR)é é )éé)rRrS)rZé éé )r\r]rrV)rrV)rRrV) rÚnewwinÚ assertEqualÚgetbegyxZgetparyxÚgetmaxyxÚsubwinZderwinZmvwinZmvderwin)rÚwinÚwin2Zwin3r r r Útest_create_windowssT      zTestCurses.test_create_windowscCsj|j}| dddd¡}| dd¡| dd¡| | ¡d¡| | ¡d¡| ¡| | ¡d ¡dS) NrMrQrRrLrVrYrU)rRrY)rYrW)rrbÚmover_ÚgetyxZ cursyncup)rrrcr r r Útest_move_cursorµs  zTestCurses.test_move_cursorcCsÔ|j}| ¡| | ¡d¡| ¡| | ¡d¡| ¡| | ¡d¡| ¡| | ¡d¡| ¡| | ¡d¡| dd¡| | d¡d¡| | d¡d¡| | ¡d¡| ddd¡| | d¡d¡| dddd¡}| ddd d ¡}| ¡| ¡|  ¡| | ¡d¡| | ¡d¡| ¡| ¡| ¡|  ¡| | ¡d¡t |d ƒrÐt j  d ¡sÐ| ¡| ¡d D]:}| |¡| d¡| | ¡|¡| | ¡|¡q”dS)NFTrLrRr\rVrMrQrSrTÚsyncokZsunos)FTÚa)rÚrefreshÚassertIsÚ is_wintouchedZtouchwinZ untouchwinZ touchlineZis_linetouchedrbZsyncupZsyncdownrr*ÚplatformÚ startswithriÚaddch)rrrcrdrir r r Útest_refresh_controlÀsJ   zTestCurses.test_refresh_controlc Csp|j}|j}| ¡| dd¡| d¡| d¡| d¡d}z| |¡WnRtyr| t|j|¡Yn2ty¢| |¡}|  t |ƒdt |ƒ¡Yn0| dt j ¡| ddd¡| dddt j ¡| | ¡d ¡| ¡| dd¡| d¡| d¡| d¡| ttf¡| d¡Wdƒn1sD0Y| dt j ¡| | ¡d ¡dS) NrÚAóAéAõ€rVrRrSTF)rÚencodingrkrfrpÚUnicodeEncodeErrorÚ assertRaisesÚencodeÚ OverflowErrorZassertNotEqualÚlenÚreprrÚA_BOLDrlrmZechochar)rrrvÚcÚencodedr r r Útest_output_characterðs8           *z TestCurses.test_output_characterc Cs–|j}|j}|j|jfD]¨}| |j¡ˆ| dd¡|dƒ|dƒd}z ||ƒWn"tyx| t|j |¡Yn0|dt j ƒ|dddƒ|dddt j ƒWdƒq1s¶0Yq|j |j fD]Â}| |j¡ | dd¡|ddƒ|d dƒd }z||dƒWn$ty6| t|j |¡Yn0|dd ƒ|ddt j ƒ|ddddƒ|ddddt j ƒWdƒqÎ1s†0YqÎdS) NrZabcdsabcduàßçđrVrRrSZ1234s1234u١٢٣٤rL)rrvÚaddstrÚinsstrÚsubTestÚ __qualname__rfrwrxryrr}ÚaddnstrÚinsnstr)rrrvÚfuncÚsr 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|d¡Wdƒq 1st0Yq dS)N)zasa)ÚargrV)rrƒrxÚ ValueErrorrr…r‚r†)rrrŠr r r Ú&test_output_string_embedded_null_chars3sz1TestCurses.test_output_string_embedded_null_charscCsì|j}| dddtj¡| dd¡| | ¡dtjB¡| | dd¡dtjB¡| dd¡| | ¡dd…d¡| | d¡dd…d ¡| | dd ¡dd …d ¡| | dd d ¡d ¡| t |jd ¡| t |jdd d ¡dS)NrrVZABCDrtrSéCr\s ABCD s ABrRrYsBCD éþÿÿÿ) rrrr}rfr_ÚinchÚinstrrxr‹©rrr r r Útest_read_from_window=s  z TestCurses.test_read_from_windowcCsºt dddd¡}dddd…D]}t |¡q| | dd¡d¡| | ¡d ¡| | dd ¡d ¡| | ¡d ¡| | ¡d ¡| | ¡d ¡| | ¡d¡| | ¡d¡dS)NrLr[rRzspam rPrSrVés)rSrVrYép)rSrYéaémrM)rr^Úungetchr_Zgetchrg©rrcr~r r r Ú test_getchMs zTestCurses.test_getchcCs0t dddd¡}t ¡| tj¡| t|jd¡| t|jddd¡dddd…D]}t |¡qV|  | ddd¡d ¡|  |  dd ¡d ¡|  | ddd ¡d ¡|  |  dd ¡d¡|  | dd¡d¡|  |  dd ¡d¡|  | d¡d¡|  |  dd ¡d¡|  | ¡d¡|  |  dd ¡d¡dS)NrLr[rRipþÿÿrSzLorem ipsum dolor sit amet rPrVsLors Lo rMsipsums Lo ipsum sdolors dolor ssis si dolor samets amet dolor ) rr^Úechor8Únoechorxr‹Zgetstrr—r_rr˜r r r Ú test_getstr\s"  zTestCurses.test_getstrcCsôt dddd¡}t|ƒ| dd¡| ¡| | dd¡ ¡d¡| | dd¡ ¡d¡| dd ¡| ¡| | dd¡ ¡d ¡| | dd¡ ¡d ¡|j |j fD]B}t|ƒ|ƒ| | dd¡ ¡d ¡| | dd¡ ¡d ¡q¬dS) NrLrQrRrrZsLorem iprVódolor sit amet,rSsLoró) rr^Ú lorem_ipsumrfZclrtoeolr_rÚrstripZclrtobotrCÚclear)rrcr‡r r r Ú test_clearrs  zTestCurses.test_clearcCst dddd¡}t|ƒ| dd¡| ¡| | dd¡d¡| dd¡| | dd¡d¡| dd¡| ¡| | dd¡d¡| | dd¡d ¡| | dd¡d ¡| | d d¡d ¡| | d d¡d¡| dd¡| ¡| | dd¡d¡| | dd¡d¡| | dd¡d ¡|  ¡t|ƒ| dd¡|  d¡| | dd¡d¡| | dd¡d¡| | dd¡d¡| | d d¡d¡|  ¡t|ƒ| dd¡|  d¡| | dd¡d¡| | dd¡d ¡| | dd¡d ¡| | d d¡d¡dS)NrLrQrRrsLoem ipsum rTsLoem ipum rVsconsectetur óadipiscing elitrSssed do eiusmod rYó sLorem ipsum rrŽ) rr^rŸrfZdelchr_rZdeletelnZinsertlnr¡Zinsdelln©rrcr r r Útest_insert_delete†sF        zTestCurses.test_insert_deletecCs°t dddd¡}t|ƒ| d¡| ¡| | dd¡d¡| d¡| | dd¡d¡| d¡| | dd¡d ¡| | dd¡d ¡| | d d¡d¡| d ¡dS) NrLrQrRTrrr£éýÿÿÿr¤rSF)rr^rŸÚscrollokZscrollr_rr¥r r r Ú test_scroll°s   zTestCurses.test_scrollcCsHt dddd¡}| tj¡| tj¡| tj¡| ¡| ¡dS)NrLrQrR)rr^Zattronr}ZattroffZattrsetZstandoutZstandendr¥r r r Útest_attributes¾s    zTestCurses.test_attributesÚchgatcCsòt dddd¡}| ddd¡| ddd¡| dd¡| tj¡| | dd ¡d ¡| | dd¡d tjB¡| | dd ¡d tjB¡| dd¡| dtj¡| | dd¡d¡| | dd¡dtjB¡| | dd¡dtjB¡| | dd¡d¡| ddtj ¡| | dd¡d¡| | dd¡dtj B¡| | dd ¡d tj B¡| ddd tj¡| | dd¡dtj B¡| | dd¡dtjB¡| | dd¡dtjB¡| | dd¡dtj B¡| | dd ¡d tj B¡dS)NrLrQrRrú Lorem ipsumrSzdolor sit ametrZrTr”r“éé rVéLéoéerYr–élérrMr•r]) rr^rrfr«ZA_BLINKr_rr}Z A_UNDERLINEr¥r r r Ú test_chgatÈs0   zTestCurses.test_chgatcCsŠt dddd¡}| ddd¡| | ¡d¡| d¡| | ¡d¡| d ¡| | ¡d ¡| d ¡| | ¡d ¡| d¡| | ¡d ¡| d tj¡| | ¡d tjB¡| | dd¡d¡| | dd¡d ¡| d¡|  d¡| | ¡d¡| | dd¡d¡| | dd¡d¡|  d tj¡| | ¡d tjB¡| | dd¡dtjB¡| | dd¡d tjB¡dS)NrLrQrRrr¬)rr®Ú_é_ó#é#rtr®ú#r¯) rr^rÚassertInZgetbkgdZbkgdsetr_Z A_REVERSErZbkgdr¥r r r Útest_backgroundçs0      zTestCurses.test_backgroundc Cs t dddd¡}t|ƒt dddd¡}tdƒD]}| |dd ¡q0| |¡| | dd¡d ¡| | d d¡d ¡| | d d¡d¡| | dd¡d¡| |¡| | dd¡d¡| | d d¡d¡| | d d¡d¡| | dd¡d¡| |d ddd dd¡| | dd¡d¡| | dd¡d¡| | dd¡d¡| |d ddd dd¡| | dd¡d¡| | dd¡d¡| | dd¡d¡dS)NrLérSrYrTér\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^rŸÚrangerZoverlayr_rZ overwrite)rZsrcwinZdstwinÚir r r Ú test_overlays.   zTestCurses.test_overlaycCs@t dddd¡}| ¡| dd¡| ¡| ¡t ¡dS)NrLrQrRrV)rr^Z noutrefreshZredrawlnZ redrawwinrkÚdoupdater¥r r r Ú test_refresh%s  zTestCurses.test_refreshÚresizecCsLt dddd¡}| dd¡| | ¡d¡| dd¡| | ¡d¡dS)NrLrQrRrYé)rYrÄ)rLrQ)rr^rÃr_rar¥r r r Ú test_resize-s   zTestCurses.test_resizeÚenclosecCs€t dddd¡}| | dd¡¡| | dd¡¡| | dd¡¡| | dd¡¡| | dd¡¡| | dd ¡¡dS) NrLrQrRrVrYr\érTrÄ)rr^Ú assertTruerÆÚ assertFalser¥r r r Ú test_enclose5szTestCurses.test_enclosecCsžt dddd¡}| ddd¡t ¡d}| |¡~| d¡t |¡}| |  ¡d¡| |  ¡d¡| |  dd¡d ¡Wdƒn1s0YdS) NrLr[rVrRr¬rrU)rLr[s Lorem ipsum) rr^rr>r?ZputwinÚseekZgetwinr_r`rar)rrcÚfr r r Ú test_putwin@s    zTestCurses.test_putwinc Cs$t dddd¡}| 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 ¡| |  dd¡d2tj B¡| |  dd¡d2tj B¡| |  d.d¡d0¡dS)3NrLrMrRú|ú!ú-rµú+ú\r¹ú/rs +--------\rVs | !rYs #________/ó|ó!ó-ó_ó+ó\r·ó/rtéBréDéEéFéGéHéIú:ú~rZs~~~~~~~~s : :ó:ó~rTs ----- é-rjrSóar•ú;é;)rr^Zborderr_rrxÚ TypeErrorÚboxrfZhliner}ZvlineZ A_STANDOUTrr¥r r r Útest_borders_and_linesLsr ÿ ÿ ÿ ÿ ÿ ÿ             z!TestCurses.test_borders_and_linescCsÀ| t d¡d¡| t d¡d¡| t d¡d¡| t d¡d¡| t d¡d¡| t d¡d¡| ttjd¡| ttjd ¡| ttjd ¡| ttjd ¡| ttjd ¡dS) Nrsrrrtó s^JÚ rMržsABÚZABì)r_rÚunctrlrxrêrzrHr r r Ú test_unctrl„szTestCurses.test_unctrlcCsT|js| d¡| t ¡d¡t ¡| t ¡d¡t ¡| t ¡d¡dS)Núrequires terminalFT)r4rrlrÚisendwinrBrÁrHr r r Ú test_endwin’s zTestCurses.test_endwincCs| t d¡t¡| t d¡d¡| t d¡d¡| t d¡t¡| t d¡d¡| t d¡d¡| t d¡ttdƒf¡|  t d¡¡|  t d¡¡t d¡}|durò| |t¡t  |d¡t  |d¡}| |t¡t  |¡t  d¡dS) NZhcÚcolsrPZcrrŽÚcudrRsabc ) ÚassertIsInstancerZ tigetflagÚintr_ZtigetnumÚtigetstrÚbytesÚtypeZ assertIsNoneZtparmZputp)rr÷Zcud_2r r r Ú test_terminfo›s"      zTestCurses.test_terminfocCsDt d¡t ¡t ¡| t ¡d¡t d¡t dd¡dS)NrVFédé2)rZ delay_outputZflushinprÁrlrôZnapmsZnewpadrHr r r Útest_misc_module_funcs³s   z!TestCurses.test_misc_module_funcscCs¬| t ¡t¡| t ¡t¡| t ¡t¡| t ¡t¡| t  ¡t¡| t  ¡t¡t  ¡}| |t¡|  t |ƒd¡t ¡}| |t¡|  t |ƒd¡dS©NrV)rørZtermnamerûZlongnameZbaudraterùZhas_icÚboolZhas_ilZ termattrsZkillcharr_r{Z erasechar)rr~r r r Útest_env_queries¾s  zTestCurses.test_env_queriescCs¼|j}| d¡| d¡| d¡| d¡| d¡| d¡t|dƒr`| d¡| d¡| d¡| d¡| d¡| d¡| dd¡t   ¡t   d¡t   d¡t   ¡dS)NTFÚimmedokrLrM) rZclearokZidcokZidlokrrZleaveokr¨Z setscrregrZnonlÚnlr‘r r r Útest_output_optionsÎs&                zTestCurses.test_output_optionscCs6|j}|jrht ¡t ¡t d¡t d¡t d¡t d¡t ¡t d¡t d¡t ¡t ¡t  ¡t  d¡t  d¡t  d¡t  d¡|  d¡|  d¡t  d¡t  d¡|  d¡|  d¡t ¡t d¡t d¡t ¡| d¡| d¡| d¡| d¡| d¡dS)NFTéÿrVrPrrL)rr4rZnocbreakZcbreakZ intrflushÚrawZnorawr›ršZ halfdelayZkeypadÚmetaZnodelayZ noqiflushZqiflushZ notimeoutÚtimeoutr‘r r r Útest_input_optionsìsB                      zTestCurses.test_input_optionsÚ typeaheadcCst tj ¡¡t d¡dS)NrP)rr r*Ú __stdin__r-rHr r r Útest_typeaheadszTestCurses.test_typeaheadcCs$|js| d¡t ¡t ¡dS)Nró)r4rrZ def_prog_modeZreset_prog_moderHr r r Útest_prog_modes zTestCurses.test_prog_modecCsVt d¡dust d¡dur&t ¡n,z t ¡WntjyP| d¡Yn0dS)NÚbelÚflashz beep() failed)rrúZbeepÚerrorrrHr r r Ú test_beep%s ÿ  zTestCurses.test_beepcCsVt d¡dust d¡dur&t ¡n,z t ¡WntjyP| d¡Yn0dS)Nrrzflash() failed)rrúrrrrHr r r Ú test_flash/s ÿ  zTestCurses.test_flashc CsPdD]F\}}t |¡dur&t |¡qzt |¡WqtjyHYq0qdS)N))rZcivis)rRZcvvis)rVZcnorm)rrúZcurs_setr)rZvisZcapr r r Ú test_curs_set9s  zTestCurses.test_curs_setÚ get_escdelaycCs<t ¡}| |t¡t d¡| t ¡d¡t |¡dS)Né)rrrørùZ set_escdelayr_)rZescdelayr r r Ú test_escdelayCs   zTestCurses.test_escdelayÚ get_tabsizecCs<t ¡}| |t¡t d¡| t ¡d¡t |¡dS)NrY)rrrørùZ set_tabsizer_)rÚtabsizer r r Ú test_tabsizeKs   zTestCurses.test_tabsizeÚgetsyxcCsDt ¡\}}| |t¡| |t¡t dd¡| t ¡d¡dS)NrYrL)rYrL)rrrørùZsetsyxr_)rÚyÚxr r r Ú test_getsyxSs     zTestCurses.test_getsyxcCsdS©N)lýÿÿÿllûÿÿÿlrðr rHr r r Ú bad_colors[szTestCurses.bad_colorscCsdSr r rHr r r Ú bad_pairs^szTestCurses.bad_pairscCs$| t ¡t¡| t ¡t¡dSrG)rørrrÚcan_change_colorrHr r r Útest_has_colorsaszTestCurses.test_has_colorscCsNt ¡s| d¡t ¡trJtdtj›tjdtdtj ›tjddS)Nrz COLORS = )r%zCOLOR_PAIRS = ) rrrrrr(ÚCOLORSr*r+Ú COLOR_PAIRSrHr r r Útest_start_colores  zTestCurses.test_start_colorcCsŠ| t tj¡d¡t d¡ttjdtƒ}t |¡| ¡D]}| t tj|¡q@tjtkrt| tj tjtj¡| tj tjd¡dS)N©rrrrrVrP) r_rÚ color_contentÚ COLOR_BLACKÚminr%Ú SHORT_MAXr!rxrzr)rÚmaxcolorÚcolorr r r Útest_color_contentms    zTestCurses.test_color_contentc CsÌt ¡s| d¡t d¡}ztjdg|¢RŽWntjyP| d¡Yn0|jtjdg|¢RŽt dddd¡| t d¡d¡t dddd¡| t d¡d¡ttj dt ƒ}t |¡}tj|g|¢RŽ|jtj|g|¢RŽt |ddd¡| t |¡d ¡|  ¡D]}|  t tj|ddd¡qtj t kr\|  tjtjtj ddd¡|  tjtjd ddd¡d 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)rÚoldr-r.Úcompr r r Útest_init_colorzs6     zTestCurses.test_init_colorcCs ttjtƒSrG)r+rr&r,rHr r r Úget_pair_limit›szTestCurses.get_pair_limitcCs€ttdƒs$| t d¡tjtjf¡t d¡| ¡d}|dkrLt |¡| ¡D]}| t tj|¡qT| tj tjd¡dS)NÚuse_default_colorsrrVrP) rrr_Ú pair_contentÚ COLOR_WHITEr*r5r"rxrzr)rÚmaxpairÚpairr r r Útest_pair_contentžs   ÿ    zTestCurses.test_pair_contentcCsŽt d¡}tjdg|¢RŽ|jtjdg|¢RŽt ddd¡| t d¡d¡ttjdtƒ}t d|d¡| t d¡|df¡t dd|¡| t d¡d|f¡| ¡d}|dkrÞt |dd¡| t |¡d¡|  ¡D]}|  t tj|dd¡qæ|  tj tjddd¡|  ¡D].}|  t tjd|d¡|  t tjdd|¡qtjtkrŠ|  tj tjdtjd¡|  tj tjddtj¡dS)NrVrrNrP)rr7Z init_pairr8r_r+r%r,r5r"rxrzrr!)rr2r-r9r:r.r r r Útest_init_pair¬s.     zTestCurses.test_init_paircCshdD]:}t |¡}| t |¡||¡| t |tjB¡|¡q| t d¡d¡| t d¡d¡dS)N)rrVrr)rZ color_pairr_Z pair_numberr})rr:Úattrr r r Útest_color_attrsÈs  zTestCurses.test_color_attrsr6cCsft d¡}z t ¡Wntjy4| d¡Yn0| t d¡d¡| |tjtjfddg¡dS)Nrz1cannot change color (use_default_colors() failed)rOrN) rr7r6rrr_rºr8r*)rr2r r r Útest_use_default_colorsÑs  z"TestCurses.test_use_default_colorscCsn| t d¡d¡| t d¡d¡| t d¡d¡| t d¡d¡| ttjd ¡| t d ¡t¡dS) NrtrsrXs^Més^?rs^@rPé)r_rZkeynamerxr‹rørûrHr r r Ú test_keynameÜs zTestCurses.test_keynameÚhas_keycCst d¡dS)NrX)rrCrHr r r Ú test_has_keyåszTestCurses.test_has_keyÚgetmousecCsLt tj¡\}}|dkr"| d¡t d¡t ddddtj¡t ¡}dS)Nrzmouse stuff not availablerM)rZ mousemaskZBUTTON1_PRESSEDrZ mouseintervalZ ungetmouserE)rZ availmaskZoldmaskÚmr r r Ú test_getmouseés   zTestCurses.test_getmouseÚpanelcCsVt dd¡}tj |¡}|jtjjdd| ¡Wdƒn1sH0YdS)NrMz!userptr should fail since not set)Úmsg)rr^rHÚ new_panelrxrZuserptr)rÚwÚpr r r Útest_userptr_without_setós    ÿz#TestCurses.test_userptr_without_setcCsbt dd¡}tj |¡}tƒ}t |¡}tdƒD]}| |¡q0| d¡|  t |¡|d¡dS)NrMrþzset_userptr leaked references) rr^rHrJÚobjectr*Ú getrefcountr¾Ú set_userptrr_)rrKrLÚobjZnrefsr¿r r r Útest_userptr_memory_leaküs      ÿz#TestCurses.test_userptr_memory_leakcsDt dd¡}tj |¡‰G‡fdd„dƒ}ˆ |ƒ¡ˆ d¡dS)NrMcseZdZ‡fdd„ZdS)z+TestCurses.test_userptr_segfault..Acsˆ d¡dSrG)rPrH©rHr r Ú__del__sz3TestCurses.test_userptr_segfault..A.__del__N)Ú__name__Ú __module__r„rTr rSr r rr srr)rr^rHrJrP)rrKrrr rSr Útest_userptr_segfault s    z TestCurses.test_userptr_segfaultcCs,t dd¡}tj |¡}| tt|ƒ¡dS)NrM)rr^rHrJrxrêrü)rrKrHr r r Útest_new_curses_panels  z TestCurses.test_new_curses_panelÚis_term_resizedcCsBtjtj}}| t ||¡d¡| t |d|d¡d¡dS)NFrVT)rÚLINESÚCOLSrlrY©rÚlinesrör r r Útest_is_term_resizedszTestCurses.test_is_term_resizedÚ resize_termcCszt ¡tjtj}}|d}|d}t ||¡| tj|¡| tj|¡t ||¡| tj|¡| tj|¡dSr)rÚupdate_lines_colsrZr[r_r_©rr]röZ new_linesZnew_colsr r r Útest_resize_terms  zTestCurses.test_resize_termÚ resizetermcCszt ¡tjtj}}|d}|d}t ||¡| tj|¡| tj|¡t ||¡| tj|¡| tj|¡dSr)rr`rZr[rcr_rar r r Útest_resizeterm-s  zTestCurses.test_resizetermcCsXt d¡| |j ¡d¡t d¡| |j ¡d¡t d¡| |j ¡d¡dS)NrsrrÚBrÚC)rr—r_rÚgetkeyrHr r r Ú test_ungetch;s    zTestCurses.test_ungetchcCst d¡|j ¡dS)Ni)rr—rrgrHr r r Útest_issue6243Cs zTestCurses.test_issue6243Ú unget_wchÚncurses_version)éc)rLrZz.unget_wch is broken in ncurses 5.7 and earlierc CsÄ|j}|j}dD]®}z| |¡Wnty8YqYn0zt |¡Wn:ty‚}z"| d||j|f¡WYd}~n d}~00| ¡}|  ||¡t |ƒ}t |¡| ¡}|  ||¡qdS)N)rjõéruuô¿¿z)unget_wch(%a) failed with encoding %s: %s) rrvryrwrrjÚ ExceptionZfailZget_wchr_Úord)rrrvÚchÚerrÚreadÚcoder r r Útest_unget_wchGs&   ÿ  zTestCurses.test_unget_wchcCs†|j}ddl}|j}| |¡| t¡d|_Wdƒn1sD0Y||_| t¡|`Wdƒn1sx0YdS)NrrM)rÚcodecsrvÚlookuprxrê)rrrurvr r r Ú test_encoding_s  $ zTestCurses.test_encodingcCsV|j}zt |j¡}| |¡Wnty2Yn0|jj d¡d}| d|¡dS)Nrîrz[y, x,]) rÚinspectÚ signaturerprÉr‹Ú__doc__Úsplitrº)rrryZhuman_readable_signaturer r r Útest_issue21088js    zTestCurses.test_issue21088cCsNt dddd¡}tjj|dd}| ¡\}}| |d|d¡| d¡dS)NrLrQrRT)Z insert_moderj)rr^ZtextpadZTextboxrarÃZ_insert_printable_char)rrcrër]rör r r Útest_issue13051†s  zTestCurses.test_issue13051N)NrUrVr„Ú classmethodr0rEr rIrKrerhrqr€r‰rŒr’r™rœr¢r¦r©rªrr´r»rÀrÂrÅrÊrÍrìròrõrýrrrr rrrrrrrrr!r"r$r'r r/r4r5r;r<r>r?rBrDrGrMrRrWrXr^rbrdrhrirÚskipIfÚgetattrrrtrwr|r}r r r r r#5sÄ 0  4 0!" *  !   8  .                       ÿ  r#c@s,eZdZedƒdd„ƒZedƒdd„ƒZdS)Ú MiscTestsr`cCsJt ¡tjtj}}dt_t_t ¡| tj|¡| tj|¡dS)Nr)rr`rZr[r_r\r r r Útest_update_lines_cols’s  z MiscTests.test_update_lines_colsrkcCstj}trtdtj›dd| |dd…t¡| t|ƒd¡| |dt¡| |dt¡| |dt¡| |j t¡| |j t¡| |j t¡| |d|j ¡| |d|j ¡| |d|j ¡|  |j d¡|  |j d¡|  |j d¡dS)Nzncurses_version = T)r&rSrrVrR) rrkrr(røÚtupler_r{rùÚmajorÚminorZpatchZassertGreaterEqual)rÚvr r r Útest_ncurses_version›s"zMiscTests.test_ncurses_versionN)rUrVr„r r‚r‡r r r r rs rc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú TestAsciicCs&tjjD]}| ttj|ƒ|¡qdSrG)rÚasciiZ controlnamesrÈr)rr r r r Útest_controlnames²s zTestAscii.test_controlnamescs¢‡‡‡fdd„}tdƒD]T‰tˆƒ‰tˆgƒ}|tjj| ¡ƒ|tjj| ¡ƒ|tjj| ¡ƒ|tjj| ¡ƒ|tjj |  ¡ƒ|tjj |  ¡ƒ|tjj ˆdkƒ|tjj ˆdkƒ|tjj ˆdkƒ|tjjˆdkpèˆdkƒ|tjjˆdvƒ|tjjdˆkodknƒ|tjjdˆko>dknƒ|tjjˆtjvƒ|tjjˆtjvƒqd d dtjtjd fD]‰ˆ tj ˆ¡¡ˆ tj ˆ¡¡ˆ tj ˆ¡¡ˆ tj ˆ¡¡ˆ tj  ˆ¡¡ˆ tj  ˆ¡¡ˆ tj  ˆ¡¡ˆ tj  ˆ¡¡ˆ tj ˆ¡¡ˆ tj ˆ¡¡ˆ tj ˆ¡¡ˆ tj ˆ¡¡ˆ tj ˆ¡¡ˆ tj ˆ¡¡q†ˆ tj  d ¡¡dS) NcsRˆjˆ|d0ˆ |ˆƒ|¡ˆ |ˆƒ|¡Wdƒn1sD0YdS)N)rpr‡)rƒr_)r‡Zexpected©r~r¿rr r Úcheck·sz$TestAscii.test_ctypes..checkrAé€r®r@z é~rŽrPrV)r¾Úchrrûrr‰ÚisalnumÚisalphaÚisdigitÚislowerÚisspaceÚisupperÚisasciiZismetaZisctrlZiscntrlZisblankZisgraphZisprintZispunctÚstringÚ punctuationZisxdigitÚ hexdigitsr*Ú maxunicoderÉ)rrŒÚbr r‹r Ú test_ctypes¶sF $$zTestAscii.test_ctypescCsDtjj}| |dƒd¡| |dƒd¡| |tdƒƒtdƒ¡dS)NõÃrr)rr‰r_ro)rr‰r r r Ú test_asciiãszTestAscii.test_asciicCsTtjj}| |dƒd¡| |dƒd¡| |dƒd¡| |tdƒƒtdƒ¡dS)NÚJrîú@ú)rr‰Úctrlr_ro)rr¢r r r Ú test_ctrlés zTestAscii.test_ctrlcCs@tjj}| |dƒd¡| |dƒd¡| |tdƒƒd¡dS)NrîõŠrrréÁ)rr‰Úaltr_ro)rr¦r r r Útest_altðszTestAscii.test_altcCsìtjj}| |dƒd¡| |dƒd¡| |dƒd¡| |dƒd¡| |dƒd¡| |dƒd¡| |d ƒd ¡| |tdƒƒd¡| |tdƒƒd¡| |d ƒd ¡| |d ƒd¡| |td ƒƒd ¡| |td ƒƒd¡dS)Nrjrrrèú úz^?rîz^Jr¡z^@r¤z!^Jrz!A)rr‰rñr_ro)rrñr r r ròöszTestAscii.test_unctrlN) rUrVr„rŠrœržr£r§ròr r r r rˆ°s -rˆc CsTgd¢}| ¡\}}t|d|…ƒD]*\}}| |d|d|||dk…¡q$dS)N) r¬zdolor sit amet,Z consecteturzadipiscing elit,zsed do eiusmodztempor incididuntz ut labore etz dolore magnazaliqua.rrV)raÚ enumerater)rcÚtextZmaxyZmaxxrÚliner r r rŸs rŸÚ__main__)rrxr6r—r*r>rZ test.supportrrrrrZ curses.panelÚ ImportErrorr rr ÚenvironÚgetr)r,rrnZTestCaser#rrˆrŸrUÚmainr r r r ÚsP    ÿ ÿ_ X